elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Maximo y minimo de un vector (Funciones)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Maximo y minimo de un vector (Funciones)  (Leído 6,643 veces)
TheShocker

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Maximo y minimo de un vector (Funciones)
« en: 27 Diciembre 2014, 16:02 pm »

Estoy aprendiendo a usar funciones y el caso es que ciertas funciones con punteros me resultan algo confusas, así que no sé si lo estoy haciendo bien.

El caso es que el programa funciona bien pero a la hora de meter numeros negativos, por ejemplo:

-10, 2, 4

Me reconoce como maximo el numero negativo (En este caso -10) y como minimo el 2.



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 100
  4.  
  5. void leer_vector(int *, int);
  6. void escribir_vector(int *, int);
  7. void max_min_lista(int *, int, int *, int *);
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.    int dim;
  12.    int vector[DIM];
  13.    int maximo, minimo;
  14.  
  15.    printf("Introduzca la dimension del vector: ");
  16.    scanf("%d",&dim);
  17.  
  18.    leer_vector(vector,dim);
  19.  
  20.    printf("\n");
  21.  
  22.    escribir_vector(vector, dim);
  23.  
  24.    printf("\n");
  25.  
  26.    max_min_lista(vector, dim, maximo, minimo);
  27.  
  28.    printf("\n\n");
  29.  
  30.  
  31.  system("PAUSE");
  32.  return 0;
  33. }
  34.  
  35. void leer_vector(int *v, int dim){
  36.     int i;
  37.     for(i=0;i<dim;i++){
  38.                                      printf("\nElemento (%d): ", i+1);
  39.                                           scanf("%d",&v[i]);
  40.                                           }
  41.     }
  42.  
  43. void escribir_vector(int *v, int dim){
  44.     int i;
  45.     for(i=0;i<dim;i++){
  46.                         printf("%8d ", v[i]);
  47.                         }
  48. }
  49.  
  50. void max_min_lista(int *v, int dim, int *max, int *min){
  51.     int f, c;
  52.  
  53.     min = v[0];
  54.     max = v[0];
  55.  
  56.     for(f=0;f<dim;f++){
  57.                        if(v[f] > max){
  58.                        max = v[f];
  59.                        } else if(v[f] < min){
  60.                        min = v[f];
  61.                        }
  62.                                                              }
  63.  
  64.     printf("Maximo: %d   Minimo: %d", max, min);
  65.                                             }
  66.  


« Última modificación: 27 Diciembre 2014, 22:34 pm por #!drvy » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Maximo y minimo de un vector (Funciones)
« Respuesta #1 en: 27 Diciembre 2014, 17:56 pm »

Cuando tengas un problema con uno de tus programas lo primero que debes hacer es compilarlo en el modo mas estricto que permita el compilador ya que esa es la forma mas fácil de detectar errores, como hacerlo se debe describir claramente en su documentación.

Las partes a corregir son:

* En la función main llamas a "max_min_lista" y en esta falta el uso del operador "dirección de" (el '&') con los dos últimos argumentos:
Código
  1. max_min_lista(vector, dim, maximo, minimo);
  2.  
  3. /* Debe cambiarse a: */
  4. max_min_lista(vector, dim, &maximo, &minimo);

* En la función "max_min_lista" falta el uso del operador "*" al utilizar los parámetros "max" y "min" ya que estos son punteros, la susodicha con los cambios termina así:
Código
  1. void max_min_lista(int *v, int dim, int *max, int *min)
  2. {
  3.   int f, c;
  4.  
  5.   *min = v[0];
  6.   *max = v[0];
  7.  
  8.   for(f=0;f<dim;f++){
  9.      if(v[f] > *max){
  10.         *max = v[f];
  11.      } else if(v[f] < *min){
  12.         *min = v[f];
  13.      }
  14.   }
  15.  
  16.   printf("Maximo: %d   Minimo: %d", *max, *min);
  17. }

Por ultimo hay que cambiar la definición de la función main a "int main(void) ..." o bien "int main() ..." y eliminar en la función "max_min_lista" la variable "c" ya que no se utilizan en el programa.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
TheShocker

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Maximo y minimo de un vector (Funciones)
« Respuesta #2 en: 27 Diciembre 2014, 20:48 pm »

Perfecto, todo claro. Muchas gracias.  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] - Mínimo y máximo
Scripting
Meta 2 20,851 Último mensaje 1 Diciembre 2010, 12:50 pm
por Novlucker
maximo y minimo « 1 2 »
Programación C/C++
m@o_614 10 10,826 Último mensaje 27 Abril 2021, 19:59 pm
por K-YreX
Tabla Java valor minimo y maximo
Java
tcubanito 1 2,520 Último mensaje 7 Agosto 2014, 13:39 pm
por NikNitro!
maximo y minimo en batch
Scripting
guason9 2 2,350 Último mensaje 1 Octubre 2015, 01:21 am
por guason9
MOVIDO: maximo y minimo en batch
Programación General
Eleкtro 0 1,776 Último mensaje 27 Septiembre 2015, 09:07 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines