Programación General => C/C++ => Mensaje iniciado por: ferrarista en Lunes 2 de Marzo de 2009, 19:22
Título: Necesito consejos, gracias.
Publicado por: ferrarista en Lunes 2 de Marzo de 2009, 19:22
Muy buenas y saludos cordiales.
Ando un poco liado con dos programas y me gustaría saber en que me estoy equivocando. Os agradecería vuestra ayuda.
PRIMERO: Genera 100 numeros aleatorios entre 0 y 10 y almacenalos en un vector. Determina a continuacion cual es el numero que aparece mas veces.
Como puedo hacer para que haga la busqueda dentro del vector, cuando lo hago no me hace la busqueda en los cien numeros como mucho me la hace en 60. Lo segundo es que el numero mayor da siempre lo mismo.
#include <stdio.h> #include <stdlib.h> #include <time.h> int num_encontrado(int vector[100]); int mayor(int vector[100]); int main() { int vector[100]; int i,n,pos=0,numero; int suma,mayor; //Ponemos una semilla srand(time(NULL)); //generamos los numeros aleatorios entre 0 y 10 n=1+rand()%11; for (i=0;i<100;i++){ vector=rand()%11; printf("%d-> Numero aleatorio: %d:n",++pos,vector); } for (i=0; i<11; i++){ vector=rand()*100 / RAND_MAX; suma=suma+vector; printf("nLa frecuencia del numero %d es %d ",i,vector); } mayor=vector; printf("nnEl numero que mas se ha repetido es %d",i,vector); } int num_encontrado(int vector[100]) /*no genera los 100 numeros*/ { //abre funcion int i,n,suma=0; for (i=0; i<100; i++){ suma=suma+vector; return (suma); //cierra la funcion } } int mayor(int vector[100]) /*no muestra el numero mayor siempre da 11*/ { int mayor=0,i,n,suma; for(i=0;i<100;i++){ if (vector>mayor) suma+=mayor; } }
SEGUNDO: almacene en un vector los 50 primeros numeros de Fibonacci. Una vez calculados, el programa pedira al usuario que introduzca un numero y dira si es o no es uno de los 50 primeros numeros de Fibonacci.*/
Se me queda colgado al 42, supongo que es porque he declarado la secuencia como un int y no es suficiente. Lo segundo es como hago para que busque dentro de la secuencia si el numero entero introducido está dentro de los 50 primeros numeros.
Gracias
#include <stdio.h> int fibonacci(int n); /*funcion que calcula la sucesion de fibonacci*/ main( ) { int i,n; int Pos=0; /*Escribimos el numero entero*/ do{ printf("Escribe un numero entero: "); scanf("%d",&n); }while ((n<0)); printf("***********************************************************n"); printf("* LA SUCESION DE FIBONACCI *n"); printf("***********************************************************n"); /*comienza el bucle que calcula la sucesion de fibonacci*/ for (i=1;i<=n;i++){ if (i !=0) printf("Posicion:%d Numero: %d",++Pos,fibonacci(i)); printf("n"); }
} int fibonacci(int n) { if (n<=1)return n; return fibonacci(n-2)+fibonacci(n-1); }
Título: Re: Necesito consejos, gracias.
Publicado por: AnimaSubtilis en Lunes 2 de Marzo de 2009, 19:50
Mire para encontrar el numero que mas veces se repite simplemente utiliza un for anidado algo asi:
Código: C++
int val,ct=0,ct1;
for(i=0;i<100;i++)
{
ct1=0;
for(j=0;j<100;j++)
{
if(vec[j]==vec[i])
ct1++;
}
if(ct1>ct)
{
val=vec[i];
ct=ct1;
}
}
mejor dicho eso es todo..... lo mete en una funcion y estubo...
int num_encontrado(int vector[100]) .....????
no entiendo que hace con esa funcion.... solo entra una vez revice el return......
la de el numero mayor esta mal diseñada.....
Código: C++
int mayor(int vector[100])
{
int mayor=0,i,n,suma;
for(i=0;i<100;i++){
if(vector[i]>mayor)
mayor=vector[i];
}
return mayor;
}
asi seria la funcion correcta....
espero que con eso le ayude en algo porque no tengo mas tiempo.....taluego...
Título: Re: Necesito consejos, gracias.
Publicado por: Geo en Martes 3 de Marzo de 2009, 06:35
Por favor utiliza las etiquetas [code] para escribir código.
El código que has mostrado tiene varios errores, pero no son complicados, muchos son de concepto:
el número mayor no se calcula haciendo sumas,
para el número con mayor frecuencia ya te lo resolvieron (hay otras formas),
si vas a calcular 50 números de Fibonacci, sería bueno que tu ciclo for contara 50 números ¿no?
puedes calcular primero los números y luego pedir al usuario que ingrese el que evaluarás,
en un vector de 50 posiciones guardas los números de la serie de Fibonacci, el usuario ingresa un número, recorres el vector buscándolo, si llegas al final y no lo encontraste, el número ingresado no corresponde a uno de los 50 primeros números de la serie.
Recomendación: intenta un poco más para resolverlos, pregunta por dudas un tanto más específicas, aquí no se hacen tareas (o no se deberían hacer).
Título: Re: Necesito consejos, gracias.
Publicado por: ferrarista en Martes 3 de Marzo de 2009, 07:58
Gracias por las respuestas. Intento lo que me habeis puesto y ya os comentaré.