• Sábado 14 de Diciembre de 2024, 23:25

Autor Tema:  Necesito consejos, gracias.  (Leído 1716 veces)

ferrarista

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Necesito consejos, gracias.
« en: Lunes 2 de Marzo de 2009, 19:22 »
0
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);
}

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: Necesito consejos, gracias.
« Respuesta #1 en: Lunes 2 de Marzo de 2009, 19:50 »
0
Mire para encontrar el numero que mas veces se repite simplemente utiliza un for anidado algo asi:

Código: C++
  1.  
  2. int val,ct=0,ct1;
  3. for(i=0;i<100;i++)
  4. {
  5.  ct1=0;
  6.  for(j=0;j<100;j++)
  7.  {
  8.    if(vec[j]==vec[i])
  9.     ct1++;
  10.  }
  11.  if(ct1>ct)
  12.  {
  13.   val=vec[i];
  14.   ct=ct1;
  15.  }
  16. }
  17.  
  18.  

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++
  1.  
  2.  
  3.  int mayor(int vector[100])
  4. {
  5. int mayor=0,i,n,suma;
  6. for(i=0;i<100;i++){
  7. if (vector[i]>mayor)
  8.  mayor=vector[i];
  9. }
  10. return mayor;
  11. }
  12.  
  13.  

asi seria la funcion correcta....

espero que con eso le ayude en algo porque no tengo mas tiempo.....taluego...
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Necesito consejos, gracias.
« Respuesta #2 en: Martes 3 de Marzo de 2009, 06:35 »
0
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).
« última modificación: Miércoles 4 de Marzo de 2009, 05:58 por Geo »
La imaginación es el límite.
Hardware & Software | Mexchip

ferrarista

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Necesito consejos, gracias.
« Respuesta #3 en: Martes 3 de Marzo de 2009, 07:58 »
0
Gracias por las respuestas. Intento lo que me habeis puesto y ya os comentaré.


Saludos