tengo un problema con este programa.

Iniciado por Danyel_Casvill, 9 Noviembre 2010, 23:10 PM

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

Danyel_Casvill

#include <iostream.h>
#include <conio.h>
int main()
{
int n;
cout<<"ingrese el numero: ";
cin>>n;
if (n < 100)
{
  cout<<"el numero es menor que 100";
}
else if (n > 100)
{
  cout<<"el numero es mayor que 100";
}
else if (n == 100)
{
  cout<<"el numero es igual a 100";
}
else
{
  cout<<"error, el numero ingresado es invalido";
}
getch();
}

Hola, el problema es que aun no se utilizar muy bien que digamos las sentencias if, else y else if, enteonces, lo que creo mal quedo, fue la sentencia else, pues cuando ingreso alguna letra, el programa dice que el numero ingresado es mayor que 100, cuando deberia decir: error, el numero ingresado es invalido.

Gracias por sus respuestas, bye.
adada

xassiz~

#1
Para empezar, usa el resaltado de sintaxis [code=cpp][/code].

Veamos, si tu creas una variable int contendrá valores enteros.

Si ingresas una letra, va a ser convertida a su valor numérico (en este caso ASCII).

Por ejemplo, si ingresas a la variable contendrá 97.


Luego, conio.h no es estándar, no la uses, y menos para hacer una "pausa" innecesaria.

Y cambia:
Código (cpp) [Seleccionar]

#include <iostream.h>


Por:
Código (cpp) [Seleccionar]

#include <iostream>



Saludos!

Danyel_Casvill

mmmm, ya, entonces debo usar float??  si es asi, el problema sigue, solo que ahora dice que el numero es menor que 100, y pues gracias, no era necesario poner .h (apenas me vengo a dar cuenta XDDD).

respecto a lo de la "pausa", entonces que debo utilizar para la pausa??
por que si no lo utilizo, simplemente no alcanzo a ver el resultado. 

Gracias, bye.
adada

bomba1990

#3
Yo no se mucho de este tema, estoy aprendiendo apenas a progrmar en c++ pero creo que lo que te dijo fue que la variable de texto tiene un equivalente en codigo ascii y lo que introduscas es interpretado como tal como numeros, ahora abria que buscar una funcion que solo agarre numeros, no estoy muy seguro pero creo que con scanf, vamos a esperar que u guru nos diga si es asi o no.

mas o menso digo asi

scanf ("%d", &n);
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

flony

#include <iostream>
using namespace std;
int main()
{
int n;
cout<<"ingrese el numero: ";
cin>>n;
if (n < 100)
{
  cout<<"el numero es menor que 100 \n";
}
else if (n > 100)
{
  cout<<"el numero es mayor que 100 \n";
}
else if (n == 100)
{
  cout<<"el numero es igual a 100 \n";
}
else
{
  cout<<"error, el numero ingresado es invalido";
}
system ("PAUSE");
return 0;
}
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Danyel_Casvill

#5
hey, flony, iualmente sigue el problema (aun asi gracias por aportar), bomba1990, gracias, segun lo que me dices, lo que entiendo es que el programa me lee las letras como si fuesen numeros por lo cual me da x o y resultado (numero), entonces tu me dices que con scanf puedo arreglar ello pero en que libreria puedo encontrarlo??

Gracias mens, bye.

con stdio??
adada

bomba1990

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
int modulo(int x, int y);
int main(void)
{
    int var1;
       
    scanf("%d",&var1);
    if(var1<100)
    {
         printf("el numero es menor que 100 %d",var1);
    }
    else if(var1==100)
    {
         printf("el numero es 100");
    }
    else if(var1>100)
    {
         printf("El numero es mayor que 100");
    }else{
          printf("el numero es invalido");
    }

}


bueno acomode la funcion asi aunque igual me da como salida cuando meto un caracter el que sea y me alamcena un 2, estuve leyendo que la forma de para validar eso como es debido es tratarlo como char y despues anlizar cada caracter a ver is es numerico o no.
lee sobre estas funciones a ver si te sirven
stdlib (atoi, atof) y ctype (isdigit, isnumber)
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

ShadowStorm

Cita de: danyhack en  9 Noviembre 2010, 23:10 PM
#include <iostream.h>
#include <conio.h>
int main()
{
int n;
cout<<"ingrese el numero: ";
cin>>n;
if (n < 100)
{
  cout<<"el numero es menor que 100";
}
else if (n > 100)
{
  cout<<"el numero es mayor que 100";
}
else if (n == 100)
{
  cout<<"el numero es igual a 100";
}
else
{
  cout<<"error, el numero ingresado es invalido";
}
getch();
}

Hola, el problema es que aun no se utilizar muy bien que digamos las sentencias if, else y else if, enteonces, lo que creo mal quedo, fue la sentencia else, pues cuando ingreso alguna letra, el programa dice que el numero ingresado es mayor que 100, cuando deberia decir: error, el numero ingresado es invalido.

Gracias por sus respuestas, bye.

Podrías realizarlo de la siguiente manera:

Código (c++) [Seleccionar]
#include <iostream.h>
int main()
{
int n = 0;
cout<<"ingrese el numero: ";
cin>>n;
if(cin.peek() != '\n')
{
cout<<"error, el numero ingresado es invalido"<< endl;
}
else
{
if (n < 100)
     cout<<"el numero es menor que 100";
else if (n > 100)
     cout<<"el numero es mayor que 100";
     else if (n == 100)
cout<<"el numero es igual a 100";

}
cout<<endl<<endl;
cout<< "Presiona ENTER para salir";
cin.sync();
cin.get();

return 0;
}


Averigua sobre cin.peek()

Danyel_Casvill

hey mens, gracias, de una vez me voy a poner a averiguar sobre cin.peek() y sobre stdlib (atoi, atof) y ctype (isdigit, isnumber).

Mucgas gracias, bye.
adada

flony

#9
ya se q paso el tiempo pero estaba revisando cosas viejas del foro para aprender y salio algo q te puede interesar
http://foro.elhacker.net/programacion_cc/como_hacer_para_introducir_solo_numeros-t304655.0.html
pero solo serviria si pones un limite a la cantidad de numeros
si un problema no tiene solucion entonces no es un problema...es algo inevitable