Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: neron991 en 20 Mayo 2015, 06:10 AM

Título: [Consulta] Programa en C, Geany..
Publicado por: neron991 en 20 Mayo 2015, 06:10 AM
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
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: 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;
}
}
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: neron991 en 20 Mayo 2015, 06:40 AM
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
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: engel lex en 20 Mayo 2015, 07:09 AM
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) ;)
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: neron991 en 21 Mayo 2015, 00:18 AM
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
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: engel lex en 21 Mayo 2015, 00:35 AM
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...
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: neron991 en 21 Mayo 2015, 01:55 AM
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!
Título: Re: [Consulta] Programa en C, Geany..
Publicado por: rir3760 en 1 Junio 2015, 18:21 PM
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