Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





If/else ¿que Falla Aqui Por Dios?

Iniciado por J_F_NASH, 24 de Septiembre de 2003, 10:32:27 PM

« anterior - próximo »

J_F_NASH

 Buf!, a ver, el menu es muy bueno, es justo lo que quiero hacer. Ya me gustaria saber hacerlo a mi!.

Hay un termino que desconozco completamente ¿atoi? ¿eso que hace exactamente?

Y otra cosa ¿existe algún, no se como llamarlo, "diccionario de C++" donde busque culaquier termino y me diga lo que es y como emplearlo? aprendería mas rápido y os daría menos la vara. :(





S2.  

AgeR

Cita de: "J_F_NASH"Hay un termino que desconozco completamente ¿atoi? ¿eso que hace exactamente?

Y otra cosa ¿existe algún, no se como llamarlo, "diccionario de C++" donde busque culaquier termino y me diga lo que es y como emplearlo? aprendería mas rápido y os daría menos la vara. :(
atoi significa "ascii to integer" y lo que hace es que a partir de un string que tú le pases devuelve un número entero, o 0 si no ha podido convertir la cadena.

Sobre el "diccionario" puede bastarte la MSDN. La tienes en versión online si quieres : MSDN Online.

Venga, saludos!

J_F_NASH

 Gracias AgeR, MSDN online parece que me será util, aunque los resultados de las busquedas suelen ser mastodonticos. Ahora creo que tengo demasiada info.  (uoh)

Respecto al codigo de menu principal tengo bastantes dudas:

A) Voy a probar atoi, de manera que escribo el siguiente código:

#include
#include


void main()
{
   int x;
   cin >> x;
   int i = atoi(x);

   cout << "Valor introducido: " << x <<"\n" <<"Pasado a entero: " << i <<"\n";
}

Me da este error:
error C2065: 'atoi' : undeclared identifier

Ya se que el código no tiene mucha lógica "yo le paso, por teclado, un entero y le digo que me lo convierta a entero" vamos, que el resultado deberia ser el mismo. Entonces  ¿por que el error?

En tu código la variable "szOpcion[2]" almacena... ¿¿un caracter?? (no lo entiendo, si yo tecleo un nº ¿como almacena el caracter?) que luego es pasado a entero.



B ) Para que se emplea ¿es parte de la biblioteca estandar
¿No se podría hacer el mismo menu con las bibliotecas estandar de C++?

C) En el main "while (MenuPrincipal ())" ¿me podeis decir lo que hace exactamente? ¿es una especie de  bucle estilo "Mientras se esté ejecutando el menu principal... entonces ocurre... ¿qué, qué demonios ocurre?" ?.

D) Ya se que es mucho pedir (y un coñazo) pero, si podeis, explicadme el código con //comentarios  ;)  o al menos como funciona realmente (para que enumeramos, ...)




S2.

BeRSeRKeR

 Por partes:

  • Te da error en la función atoi porque no has incluído el archivo de cabecera stdio.h. Lo siento se me olvidó :).

    Por otra parte, como te dije en un mensaje anterior, en vez de un array de caracteres, puedes utilizar directamente un entero:

    int iOpcion;
    cin >> iOpcion;


  • El archivo de cabecera conio.h lo adjunté porque es necesario para la función getch, la cual espera la pulsación de una tecla.

  • La línea:
    while (MenuPrincipal ());

    podría haberse escrito:

    while (MenuPrincipal () == true) continue;

    Como puedes ver, el bucle se está reproduciendo mientras MenuPrincipal esté devolviendo true, lo cual ocurre mientras el usuario no escoja la opción de salir (en cuyo caso devuelve false).

    Otra forma de expresar el bucle que puede resultarte más clara:

    bool bEjecutar = true;
    while (bEjecutar == true) bEjecutar = MenuPrincipal();


  • El motivo de la enumeración es debido a que de esta forma el código es más legible y se puede ampliar/modificar más fácilmente que si utilizases un número para identificar cada una de las opciones de menú.
Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

 Por cierto, esto que haces no tiene sentido:

int x;
cin >> x;
int i = atoi(x);


Estás intentando convertir un entero a un entero. Por otra parte, te dará un error de tipos (no se puede convertir int a const char *, o algo así)

Lo correcto en cualquier caso (siempre y cuando quieras utilizar atoi), sería:

char x[TAMAÑO_QUE_TU_DESEES];
cin >> x;
int i = atoi(x);


Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

Cita de: "J_F_NASH"Ya se que el código no tiene mucha lógica "yo le paso, por teclado, un entero y le digo que me lo convierta a entero" vamos, que el resultado deberia ser el mismo. Entonces  ¿por que el error?
Ok, disculpa el mensaje anterior ;)
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

J_F_NASH

 Vaya, mil gracias por la explicación. Lo del bucle tiene su jugo.

CitarTe da error en la función atoi porque no has incluído el archivo de cabecera stdio.h. Lo siento se me olvidó :).
stdio.h no parece necesaria. El menu principal que escribiste funciona perfectamente sin ella, en cambio sigue dando un error 'undeclared identifier' el código sgte:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>

void main()
{
char x[3];
cin >> x;
int i = atoi(x);
cout << "Valor introducido: " << x <<"\n" <<"Pasado a entero: " << i <<"\n";
}

La verdad, no me entra en la cabeza eso que comentas:
CitarPor otra parte, como te dije en un mensaje anterior, en vez de un array de caracteres, puedes utilizar directamente un entero:

int iOpcion;
cin >> iOpcion;

¿A que te refieres?



S2.

J_F_NASH

 Vale, ya se a que te refieres con eso ultimo.

Una cosa mas:
Al principio del código pones "using namespace std"

¿Podría alguien explicarme para que se utliza esto exactamente?



S2.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.