Ayuda c++

Iniciado por Soulmaquine, 20 Marzo 2015, 21:48 PM

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

Soulmaquine

Hola gente.
Tengo un problema que no logro detectar, en sí necesito que una variable que es un char entre en ese switch, pero no lo hace, me muestra solo el default. Ya la pase a código ASCII, porque así me lo pedía el enunciado. Y también para ver si daba lo hice en funciones pero tampoco. La verdad no sé que pasa. Gracias por cualquier cosa que puedan comentarme. Esto es el código:


#include <iostream>
#include <windows.h>

using namespace std;


int func(int num);
int main (int num)

{

char code[3];

cout<<"ingrese el codigo de la compra que desea"<<endl;
cout<<endl;
for (int x=0; x<3; x++)
{
cin>>code[x];

}
code[0]='A';
code[1]='0';
code[2];

num=code[2]-48;
cout<<num;
// num=code[2];


system("pause");

func(num);

}


int func(int num)
{
switch(num)
{
case 1: cout<<"El código es de las papitas"<<endl;
break;
case 2: cout<<"El código es de platanitos"<<endl;
break;
case 3: cout<<"El código es de chocolina pequeña"<<endl;
break;
case 4: cout<<"El código es de chocolina grande"<<endl;
break;
case 5: cout<<"El código es de maní"<<endl;
break;
case 6: cout<<"El código es de chitos"<<endl;
break;

default: cout<<"El codigo es erroneo"<<endl;
}
return 0;
}



NOIS

Lo he probado y si entra en el switch, no se porque podría darte error a ti, aunque hay cosas que no entiendo del código, como crear el array code, leer todos sus valores por teclado para asignar los dos primeros después por código y solo utilizar el último valor... no se si el código real será más largo o si ese es el código entero, pero aun así no le veo mucho sentido.

PD: Te recomiendo no usar mucho ese de system("pause"); ya que solo te serviría en Windows, es más práctico usar cin.get();

Saludos!
NOIS dev7

Soulmaquine

En realidad si, el código real es más largo, con el switch era con lo que tenía problema. Y si, también me pareció raro asignarle el valor a las dos primeras pero utilizar la última, pero así es el problema que me plantearon. Pero no entiendo por qué te da a ti y a mi no, a mí sólo me muestra: "El codigo es erroneo" independientemente del número que digite. Y gracias ya reemplazo el system("pause").

Saludos NOIS, gracias por tu tiempo.

NOIS

Se me ocurre que, aunque raro, podría haber algo en el resto de tu código que por algún motivo interfiera con la entrada al switch o algo parecido, podrías poner el resto del código para analizar mejor el problema.

Saludos!
NOIS dev7

engel lex

no entiendo por qué te complicas si puedes hacer

Código (cpp) [Seleccionar]
switch(code[2])
{
case '1': cout<<"El código es de las papitas"<<endl;
break;
case '2': cout<<"El código es de platanitos"<<endl;
break;
case '3': cout<<"El código es de chocolina pequeña"<<endl;
break;
case '4': cout<<"El código es de chocolina grande"<<endl;
break;
case '5': cout<<"El código es de maní"<<endl;
break;
case '6': cout<<"El código es de chitos"<<endl;
break;

default: cout<<"El codigo es erroneo"<<endl;
}


o mejor aún

Código (cpp) [Seleccionar]

func(code[2]);


int func(char num)
{
switch(num)
{
case '1': cout<<"El código es de las papitas"<<endl;
break;
case '2': cout<<"El código es de platanitos"<<endl;
break;
case '3': cout<<"El código es de chocolina pequeña"<<endl;
break;
case '4': cout<<"El código es de chocolina grande"<<endl;
break;
case '5': cout<<"El código es de maní"<<endl;
break;
case '6': cout<<"El código es de chitos"<<endl;
break;

default: cout<<"El codigo es erroneo"<<endl;
}
return 0;
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Soulmaquine

No lo podía hacer así porque en el enunciado me pedía que lo pasará a ASCII, y eso hice al ponerlo así: num=code[2]-48; y no directamente en el switch. Pero ya lo terminé, muchas gracias por responderme, después de mucho intentar si me entró en el switch.

Saludos a los dos, gracias nuevamente.  ;D

engel lex

:S eso es ascii :S '1' es acii en cambio 1 es decimal XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Soulmaquine

Según mi profesor lo debía hacer así, yo investigue pero de todas maneras lo hice como se suponía que él exigía.