/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema a la hora de modularizar un programa

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
iago



Registrado: 28 Dic 2011
Mensajes: 4

MensajePublicado: 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)

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

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

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

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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com