Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Mozzard en 30 Septiembre 2018, 21:22 PM

Título: Que error tiene este codigo?
Publicado por: Mozzard en 30 Septiembre 2018, 21:22 PM
El objetivo de este programa es que de los 4 datos introducidos te devuelva el mas alto:

#include <stdio.h>
/*
Add `int max_of_four(int a, int b, int c, int d)` here.
*/
//a=0 b=1 c=2 d=3
int max_of_four(int a, int b, int c, int d){
   int array [4] = {a,b,c,d};
   int i=0,k=0,j=1,g;
   //i=0
   for (i;i<=4;i++){
       if(array[k]>array[j]){
           array[k]=g;
           k += 1;
       }else{
           array[j]=g;
           j += 1;
       }
   }
   return g;
   }
int main() {
   int a, b, c, d;
   scanf("%d %d %d %d", &a, &b, &c, &d);//input
   int ans = max_of_four(a, b, c, d);
   printf("%d", ans);
   
   return 0;
}
Título: Re: Que error tiene este codigo?
Publicado por: Mozzard en 30 Septiembre 2018, 21:31 PM
Lo he modificado un poco aun asi no da el resultadoe esperado:

#include <stdio.h>
/*
Add `int max_of_four(int a, int b, int c, int d)` here.
*/
//a=0 b=1 c=2 d=3
int max_of_four(int a, int b, int c, int d){
   int array [4] = {a,b,c,d};
   int i=array[0],n=0;
   //i=0
   for (n;n<=4;n++){
       if(i<array[n]){
           i=array[n];
       }
   }
   return i;
   }
int main() {
   int a, b, c, d;
   scanf("%d %d %d %d", &a, &b, &c, &d);//input
   int ans = max_of_four(a, b, c, d);
   printf("%d", ans);
   
   return 0;
}
Título: Re: Que error tiene este codigo?
Publicado por: CalgaryCorpus en 2 Octubre 2018, 15:44 PM
Mis comentarios al código mostrado:

Usa etiquetas Geshi de C o C++ para que aparezcan números de línea. Es más fácil comentar así

Haz que el ciclo llegue hasta 3. Cómo está visitas más allá del fin del arreglo.

Usa nombres de variables que ayuden a entender el código. Que es o que guarda "I"?

"i" debería ser el índice, pero usaste "n" para ese efecto.

Al compilador no le va a costar mas si usas variables con mejores nombres.

si "i" parte con el primer valor, es superfluo que el índice empiece en 0, hazlo partir en 1.

Título: Re: Que error tiene este codigo?
Publicado por: Beginner Web en 2 Octubre 2018, 17:25 PM
Es mucho codigo lo que pusiste se resolvia mas usando un arreglo y sabiendo el tamaño del arreglo, recorrer el arreglo con un for y sacar el mayor con un if dentro del for y al final de la funcion retornar el mayor

de entrada max deberia valer lo que contiene la primera posicion del arreglo, y luego ir comparando elemento por elemento dentro del for con un

Si arreglo>max a max le asigno arreglo,  asi,

Tambien hay otra forma de hacerlo que es usando una variable bandera de tipo logica que hace esto para asignar el primer elemento a la variable max;

for(i=0;i<TAMARREGLO;i++){
if(bandera==true){
max=arreglo;
bandera=false;
}
else{
if(arreglo>max){
max=arreglo;
}
}

Espero haberte ayudado  ;-)