Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Mini programa "si es par"

Estas en el tema de Mini programa "si es par" en el foro de C/C++ en Foros del Web. Hola, estoy empezando con C y estoy viendo como se manejan las variables por ahora, hice este mini programa: #include <stdio.h> #include <conio.h> main() { ...
  #1 (permalink)  
Antiguo 18/01/2013, 16:05
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Mini programa "si es par"

Hola, estoy empezando con C y estoy viendo como se manejan las variables por ahora, hice este mini programa:

#include <stdio.h>
#include <conio.h>

main()
{
int a = 6;
scanf( "%i", &a );
if (a % 2 == 0)
printf("es par!");
else
printf("impar");
getch();
return 0;
}

Mi pregunta es: Como hago q se pueda hacer con multiples números, porque el programa se desarrolla cuando le ingresan un número, como hago que "vuelva a empezar"?
Y me pueden explicar bien lo de return?

una curiosidad más: se puede hacer en C un programa que suba automaticamente post a diferentes páginas? (ej taringa y páginas similares)
  #2 (permalink)  
Antiguo 18/01/2013, 16:43
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Mini programa "si es par"

Hola!
Cita:
como hago que "vuelva a empezar"?
cuando llegues a la parte de iteraciones en C vas a encontrar tu respuesta(o al menos te vas a dar cuenta de como se puede hacer)

Cita:
Y me pueden explicar bien lo de return?
cuando veas funciones lo vas a entender mejor


No te tomes a mal q no respondo, sino que me parece mejor que veas los respectivos temas por vos mismo y si ahi no entendes entonces pregunta :)

Saludos
  #3 (permalink)  
Antiguo 18/01/2013, 16:54
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Mini programa "si es par"

"... como hago que 'vuelva a empezar'?..."

Se hace con un bucle: echa un vistazo a tu manual de C en la parte de bucles; pero recuerda que tanto en C como en cualquier otro lenguage es recomendable entender bien un nivel antes de saltar al siguiente.


"...Y me pueden explicar bien lo de return?..."

Esto forma parte de los tipos y retornos de funcion: si aun no has llegado a eso es mejor creerte que funciona así y mas adelante lo entenderas. De todas formas, la explicacion por encima es la siguiente: la funcion 'main' de entrada a la aplicacion es de tipo entero (aunqué en tu codigo te hayas comido la declaracion de tipo), de forma que debe retorna un valor de tipo entero. Este valor sirve al que lanzó el proceso de la aplicacion (normalmente será tu s.o., pero puede ser otra aplicacion) para determinar si tu aplicacion se ejecuto correctamente o se produjo un error (se toma por referencia que 0 indica ejecucion correcta y cualquier otro valor significa error). Por eso al final de la aplicacion retornas 0 si no se produjo ningun error.

Código:
int main() {
    return 0;
}
Normalmente eso se aplica tambien a funciones que encontraras en las librerias que vas a usar mas adelante (o a funciones que te haras tu mismo), de forma que al llamar a una funcion que retorna 0 sabras que se ejecuto correctamente (pero esto del retorno solo es obligatorio en la funcion main, en las otras es opcional y en los casos de retorno no es necesariamente de tipo entero). Todo esto lo encontraras en tu manual en la seccion de declaracion, llamada y retorno de funciones.


"...se puede hacer en C un programa que suba automaticamente post..."

Si, los pasos son los siguientes: 1 - aprender C, 2 - aprender programacion de redes. Aun no has finalizado el paso 1.


Otra cosa, la libreria 'conio' no es estandar y ademas parece ser que el comportamiento de alguna de sus funciones no es igual en todos los s.o. En tu codigo estas usando 'conio' para el 'getch()' del final: te sugiero que quites 'conio' y uses 'getchar()' que ya viene implementada en la 'stdio'. Otra cosa, indenta tu codigo: será mejor para ti y para cualquiera que pueda ayudarte en futuros problemas de tus codigos.

