[Consulta] Programa en C, Geany..

Iniciado por neron991, 20 Mayo 2015, 06:10 AM

0 Miembros y 1 Visitante están viendo este tema.

neron991

Hola queria saber porque geany me marca este error al construir el codigo:

Collect2: Error: Id returned 1 exit status

estoy haciendo un programa en c de varias opciones y las estoy probando por ahora llevo la primera que la tengo lista pero no me deja construir para probar el codigo es el siguiente:

#include <stdio.h>
int par(int numero);
float prom (float n1, float n2, float n3);
int triple (int num);
int negative (int num);

int  main()
{

int opcion;
printf("\n\t\t\t\tBienvenido al Programa");
printf ("\n\n\t\tMenú: ");
printf ("\n\n1. Saber si numeor es par o impar");
printf ("\n\n2. calcular promedio de 3 notas");
printf ("\n\n3. Elever numero al cubo");
printf ("\n\n4. Saber si un numero es negativo o positivo");
printf ("\n\n5. Mensaje");
printf ("\n\n6. Salir del programa");
printf("\n\nSeleccione una Opcion: ");
scanf("%d",&opcion);

switch (opcion)
{
case 1:
{
int numero, resultado;
printf ("introduzca un numero\n");
scanf ("%d", &numero);
resultado=par (numero);
if (resultado==1)
printf ("es par.\n");
else
printf ("Es impar.\n");
return (0);

}
int par (int numero)
{
if ((numero%2)==0)
return (1);
else
return (0);
}

}
return (0);

}

Espero me puedan ayudar gracias..


Mod: Modificado con etiquetas GeSHi para hacer más legible el código

engel lex

#1
tienes un error... declarar una fución dentro de otra... estas declarando par dentro de main...

a demás lo declaras dentro del switch.... y al case le colocas corchetes, no tiene break... no está declarado "triple", ni tampoco "negative"...


hay varias cosas a corregir... corrigiendo lo basico

include <stdio.h>
int par(int numero);

int  main(){
int opcion;
printf("\n\t\t\t\tBienvenido al Programa");
printf ("\n\n\t\tMenú: ");
printf ("\n\n1. Saber si numeor es par o impar");
printf ("\n\n2. calcular promedio de 3 notas");
printf ("\n\n3. Elever numero al cubo");
printf ("\n\n4. Saber si un numero es negativo o positivo");
printf ("\n\n5. Mensaje");
printf ("\n\n6. Salir del programa");
printf("\n\nSeleccione una Opcion: ");
scanf("%d",&opcion);

switch (opcion){
case 1:
int numero, resultado;
printf ("introduzca un numero\n");
scanf ("%d", &numero);
resultado=par (numero);
if (resultado==1){
printf ("es par.\n");
}else{
printf ("Es impar.\n");
}
break;
}
return 0;
}

int par (int numero){
if (numero%2==0){
return 1;
}else{
return 0;
}
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

neron991

Cita de: engel lex en 20 Mayo 2015, 06:22 AM
tienes un error... declarar una fución dentro de otra... estas declarando par dentro de main...

a demás lo declaras dentro del switch.... y al case le colocas corchetes, no tiene break... no está declarado "triple", ni tampoco "negative"...


hay varias cosas a corregir... corrigiendo lo basico

include <stdio.h>
int par(int numero);

int  main(){
int opcion;
printf("\n\t\t\t\tBienvenido al Programa");
printf ("\n\n\t\tMenú: ");
printf ("\n\n1. Saber si numeor es par o impar");
printf ("\n\n2. calcular promedio de 3 notas");
printf ("\n\n3. Elever numero al cubo");
printf ("\n\n4. Saber si un numero es negativo o positivo");
printf ("\n\n5. Mensaje");
printf ("\n\n6. Salir del programa");
printf("\n\nSeleccione una Opcion: ");
scanf("%d",&opcion);

switch (opcion){
case 1:
int numero, resultado;
printf ("introduzca un numero\n");
scanf ("%d", &numero);
resultado=par (numero);
if (resultado==1){
printf ("es par.\n");
}else{
printf ("Es impar.\n");
}
break;
}
return 0;
}

int par (int numero){
if (numero%2==0){
return 1;
}else{
return 0;
}
}


Hola gracias por responder, no lo de triple y negative viene despues, no he hecho la funcion de esos, queria probar primero lo del par, ya corregi, de ahi bien pero ahora tengo el error en int numero, resultado; del case 1, dice : Error: A label can only be part of a statement and a declaration is not a statement

engel lex

sorry... lo que está en la linea 19 pasalo a la 16... debes evitar usar el switch para declarar las variables... el es solo un selector :P

para hacer el scope correcto (y declarar las variables como haces), dejas como tenias los corchetes en el case... (algo poco común, pero valido) ;)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

