elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda sobre pequeño programa en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sobre pequeño programa en c  (Leído 2,907 veces)
Freelancer

Desconectado Desconectado

Mensajes: 12


Ver Perfil
duda sobre pequeño programa en c
« en: 29 Junio 2011, 06:24 am »

hola estoy aprendiendo a programar en c y me e puesto hacer un pequeño programa algo basico con condiciones y cyclos bueno le programa trata sobre decir cuantos numeros son pares positivos y cuantos numeros son pares negativos
haora eso ya lo se hacer lo que no se bien es que al definir el cyclo qusiera que me deja de pedir numeros al precionar la tecla espacio pero no se si eso se puede hacer pero creo que si se puedo pero al menos no se como aqui les dejo el codigo de el programa
Código:
//Programa de pares and impares negativos y positivios con condiciones y tambien ciclos 
#include <stdio.h>
#include <conio.h>
// declaracion de variables
int num;
int parp,parn,imparp,imparn;

int main(){
    while(num!=""){
/* esta es la parte que yo quisiera saber como poner que se termine el ciclo, al precionar espacio en el teclado porque habria que poner que num es diferente a algo en este caso a espacio y cuando apretemos espacio termina el ciclo y no introducimos mas numeros y nos dice cuales son pares positivos y pares negativos vale bueno espero que puedan responder mi duda */

    printf("ingrese un numero");
    scanf("%d",&num);
    
    if(num/2=0 && num>0) // condiciones
    parp=parp+1;
    else
       if(num/2=0 && num<0)
       parn=parn+1;
    else
       if(num/2!=0 && num>0)
       imparp=imparp+1;
    else
       if(num/2!=0 && num<0)
       imparn=imparn+1;
    }
    printf("pares positivivos : ",parp);  // mostramos el resultado
    printf("pares negativos : ",parn);
    printf("impares positivos : ",imparp);
    printf("impares negativos : ",imparn);
    
getch(); // pausamos el programa
}


« Última modificación: 29 Junio 2011, 06:28 am por Freelancer » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: duda sobre pequeño programa en c
« Respuesta #1 en: 29 Junio 2011, 08:19 am »

El programa  tiene algunos errores.

No puedes comparar el espacio con "num"

Código:
while(num!=""){
num es de tipo int, el espacio es un caracter, aparte tu estás tratando de comparar num con la cadena " ".

Lo que puedes hacer es checar la entrada del scanf(), el scanf() te devuelve algo según lo que se haya leído, puedes checar así:

Código
  1.    while(scanf("%d", &numero) != 0)
  2.  

Es decir, el ciclo terminará cuando se haya ingresado algo que no sea un número, por ejemplo una letra.

Para comprobar si un número es par o impar deberías de checar el residuo.

if(numero % 2 == 0) <---- si el residuo de la división de numero entre 2 es 0, quiere decir que el número es par. También puedes usar la función fmod() definida en math.h para checar el residuo.

Otra cosa, no estás inicializando las variables parp,parn,imparp,imparn por lo que estás acumulando en valores basura.

Otra cosa, se llaman "ciclos", no cyclos.
Otra cosa, no es necesaria la librería conio.h ni getch(). Puedes pausar la ejecución del programa con una función estándard como getchar().

Aquí está la corrección a tu programa, c estándard:


Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    int numero = 0;
  6.    int pares = 0;
  7.    int impares = 0;
  8.  
  9.    printf("Numero : ");
  10.    while(scanf("%d", &numero) != 0)
  11.    {
  12.        if(numero % 2 == 0)
  13.            pares++;
  14.        else
  15.            impares++;
  16.        printf("Numero : ");
  17.    }
  18.  
  19.    printf("\nPares : %d\nImpares : %d\n", pares, impares);
  20.  
  21.    while(getchar() != '\n');
  22.    getchar();
  23.  
  24.    return 0;
  25. }
  26.  
  27. Una versión más corta:
  28. [code=c]while(scanf("%d", &numero) != 0)
  29.    {
  30.        fmod(numero, 2.0) == 0 ? pares++ : impares++;
  31.        printf("Numero : ");
  32.    }
  33.  
[/code]


« Última modificación: 29 Junio 2011, 08:21 am por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Freelancer

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: duda sobre pequeño programa en c
« Respuesta #2 en: 29 Junio 2011, 14:20 pm »

muchas gracias por la aclaratoria, lo de getch(); lo hacia por que asi lo utilizan en la universidad donde estoy estudiando jeje pero ya   había leeido en este mismo foro que no es muy recomendable usar getch() aunque supongo que getchar es lo mismo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una duda sobre un programa.
Ingeniería Inversa
Azazel 4 2,777 Último mensaje 13 Diciembre 2003, 13:09 pm
por harq
duda sobre programa .exe
Programación Visual Basic
gabyecc 1 1,865 Último mensaje 4 Junio 2009, 18:47 pm
por gabyecc
pequeño programa sobre símil motor de búsqueda
Programación C/C++
rabenson 2 2,290 Último mensaje 11 Junio 2010, 21:52 pm
por Riki_89D
[?]duda sobre mi programa en c++
Programación C/C++
rocker25 6 3,779 Último mensaje 13 Junio 2010, 18:44 pm
por rocker25
Ayuda por favor; duda con pequeño programa de C
Programación C/C++
feuersee 1 1,640 Último mensaje 5 Diciembre 2014, 00:10 am
por Kherom
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines