PDA

Ver la versión completa : ayuda con mis inicios



rafivp
05/07/2004, 19:41
hola amigos , estoy iniciandome en la programacion , primero C en general , luego ya veremos... pero tengo un problema con un ejemplo de un tutorial , que aunque el devc++ lo compila , al ejecutarlo me dice : el mayor de los dos es 4206596

#include <stdio.h>
#include <conio.h>

int compara( int a, int b ) /
{
int mayor;

if ( a>b )
{
mayor = a;
}
else mayor = b;

return mayor;
}

int main()
{
int num1, num2;
int resultado;

printf( "Introduzca dos números: " );
scanf( "%i %i", num1, num2 );

resultado = compara( num1, num2 );/

printf( "El mayor de los dos es %i\n", resultado );
}



y en este , me da error con la funcion compara ,os lo pego haber si me podeis ayudar , uso el devc++



#include <stdio.h>
#include <conio.h>

void compara( int a, int b );

int main()
{
int num1, num2;
int resultado;

printf( "Introduzca dos números: " );
scanf( "%i %i", num1, num2 );

resultado = compara( num1, num2 );
printf( "El mayor de los dos es %i\n", resultado );
}

int compara( int a, int b )

{
int mayor;
if ( a>b )
mayor = a;
else mayor = b;

return mayor;
}


gracias

korohash
05/07/2004, 19:52
Buenas, en el primer caso no se lo q te pasa, pero en el segundo, primero defines la funcion compara como void compara(...) pero más tarde, lo que devuelve la funcion es un entero (int compara(...)). Prueba a poner en la definición "int compara(...)" en lugar de void.

rafivp
05/07/2004, 19:55
me sigue dando error el segundo , pero me señala la linea resultado = compara ( num1, num2)

korohash
05/07/2004, 20:15
Lo acabo de compilar en el DevC++ y me ha dado errores. He realizado los siguientes cambios:

1) He cambiado "void" por "int" en la definicion de la función comparar, como te habia dicho antes.

2)He cambiado "int" por "void" en main(). Te recomiendo que si en el main no pones la instruccion "return", pongas "void main()" en lugar de "int main()"

Despues de hacer estos cambios, se queda de la siguiente forma:

#include <stdio.h>
#include <conio.h>

int compara( int a, int b );

void main()
{
int num1, num2;
int resultado;
printf( "Introduzca dos números: " );
scanf( "%i %i", num1, num2 );
resultado = compara( num1, num2 );
printf( "El mayor de los dos es %i\n", resultado );
}

int compara( int a, int b )
{
int mayor;
if ( a>b )
mayor = a;
else mayor = b;
return mayor;
}


Y a mi me ha compilado sin darme ningun error... Aunq cuando lo ejecuto, me dice el Windows que se ha producido un error.... y cierra el programa :(

De todas formas, prueba lo q te digo

Wave
05/07/2004, 20:22
scanf( "%i %i", num1, num2 );
scanf( "%i %i", &num1, &num2 );

korohash
05/07/2004, 20:34
Yo lo habia hecho utilizando las funciones "cin" y "cout" para leer de teclado y escribir en pantalla respectivamente y si que me habia funcionado (son de C++ y estan en iostream.h). Tb he probado tu cambio y va bien. Espero haberte ayudado.

rafivp
06/07/2004, 16:22
gracias a todos , ahora a por los punteros...