| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
iago
Registrado: 28 Dic 2011 Mensajes: 4
| Publicado: 28/12/2011 3:44 am | | | Título: Problema a la hora de modularizar un programa |
| Hola buenos dias, soy nuevo por el foro (más bien nuevo registrado porque me he tirado 6 meses resolviendo mis dudas de programación a base de navegar por aquí =) y he pensado que ya iba siendo hora de entrar como usuario ^^). Mi problema es que estoy empezando a aprender a modularizar y como todo nobato no lo consigo ni a la de tres =/ , en este caso tengo que crear un programa que me diga si un numero introducido por usuario es par o impar ; pero por más vueltas que le doy no consigo que compile les dejo el código y gracias de antemano.
int Parimpar (int numero ) {
if (numero%2 == 0 ) { return 0;
} else {
return 1; { }
int main () { int numero , resultado ;
printf ( "Introduzca el numero"); scanf ("%d" , & numero);
(Parimpar, &resultado); if (resultado == 0) { printf ("es par"); } else { printf ("es impar"); } getch(); } |
|
| Volver arriba | |
 |
cheroky
Registrado: 22 Sep 2005 Mensajes: 2479 Ubicación: Valladolid (España)
| Publicado: 28/12/2011 6:23 am | | | Título: |
| Hola iago bienvenido.
Tienes mal el bracket (llave) que cierra el bloque if-else. La llamada a la función sintácticamente no es correcta; además al parecer intentas utilizar un puntero cuando no tiene caso. La llaves en los bloques condicionales, bucles, etc, sirven para agrupar dos o más sentencias, aunque no es un error nunca las utilices para una sola.
Cinco consejos:
- Compila en el modo modo más estricto posible.
- Intenta leer y entender los mensajes de error y avisos que lanza el compilador.
- En tu primera fase de aprendizaje nunca utilices funciones ajenas al estándar como por ejemplo getch.
- Sigue un curso o libro sobre el lenguaje, puedes empezar por la sección cursos del sitio, el foro esta muy bien para consultar dudas puntuales.
- Y por ultimo, escribe código sabiendo lo que haces, si dudas comprueba por separado que funciona o compila a pasos encadenados (escribo-compilo-escribo-compilo....) No es atípico, pero sí difícil de entender como se pueden escribir 30 lineas y que haya errores nada triviales.
El programa con las correcciones, cotejalo con el erroneo y extrae algunas conclusiones:
| Código: | #include <stdio.h> #include <stdlib.h>
int Parimpar(int numero) { return numero % 2; }
int main(void) { int numero;
printf ("Introduzca el numero: "); fflush(stdout); scanf (" %d" , &numero);
if (Parimpar(numero) == 0) puts("es par"); else puts("es impar"); system("pause");
return 0; } |
·?0ƒ· _________________ La cuestión no es si hay vida inteligente en otros planetas lejanos. La cuestión es si hay vida inteligente aquí. |
|
| Volver arriba | |
 |
iago
Registrado: 28 Dic 2011 Mensajes: 4
| Publicado: 28/12/2011 12:42 pm | | | Título: |
| | Gracias por todo me pondré a ello con ganas a ver si miro bien los foros y voy aprendiendo =) gracias de nuevo! |
|
| Volver arriba | |
 |
|
iago
Registrado: 28 Dic 2011 Mensajes: 4
| Publicado: 28/12/2011 1:17 pm | | | Título: |
| [/img]| Código: | #include <stdio.h>
int max (int a,int b,int c) { if (a>b && a>c) return a; if (b>a && b>c) return b; if (c>a && c>b) return c; }
int main (void) { int a, b , c ; printf ("introduzca el primer numero "); scanf("%d" ,&a); printf ("introduzca el segundo numero "); scanf("%d" ,&b); printf ("introduzca el tercer numero "); scanf("%d" ,&c); printf ("%d" ,max); system("pause"); return 0 ; }
| [/quote]
he seguido practicando en este caso he abordado un problema en el que me piden que compare 3 numeros y diga cual es el mayor de ellos; estaba ilusionado pues el programa compila sin problemas pero tras introducir los 3 nùmeros me sale " 4102342" (número que para nada tiene que ver con los que meti en el programa =/ ). tambien he probado a introducir una variable mas y asignarla al valor de "Max" y luego imprimir esta pero sigue saliendo el mismo numero; alguna idea de que tengo mal? gracias de antemano. |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 6586 Ubicación: Mexico
| Publicado: 28/12/2011 2:30 pm | | | Título: |
| Cuando se llama a una función se debe colocar el nombre de esta y entre paréntesis y separados por comas los argumentos de la función. En tu caso la forma correcta es:
| Código: | printf("%d\n", max(a, b, c)); |
También se debe incluir el encabezado <stdlib.h> antes de utilizar la función "system".
Un saludo _________________ Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short. -- Mentat Handbook |
|
| Volver arriba | |
 |
iago
Registrado: 28 Dic 2011 Mensajes: 4
| Publicado: 28/12/2011 4:29 pm | | | Título: |
| | bueno poco a poco voy mejorando x) esta vez solo me comí una pequeña parte..Muchas gracias por todo y espero poder ayudar yo tambien en un futuro =)! |
|
| Volver arriba | |
 |
|
|