neron991

#4
Listo gracias por esa xD ya hice todo el programa y funciona bien pero tengo un problema en la siguente linea de codigo me tira un warning en un corchete que esta debajo de float prom (float n1,float n2, float n3) en las funciones linea 110 ve:

#include <stdio.h>
int par (int numero);
float prom (float n1, float n2, float n3);
int triple (int num);
int negative (int num);
void saludo (void);

int  main()
{

int opcion;
printf("\n\t\t\t\tBienvenido al Programa");
printf ("\n\n\t\tMenú: ");
printf ("\n\n1. Saber si un numero es par o impar");
printf ("\n\n2. Calcular promedio de 3 notas");
printf ("\n\n3. Elever numero al cubo");
printf ("\n\n4. Saber si un numero es negativo o positivo");
printf ("\n\n5. Saludo");
printf ("\n\n6. Salir del programa");
printf("\n\nSeleccione una Opcion: ");
scanf("%d",&opcion);

switch (opcion)
{
int numero, resultado;

case 1:

printf ("\nintroduzca un numero\n");
scanf ("%d", &numero);
resultado=par (numero);
if (resultado==1){
printf ("\nEs par.\n");
}else{
printf ("\nEs impar.\n");
}
break;
{
float n1, n2, n3;
case 2:

printf ("\nIntroduzca primer numero:");
scanf ("%f", &n1);
printf ("\nIntroduzca segundo numero:");
scanf ("%f", &n2);
printf ("\nIntroduzca tercer numero:");
scanf ("%f", &n3);

prom (n1,n2,n3);
}
break;
{
int numero, total;
case 3:
printf ("\nIntroduzca numero: ");
scanf ("%d", &numero);
total= triple (numero);
printf ("\nEL triple de %d es: %d",numero,total);
}
break;
{
int n,resultado;
case 4:
printf ("\nIntroduzca un numero: ");
scanf ("%d", &n);
resultado=negative (n);
if (resultado==1)
printf ("\nEs un numero negativo.\n");
else
printf ("\nEs un Numero Positivo.\n");
}
break;
{
case 5:
saludo ();
}

break;
{
case 6:

printf ("\n\n\t\tFin del programa Presione ENTER para salir");
}

break;
{
default:
printf ("\n\t\tOPCIÓN NO VALIDA DENTRO DE LOS PARÁMETROS");

}

}
return 0;
}


int par (int numero)
{
if ((numero%2)==0){
return (1);
}else{
return (0);
}
}
float prom (float n1,float n2, float n3)
{
float resultado;
resultado= (n1+n2+n3)/3;
printf ("\nEL promedio es: %f\n",resultado);
}

int triple (int num)
{
int n;
n=3*num;
return (n);
}

int negative (int numero)
{
int res;
if (numero<0)
res=1;
else
res=0;
return (res);
}

void saludo ()
{
printf ("\n\n\t\t\tDebo Estudiar Mas =)");



getchar ();
}


dice:

warning: control reaches end of non-void function

engel lex

por qué declaras las funciones dentro del main? :s mas funciones van fuera del main

para que le pones paréntesis a los resultados de los return? no es necesario...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

neron991

es que lo veo mas ordenado de esa forma asi nos dijo la profesora T_T jaja xD lo de los parentesis bueno se los acabo de quitar!

rir3760

Cita de: neron991 en 21 Mayo 2015, 00:18 AMtengo un problema en la siguente linea de codigo me tira un warning en un corchete que esta debajo de float prom (float n1,float n2, float n3) en las funciones linea 110 ve:

[...]

#include <stdio.h>
int par (int numero);
float prom (float n1, float n2, float n3);

/* ... */

prom (n1,n2,n3);

/* ... */

float prom (float n1,float n2, float n3)
{
   float resultado;
   resultado= (n1+n2+n3)/3;
   printf ("\nEL promedio es: %f\n",resultado);
}


dice:

warning: control reaches end of non-void function
Ese mensaje se genera porque declaras la función "prom" como una cuyo tipo de retorno es float pero dentro de ella no devuelves valor alguno.

Para solucionarlo ya que la utilizas solo por su efecto (calculo e impresión del promedio) cambia su tipo de retorno a void:
#include <stdio.h>
int par (int numero);
void prom (float n1, float n2, float n3);

/* ... */

prom (n1,n2,n3);

/* ... */

void prom (float n1,float n2, float n3)
{
   float resultado;
   resultado= (n1+n2+n3)/3;
   printf ("\nEL promedio es: %f\n",resultado);
}


Un saludo
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