Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Eva93 en 30 Agosto 2013, 12:22 pm



Título: Error en el programa
Publicado por: Eva93 en 30 Agosto 2013, 12:22 pm
Código
  1. #include <stdio.h>
  2. #define DIM 100
  3.  
  4.  
  5. int maximo (int v[], int n);
  6. int minimo (int v[], int n);
  7.  
  8.  
  9. int main()
  10. {
  11.  double v[DIM];
  12.  int numeroValores, i;
  13.  
  14.  printf("Introduzca el número de valores a calcular:\n");
  15.  scanf("%d", &numeroValores);
  16.  printf("\n");
  17.  printf("Introduce los %d valores numéricos:\n", numeroValores);
  18.  for (i = 0; i < numeroValores; i++)
  19.  {
  20.    printf("Valor %d: ", i + 1);
  21. scanf("%lf", &v[i]);
  22.  }
  23.  
  24.  printf("maximo= %5.0lf \n" maximo (v, numeroValores));
  25.  printf("minimo= %5.0lf \n" minimo (v, numeroValores));
  26.  
  27. }
  28.  
  29.  


Estoy haciendo un programa en C para encontrar el maximo y el minimo valor dentro de una matriz, pero al compilarlo me pone que el máximo y el minimo siempre es 0, creo que el error esta en los printf antes de las funciones.

Espero que encuentren el error, gracias de antemano ^^


Título: Re: Error en el programa
Publicado por: do-while en 30 Agosto 2013, 12:47 pm
¡Buenas!

Tienes los prototipos de las funciones, pero te falta implementarlas...

¡Saludos!


Título: Re: Error en el programa
Publicado por: Eva93 en 30 Agosto 2013, 13:21 pm
¡Buenas!

Tienes los prototipos de las funciones, pero te falta implementarlas...

¡Saludos!

Perdon tuve un problema de copypaste y no copie el programa entero >.<

Código
  1. #include <stdio.h>
  2. #define DIM 100
  3.  
  4.  
  5. int maximo (int v[], int n);
  6. int minimo (int v[], int n);
  7.  
  8.  
  9. int main()
  10. {
  11.  double v[DIM];
  12.  int numeroValores, i;
  13.  
  14.  printf("Introduzca el número de valores a calcular:\n");
  15.  scanf("%d", &numeroValores);
  16.  printf("\n");
  17.  printf("Introduce los %d valores numéricos:\n", numeroValores);
  18.  for (i = 0; i < numeroValores; i++)
  19.  {
  20.    printf("Valor %d: ", i + 1);
  21. scanf("%lf", &v[i]);
  22.  }
  23.  
  24.  printf("maximo= %5.0lf \n" maximo (v, numeroValores));
  25.  printf("minimo= %5.0lf \n" minimo (v, numeroValores));
  26.  
  27. }
  28.  
  29.  
  30.  
  31.  
  32. int minimo (int v[], int n)
  33. {
  34.  int i;
  35.  double min;
  36.  
  37.  min = v[0];
  38.  for (i = 1; i < n; i++)
  39.    if (v[i] < min)
  40.  min = v[i];
  41.  return (min);
  42. }
  43.  
  44. int maximo (int v[], int n)
  45. {
  46.  int i;
  47.  double max;
  48.  
  49.  max = v[0];
  50.  for (i = 1; i < n; i++)
  51.    if (v[i] > max)
  52.  max = v[i];
  53.  return (max);
  54. }
  55.  


Título: Re: Error en el programa
Publicado por: do-while en 30 Agosto 2013, 13:43 pm
¡Buenas!

Lo mas gordo que se ve, y por esto no debería de compilar, es:

1: Dices que máximo y mínimo van a recibir vectores de enteros, pero les estás pasando un vector de double.

2: Dices que las dos funciones devuelven un valor entero, pero en printf estás utilizando el especificador de conversión de double.

3: En los dos últimos printf no has puesto la coma para separar los argumentos.

4: No se si me he dejado algo.  :P

Cambia eso y nos cuentas.

¡Saludos!

PD: Vaya tirón de orejas que te iba a dar Angel Francés si te vieses haciendo esto... (o igual es Ricardo el que te da la asignatura).


Título: Re: Error en el programa
Publicado por: Eva93 en 30 Agosto 2013, 18:48 pm
"creo" que ya he arreglado lo que has dicho, ya no me saltan errores ni recomendaciones pero... a la hora de mostrarlo por pantalla me sigue saliendo max=0
min= 0
ahora realmente si que estoy perdida.

dejo la correccion:

Código
  1. #include <stdio.h>
  2. #define DIM 100
  3.  
  4.  
  5. int maximo (int v[], int n);
  6. int minimo (int v[], int n);
  7.  
  8.  
  9. int main()
  10. {
  11.  int v[DIM];
  12.  int numeroValores, i;
  13.  
  14.  printf("Introduzca el número de valores a calcular:\n");
  15.  scanf("%d", &numeroValores);
  16.  printf("\n");
  17.  printf("Introduce los %d valores numéricos:\n", numeroValores);
  18.  for (i = 0; i < numeroValores; i++)
  19.  {
  20.    printf("Valor %d: ", i + 1);
  21. scanf("%lf", &v[i]);
  22.  }
  23.  
  24.  printf("maximo= %5.0lf \n" , maximo (v, numeroValores));
  25.  printf("minimo= %5.0lf \n" ,  minimo (v, numeroValores));
  26.  
  27. }
  28.  
  29.  
  30.  
  31.  
  32. int minimo (int v[], int n)
  33. {
  34.  int i;
  35.  int min;
  36.  
  37.  min = v[0];
  38.  for (i = 1; i < n; i++)
  39.    if (v[i] < min)
  40.  min = v[i];
  41.  return (min);
  42. }
  43.  
  44. int maximo (int v[], int n)
  45. {
  46.  int i;
  47.  int max;
  48.  
  49.  max = v[0];
  50.  for (i = 1; i < n; i++)
  51.    if (v[i] > max)
  52.  max = v[i];
  53.  return (max);
  54. }
  55.  


PD: todos los programitas los hemos hecho con Richi xD, por casualidad ese tal angel es un tipo que siempre lleva una cantimplora?


Título: Re: Error en el programa
Publicado por: do-while en 30 Agosto 2013, 18:53 pm
¡Buenas!

No has cambiado los especificadores de conversión de printf. Siguen siendo los de double. Cambia eso y te dará el resultado correcto.

¡Saludos!


Título: Re: Error en el programa
Publicado por: Eva93 en 30 Agosto 2013, 19:15 pm
Al fin me sale el programa, el problema estaba en que tenia uno original en double, y al pasarlo a int tenia esos problemas -.-, bueno gracias por la ayuda  :P :rolleyes: