Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: andrecid en 16 Marzo 2015, 22:36 pm



Título: Ayuda con un asunto en c++
Publicado por: andrecid en 16 Marzo 2015, 22:36 pm
Hola, quería  preguntar una duda que tengo en c++ si no fuese una molestia bueno la verdad , es que me gusta bastante la programación y cuando me he adentrado a ella lo he decidido hacer mediante c++, la cosa es :

¿Cómo podría hacer que el usuario ingresase nombres y dependiendo de esos nombres pase algo?

Es decir el usuario ingresa por ejemplo : Julio o Andres o Paula y dependiendo de los nombres aparece un mensaje ( con cout ).

La verdad es que solo se me ocurre con if pero es que si tengo que hacer 40 nombres con if me puedo morir. ¿Me pueden decir otra forma de hacerlo sin if?

Ahora les quiero decir que esto no son mis deberes ni nada por el estilo, es más yo estoy estudiando programación por mi cuenta, si ustedes me ayudan se lo agradeceré si no me ayudan, ya me buscare otra forma de aprender.

Digo esto por que se que no les gusta resolver trabajos de nadie ( a mi tampoco me gustaría) y no quiero que ustedes piensen mal de mi.

Espero sus respuestas. Gracias .


Título: Re: Ayuda con un asunto en c++
Publicado por: ivancea96 en 16 Marzo 2015, 22:44 pm
Código
  1. string names[]={"Jose","Ivan","Manuel"};
  2. string msg[] = {"Hola","Adios","Bye"};
  3. string t;
  4. getline(cin,t);
  5. for(int i=0; i<3; i++)
  6.    if(names[i]==t){
  7.        cout << msg[i] << endl;
  8.        break;
  9.    }

Es un ejemplo.


Título: Re: Ayuda con un asunto en c++
Publicado por: Ariel_10 en 17 Marzo 2015, 14:49 pm

Hola bro, tambien puedes hacer algo como esto:

1. string names[] = {"Jose","Ivan","Manuel"};
2. string msg[]    = {"Hola","Adios","Bye"};

3. int n;

4. for(int i = 0; i <= names.length(); i++)
5.    cout << "Escriba el numero correspondiente con su nombre" + i.ToString() +"-" 
                    + names << endl;
cin>> n;

cout<<msg[n] + [n];
break;

NOTA: aca ahora no tengo el c++ instalado..puede que el i.ToString() no sea asi, tengo q corroborarlo, hace mucho tiempo lo hice...si no..InToStr(i)..prueba


Otra opcion es hacerlo con la sentencia switch, pero eso depende...observa que en este caso los arrays tienen la misma longitud...si no la tienen, da error...de no tener la misma longitud, lo haria con la sentencia switch

saludos

   


Título: Re: Ayuda con un asunto en c++
Publicado por: ivancea96 en 17 Marzo 2015, 15:10 pm
Recuerda colocar las etiquetas GeSHi.
No existe "names.length()".
Es to_string(), de la librería string.

cout<<msg[n] + [n];
msg[n] + [n]?

Switch no sirve para strings ni cadenas.


Título: Re: Ayuda con un asunto en c++
Publicado por: eferion en 17 Marzo 2015, 15:34 pm
Es to_string(), de la librería string.

Mejor que eso... en C++, los tipos básicos, entre los que se incluye int, no tienen métodos. i.ToString, siendo "i" un int, no va a compilar en ningúna versión de C++.


Título: Re: Ayuda con un asunto en c++
Publicado por: Ariel_10 en 17 Marzo 2015, 16:02 pm
Recuerda colocar las etiquetas GeSHi.
No existe "names.length()".
Es to_string(), de la librería string.
msg[n] + [n]?

Switch no sirve para strings ni cadenas.

hace 1 año q no programo en c++...salte para C#.Net

cuando hable del switch decia hacer algo como

/*****/
4. for(int i = 0; i <= names.length(); i++)
5.    cout << "Escriba el numero correspondiente con su nombre" + i.ToString() +"-"
                    + names << endl;
cin>> n;

switch(n)
{
   case 0:
   cout<<msg[0] + names[0]; //Aqui en el post anterior me comi el names...sorry
   break;

/*****/
}

usaria el swicth...por ejemplo...si ademas mostrar la cadena...necesitara hacer algo mas...ademas de que me da la posibilidad de escoger que mensage mostrar, o sea, msg[1], msg[2], o como sea, claro, no mayor que la longitud del array...tratare de ser mas preciso para mi proximo post...pero por ahora dire q C++ tiene una libreria para generar numeros aleatorios en un intervalo tando de espacio como de tiempo...o sea...en 4 seg dame un numero entre 0 y la longitud del array msg...seria mas cool porque a la persona no le saldria el mismo mensage siempre...que creen?


Título: Re: Ayuda con un asunto en c++
Publicado por: eferion en 17 Marzo 2015, 16:24 pm
hace 1 año q no programo en c++...salte para C#.Net

El problema es que plantear una solución que no sólo no es válida, sino que además puede llevar a confusión no es demasiado ético.

Si tienes dudas, hay compiladores online en los que puedes poner tu fragmento de código y verlo funcionar (con ciertas limitaciones, pero ahí están). Sin embargo, lo dicho, no deberías poner una solución basada en un híbrido entre .NET y C++.

Por otro lado, como te ha comentado ivancea, el código debe estar decorado con las etiquetas correspondientes y no, no es un capricho, es una de las normas del foro, por lo que te agradeceríamos su cumplimiento.

Por otro lado, no hace falta ningún switch en el código. Para que el código funcione necesitas dos índices: Uno para mostrar el nombre y otro para mostrar la frase. El primero lo estas obteniendo con el for y es la variable "i", mientras que el segundo lo introduce el usuario en la variable "n":

cuando hable del switch decia hacer algo como

Código
  1. for(int i = 0; i <= names.length(); i++)
  2. {
  3.  cout << "Escriba el numero correspondiente con su nombre" << i  << "-" << names << endl;
  4.  cin >> n;
  5.  cout << msg[n] << names[i]; //Aqui en el post anterior me comi el names...sorry
  6. }
  7.  


pero por ahora dire q C++ tiene una libreria para generar numeros aleatorios en un intervalo tando de espacio como de tiempo

C++ tiene funciones para generar números aleatorios... y te los genera cuando se los pides. No se de dónde has sacado eso de que (si no te he entendido mal) tu le pides un número ahora y dentro de 4 segundos te lo facilita.

Y digo que tiene funciones porque en la versión C++11 el algoritmo de generación de números aleatorios es configurable (se puede elegir entre una serie de motores ya existentes o diseñar un motor propio). Pero aún así, lo dicho, el número te lo genera en cuanto lo pides.

seria mas cool porque a la persona no le saldria el mismo mensage siempre...que creen?

Pudiera ser, pero según lo que comenta el usuario, las respuestas deben ser fijas, es decir, para el nombre X debe aparecer el texto Y... los números aleatorios no tienen cabida en su ejercicio.