Saludos
vosk
  #4 (permalink)  
Antiguo 18/01/2013, 16:54
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Mini programa "si es par"

Perdona cesar_casla, no habia visto tu post
  #5 (permalink)  
Antiguo 18/01/2013, 19:38
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: Mini programa "si es par"

en vez de getch puedes usar cin.get(), dependiendo del compilador tal vez necesites dos sentencias cin.get() para visualizar los resultados, para usarla incluye el archivo de cabecera <iostream>
  #6 (permalink)  
Antiguo 18/01/2013, 20:10
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Mini programa "si es par"

Cita:
en vez de getch puedes usar cin.get()
eso es en C++, juanfranciscoX esta aprendiendo C


Saludos
  #7 (permalink)  
Antiguo 18/01/2013, 20:52
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Mini programa "si es par"

No se a que se debe, pero a mi me compila perfectamente esto:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.     printf("Hola mundo!\n");
  6.     getch();
  7.     return 0;
  8. }

Al parecer también hay un getch() estándar.
  #8 (permalink)  
Antiguo 18/01/2013, 21:39
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Mini programa "si es par"

Cita:
No se a que se debe, pero a mi me compila perfectamente esto:
para que teoricamente sea perfecto deberias agregar el header conio.h. De todas formas esto depende del IDE que usas, que seguro lo tiene incorporado por defecto y es por eso que el compilador no tira warnings


Cita:
Al parecer también hay un getch() estándar.
hasta donde se en ningun momento getch de la libreria conio forma parte de algun entandar C. Al no ser esta libreria parte del estandar, no es portable y por lo tanto no se puede utilizar en todos los SO y en cualquier compilador(de echo creo que en Linux es imposible usar esta libreria)

Saludos

PD: me olvidaba aclarar que conio pertenece a Borland
  #9 (permalink)  
Antiguo 19/01/2013, 00:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Mini programa "si es par"

El return es de uso general... se puede usar en cualquier funcion y en cualquier momento. Basicamente el return espera un parametro que va a devolver la funcion, Por ejemplo
La funcion
int suma() {...}
Devuelve un entero entonces denro de la funcion el return debe tener un enetero como parametro.
char caracter () {...}
Devuelve un char asi que el return debe tener un caracter como parametro.

La sentencia return se puede poner en cualquier parte de la funcion y lo que hace es abandonar inmediatamente la funcion y devolver el paramentro (seria como saltar al final). Luego el proceso siga donde fue llamada esa funcion.

Obviamente no solo se usa para devolver si hubo error o no. Tambien puede devolver datos utiles. como la funcion suma

int suma (int a , int b) { return a + b ; }

Y la usamos de esta forma

int main()
{
printf("El numero es %d\n", suma(1,2));
return 0;
}

Evidentemente el return en el main hace que termine la funcion main y como no hay otro punto de partida el proceso termina y devuelve ese entero como salida.

Espero que se entienda. Saludos

PD: La funcion getch no es estandar.
  #10 (permalink)  
Antiguo 19/01/2013, 08:26
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Mini programa "si es par"

Gracias a todos por contestar!, le hice un bucle para que la sentencia if se repita, no se como hacer para que lo haga infinitamente asi que use esto:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.       int i;
  6.       for ( i=0 ; i<999 ; i++ ){     //bucle for para repetir el if
  7.           int a;
  8.           scanf( "%i", &a );       //tomamos el número que inserta el usuario en la variable "a"
  9.           if (a % 2 == 0)
  10.              printf("es par!");
  11.           else
  12.           printf("impar");
  13.           }
  14.       getchar();
  15.       return 0;
  16.       }
  #11 (permalink)  
Antiguo 19/01/2013, 09:13
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Mini programa "si es par"

Buenas, para mejorar este último programa puedes hacer dos cosas:

