Error en el programa

Iniciado por Eva93, 30 Agosto 2013, 12:22 PM

0 Miembros y 1 Visitante están viendo este tema.

Eva93

#include <stdio.h>
#define DIM 100


int maximo (int v[], int n);
int minimo (int v[], int n);


int main()
{
  double v[DIM];
  int numeroValores, i;

  printf("Introduzca el número de valores a calcular:\n");
  scanf("%d", &numeroValores);
  printf("\n");
  printf("Introduce los %d valores numéricos:\n", numeroValores);
  for (i = 0; i < numeroValores; i++)
  {
    printf("Valor %d: ", i + 1);
scanf("%lf", &v[i]);
  }

  printf("maximo= %5.0lf \n" maximo (v, numeroValores));
  printf("minimo= %5.0lf \n" minimo (v, numeroValores));

}




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 ^^

do-while

¡Buenas!

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

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Eva93

Cita de: do-while en 30 Agosto 2013, 12:47 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 >.<

#include <stdio.h>
#define DIM 100


int maximo (int v[], int n);
int minimo (int v[], int n);


int main()
{
  double v[DIM];
  int numeroValores, i;

  printf("Introduzca el número de valores a calcular:\n");
  scanf("%d", &numeroValores);
  printf("\n");
  printf("Introduce los %d valores numéricos:\n", numeroValores);
  for (i = 0; i < numeroValores; i++)
  {
    printf("Valor %d: ", i + 1);
scanf("%lf", &v[i]);
  }

  printf("maximo= %5.0lf \n" maximo (v, numeroValores));
  printf("minimo= %5.0lf \n" minimo (v, numeroValores));

}




int minimo (int v[], int n)
{
  int i;
  double min;

  min = v[0];
  for (i = 1; i < n; i++)
    if (v[i] < min)
  min = v[i];
  return (min);
}

int maximo (int v[], int n)
{
  int i;
  double max;

  max = v[0];
  for (i = 1; i < n; i++)
    if (v[i] > max)
  max = v[i];
  return (max);
}

do-while

#3
¡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).
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Eva93

"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:

#include <stdio.h>
#define DIM 100


int maximo (int v[], int n);
int minimo (int v[], int n);


int main()
{
  int v[DIM];
  int numeroValores, i;

  printf("Introduzca el número de valores a calcular:\n");
  scanf("%d", &numeroValores);
  printf("\n");
  printf("Introduce los %d valores numéricos:\n", numeroValores);
  for (i = 0; i < numeroValores; i++)
  {
    printf("Valor %d: ", i + 1);
scanf("%lf", &v[i]);
  }

  printf("maximo= %5.0lf \n" , maximo (v, numeroValores));
  printf("minimo= %5.0lf \n" ,  minimo (v, numeroValores));

}




int minimo (int v[], int n)
{
  int i;
  int min;

  min = v[0];
  for (i = 1; i < n; i++)
    if (v[i] < min)
  min = v[i];
  return (min);
}

int maximo (int v[], int n)
{
  int i;
  int max;

  max = v[0];
  for (i = 1; i < n; i++)
    if (v[i] > max)
  max = v[i];
  return (max);
}



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

do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Eva93

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: