ayuda no se que tengo mal¡¡¡

Iniciado por maik22, 6 Abril 2012, 03:58 AM

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

maik22

QUe onda primero que anda, bueno me dejaron ahcer un programa en "C" que indicara si un numero es par o impar y bueno mi problema es que lo compilo y no me detecta ningun error pero cuanod lo intetno arrancar no me arranca.

/*programa para indicar si un número es apr o impar*/
#include<stdio.h>
#include<conio.h>
main();
int n;
pintf("Dame el número");
scanf("%f",&n);
if((n%")==0){
printf("El número es par");
}
if((n%2)==1){
printf("El número es par");
}
getch();
}



bueno despues de que hize todo esto me dice "WARNINGS:  function should return a value", y bueno no se que hacer no me deja correr el programa.....
OTRA duda es que no entiendo porque en el if debo poner ((n%2)==0) osea se que sirve para detectar si el residuo es 0 y si si es 0 entonces el numero es par, pero
¡porque no puedo poner solo un "=" en vez de 2 "=="?? :rolleyes:
"Un final feliz depende de donde acabes el cuento" Orsen Welles

-Gtz-

Hola que tal , bueno realmente no estoy tan seguro de por que lo primero del "WARNINGS: function should return a value", pero creo que te puedo ayudar en lo del "=" y "==".

Bueno el "=", por las clases de matematicas lo conocemos como el signo de igual, pero en C funciona algo diferente, en C es el signo de asignación, es decir si tienes:

a = b;

Esta diciendo: "asigna el valor de "b" a "a"

Y cuando se utilizan dos "==" se utiliza para comparar o osea que ahora si se utiliza como el signo de igual, es decir:

a == b;

y se le "a" es igual a "b"?

dando como resultado un 1 o un 0, segun sea el caso.

armizh

No estaria mal usar las etiquetas GeSHi, no? Ademas, no es tan recomendado el uso de la libreria conio.h, y si es solo para usar getch() con mas razon, para eso esta la funcion getchar() que cumple el mismo rol y es estandar

Saludos!
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Ferno

Además, la función main debe devolver un int:

int main (int argc, char* argv[])

o, si no vas a usar los parámetros:

int main (void)

Al hacer esto debes agregar un "return 0" en la última línea del main. Con eso desaparecerá el Warning.

maik22

bueno jejeje, lo e solucionado el problema de la corrida, ahora si me lo ejecuta pero el problema es que introuzco el numero apreto enter, y me saca al codigo fuente, cadavez que lo corro my presiono enter me saca al codigo fuente, no se que hacer que hice mal, a y para solucionar lo de la ocrrida solo cambie el valor que esta en negritas, en vez de "f" puse "d", alguien podria explicarme el proque paso esto??? esque vi otros codigos en linea y dije a todos ellos ponen "d" en vez de "f", yo ponia "f" porque pense que era un valor flotante :s pero alguien podria explicarme le porque???

/*programa para indicar si un número es apr o impar*/
#include<stdio.h>
#include<conio.h>
main();
int n;
pintf("Dame el número");
scanf("%d",&n);
if((n%")==0){
printf("El número es par");
}
if((n%2)==1){
printf("El número es par");
}
getch();
}
"Un final feliz depende de donde acabes el cuento" Orsen Welles

Sagrini

#5
Todo lo que han comentado mis compañeros es correcto, pero ninguno ha prestado atención al gran error de ese código.
if((n%")==0)
What? A qué viene esa comilla? No sé ni como te compila :/


#include <stdio.h>

int main ()
{ int num; scanf ("%d", &num);
if (num%2==0) printf ("El numero es par\n");
else printf ("El numero es impar\n");
return 0;
}

Primero, el warning es porque no hay ningún return. Eso es importante. Luego, usas %f cuando "num" es un entero. Y luego, no hace falta calcular dos veces, un solo "else" vale.
MODF: Nueva respuesta. Eso es porque %f es para variables definidas como FLOAT. Tú defines el número como ENTERO (int). De todos modos, el error importante es el que te he señalado arriba. ¡Y deja de usar conio.h y getch ()! Cuando llegue a la universidad (dentro de unos cuantos años jajaj) le voy a pegar un repaso a alguno por este tema ¬¬

maik22

:Fuckyeah:, por fin me salio, muchas gracias a todos por sus respuestas, me ayudo mucho lo del return 0;, y quisiera saber porque no usar el conio.h y el getch();, esque mi maestra me pide siempre que ponga clrscs para limpiar la pantalla, el conio no le he preguntado :S pero lo hare regresando de las vacaciones, y lo de gecth noe stoy seguro segun yo e spara qeu espere a que presionemos ener o algo asi no?? bueno sin mas por decir aqui dejo mi codigo para que lo vean, ya fuincionando y bonito :D, acepto reomendaciones

/*Programa para definir si un número es par o impar*/
#include<stdio.h>
#include<conio.h>
int main(){
clrscr();
int n;
printf("Dame el número y te dire si es par o impar, acepto el retoxD");
scanf("%d", &n);
if(n%2==0)
{
printf("El número es par");
getch();
}
else{
printf("El número es impar");
getch();
}
return 0;
}/*echo por Xion*/



Vale gracias por su ayuda, espero yo ayudar a a lguien proximamente jeje
"Un final feliz depende de donde acabes el cuento" Orsen Welles

GROV

Hola que tal antes que nada, bueno para empezar no es que este mal, sino que no es recomendable usar la biblioteca conio.h ya que no es una biblioteca estándar ya que es propiedad de Borland (creo), y si haces un programa usando esta biblioteca no lo podrías compilar en GNU/Linux por ejemplo (claro que si se puede pero tienes que añadir la biblioteca y hacer esto y lo otro, y es muy tedioso).

Igual yo, en la universidad hay varios maestros que te enseñan y te piden que programes usando conio.h pero creo que eso ya es por gustos (y valla que hay maestros con mal gusto), para usar más que nada getch(), clrscr(), gotoxy(), textcolor(), y textbackground(), solo te digo que no te acostumbres a usar esta biblioteca ya que en la vida real es muy probable que no la utilices.

Y para que veas que conio.h no es indispensable:

Para sustituir getch(), creo que con cin.get() será mas que suficiente, (digo creo por que no la he utilizado) la cual está en <stdio.h>. Si no funciona creo que hay que ponerla dos veces: cin.get();cin.get();, la cuestión es algo complicada de explicar.

gotoxy() es algo vanal, y además se puede sustituir usando \n (espacio hacia abajo) y \t (espacio hacia la derecha) dentro de un printf();

Para sustituir clrscr(), basta con escribir system("cls");, (aunque para ser honestos, para que quieres borrar la pantalla)

Por ultimo y siendo honestos de que serviria tener un fondo color rosita y letras verdes??, pues si tal vez se vea bonito pero no es práctico.

Te aseguro que puedes remplazar todas las funciones de conio.h (al menos las más indispensables), pero habrá que investigar un poquito más.

Ójala y te sirviera de algo.

Saludos afectuosos!!
"Ningún problema debe de resolverse dos veces"

maik22

vale muchas gracias, me has resuelto muchas dudas, mas la de el conio.h jeje, de echo uso Borland en windows, y tengo ubuntu en la pc igual instalado, me gustaria programar desde ahí, y no tenia idea que la libreria conio no la tenia instalda en los compiladores de OS Unixo jeje, garcias ;).
"Un final feliz depende de donde acabes el cuento" Orsen Welles