Primero la declaración de a, debería estar fuera del bucle, no hace falta declarar a cada vez que vuelve a empezar el bucle.

Segundo, si lo que quieres es un bucle infinito puedes hacer o for(;;) lo que sea o un while(1) lo que sea.


Saludos
  #12 (permalink)  
Antiguo 19/01/2013, 09:57
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Mini programa "si es par"

O una funcion recursiva :)

Código:
#include <stdio.h>

int test() {
    int a;
    
    printf("Dime un numero (0 para salir): ");
    scanf("%i", &a);
    if(a) {
        printf("%d es %s\n\n", a, (a%2)?"impar":"par");
        test();
    }
    
    return 0;
}


int main() {
    return test();
}
Saludos
vosk
  #13 (permalink)  
Antiguo 19/01/2013, 09:59
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Mini programa "si es par"

juanfranciscoX, no te estreses, al mal ambiente y a las contestaciones irónicas que parecen mostrar los colmillos estamos más que acostumbrados. Si bien, creo que llevan razón y podrías haber indagado un poco.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #14 (permalink)  
Antiguo 19/01/2013, 10:02
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Mini programa "si es par"

Cita:
Iniciado por cesar_casla Ver Mensaje
para que teoricamente sea perfecto deberias agregar el header conio.h. De todas formas esto depende del IDE que usas, que seguro lo tiene incorporado por defecto y es por eso que el compilador no tira warnings



hasta donde se en ningun momento getch de la libreria conio forma parte de algun entandar C. Al no ser esta libreria parte del estandar, no es portable y por lo tanto no se puede utilizar en todos los SO y en cualquier compilador(de echo creo que en Linux es imposible usar esta libreria)

Saludos

PD: me olvidaba aclarar que conio pertenece a Borland
No creo que sea por el IDE, ya que al usar clrscr() si arroja error.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.   printf("Hola mundo!\n");
  6.   clrscr();
  7.   getch();
  8.   return 0;
  9. }

P.D: Uso DevCpp
  #15 (permalink)  
Antiguo 19/01/2013, 10:04
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Mini programa "si es par"

Cita:
Iniciado por vosk Ver Mensaje
O una funcion recursiva :)

Código:
#include <stdio.h>

int test() {
    int a;
    
    printf("Dime un numero (0 para salir): ");
    scanf("%i", &a);
    if(a) {
        printf("%d es %s\n\n", a, (a%2)?"impar":"par");
        test();
    }
    
    return 0;
}


int main() {
    return test();
}
Saludos
vosk

Tampoco te pases, que esta aprendiendo C a ver si le va a dar un patatús xDDD

dont explain, no le veo nada de irónico a ningun mensaje, simplemente es un C mas "avanzado" lo que ha puesto vosk pero tampoco es un jeroglífico egipcio, quiero decir que consultando un poco se entiende xD


Saludos
  #16 (permalink)  
Antiguo 19/01/2013, 10:23
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Mini programa "si es par"

"...al mal ambiente y las contestaciones irónicas que parecen mostrar los colmillos estamos más que acostumbrados..."

Tambien puedes agregar la aplicacion a un sheduler y que la lance continuamente, asi te ahorras los bucles infinitos hasta el mas allá. Creo que esta es la unica ironia de todo el hilo. Tal vez debería usar un bucle infinito para leer linea por linea, no sea que me haya saltado alguna otra. Y a ver si en conio encuentro la funcion 'search_ironias()' aunque no creo que sea estandar.


carbon: tal como te comentaron es posible que tu IDE añada cabeceras adicionales por defecto (el mio tambien lo hace), pero puedes comprobarlo de una forma sencilla, vas al directorio de includes abres stdio.h y buscas 'getch'. Seguramente que incluso compilaria correctamente sin incluir 'stdio' (por probar que no quede).


Y pido perdon si este post está fuera de lugar.

Saludos
vosk

Etiquetas: int, mini, programa, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:13.