Dev - C++ - Problema con los "strings"

   
Vista:
Imágen de perfil de Ilich

Problema con los "strings"

Publicado por Ilich ilichh1@hotmail.com (1 intervención) el 18/05/2014 00:30:10
Buenas a quien se moleste en leer mi petición.

Como todavía no se muy bien como usar el foro, espero no estar poniendo esto en una sección equivocada.

Mi problema es el siguiente; Estoy haciendo un programa en Dev C++, en el cual el usuario introduce un símbolo de la tabla periódica y el programa le devuelve la información básica de dicho elemento, es decir, si el usuario introduce "H" el programa le devuelve "Hidrógeno: Peso atómico: --- Valencia: ---" cosas de ese tipo, en si ese no es el problema, el problema es que no sé como comparar los textos.

Lo que quiero decir es que no sé como decirle al programa que elemento están pidiendo, lo intente con "if" pero al final no se pudo, después lo intenté con "switch" pero no podía usar en los casos letras (no más de 2 letras).

Lo que estoy pensando ahora mismo es usar los "strings" pero no sé como comparar 2 textos, para que me entiendan mejor les dejo un ejemplo de lo que quería hacer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream.h>
#include<locale.h>
#include<conio.h>
using namespace std;
 
int main () {
 
         setlocale(LC_CTYPE, "Spanish");
 
         cout<<"\t\t\t<<Tabla Periódica>>\n";
         cout<<"\n";
         cout<<"Introduzca el símbolo del elemento que desea conocer"<<endl;
         cout<<"(Recuerde respetar las mayúsculas y minúsculas)"<<endl;
         cout<<endl;
         char sim[3];
         int sw=0;
 
         cout<<"Símbolo: "; cin>>sim; cout<<endl;
 
         if (sim[0] == 'H')
         cout<<"Hidrógeno"<<endl;
 
         else if (sim[0] == 'H' && sim[1] == 'e')
         cout<<"Helio"<<endl;
 
         else if (sim[0] == 'L' && sim[1] == 'i')
         cout<<"Litio"<<endl;
 
         else
         cout<<"Error"<<endl;
 
 
         getch();
}

Como pueden ver no puedo decir "Si sim es igual a 'Li' imprime 'Litio'"

Lo que yo quiero es que me digan si existe una manera de comprar los strings, es decir:

"Si sim es igual a He imprime Helio" Pero hacer esto, usando strings, no con los arrays (o arreglos).

Gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con los "strings"

Publicado por Pico (24 intervenciones) el 18/05/2014 13:46:34
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

Problema con los "strings"

Publicado por vangodp (287 intervenciones) el 19/05/2014 20:48:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
 
//Creamos Una estructura que alberga los datos, si solo va imprimir un string sirve perfectamente ;)
struct T {
    string susDatos;
    void getDatos(){ cout << susDatos << endl; }
};
 
 
int main (){
    //Creamos 5 objetos de la tabla, no voy a crear mas por que es desnecesario, pero tu los creas tantos como quieras o elementos aya. ;)    
    T tabla[5];
 
    //Rellenamos los datos, la posicion cero no la usamos ;)
    tabla[0].susDatos = " No existe Datos en esta posicion de la tabla no la usamos ;)";
    tabla[1].susDatos = " Nombre: Hidrogeno \n Numero atomico: 1 \n blablabla \n ..... \n mas blablabla...  ";
 
    //Preguntamos cual quiere elejir, la propia pregunta sirve de if en este caso.Solo puedes elejir uno ya que no hay mas que un dato relleno pero cuando este listo puedes seleccionar cualquier elemento por su numero.    
    cout << "Elija un elemento de la tabla valido... Que sea el \"1\" o falla, no la tenemos lista aun XDlol" << endl;
    int opt = 0;
    cin>> opt;
 
    //Aquí simplemente mostramos los datos, todo muy simples y sin ifs de por medio jaja
    tabla[opt].getDatos();
 
    cin.ignore();
    return 0;
}

que te parece usar estructuras? XD
Creo una struct simples llamada T, lo único que contiene es un string y una función que imprime ese string. Luego creo una tabla de ese tipo de estructuras. La posicion 0 no la usamos ya que en la tabla periodica no existe ese elemento 0 o por lo menos me va pedo lo de los elementos jaja.
usamos la uno para el Hidrogeno que corresponde con el 1, lo unico que debemos hacer es pasar esos datos a su string y ¡Vuala! XD
Usamos la funcion getDatos para imprimir.
Todo muy simples ^^.
Si quieres trabajar con esos datos ya es un poco mas complicado por que tendrias que hacer una especie de constructor o algo asi para las variables de la estructura pero tampoco seria nada del otro mundo XD.

Como ves en el ejemplo solo rellenas las posiciones tabla[2].susDatos ="susdatos", tabla[3].susDatos ="susdatos", tabla[0].susDatos ="susdatos",...

Espero que te sirva XDD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

Problema con los "strings"

Publicado por vangodp (287 intervenciones) el 19/05/2014 21:58:58
No haga caso de mi primer comentario jaja:
Creo que lo que quieres es esto y es muy simples:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main () {
    string tabla;
 
	cout << "Entre opcion"<<endl;
	cin>>tabla;  //Entrar con H para hidrogeno o He para Helio tal cual.
 
	//Hidrogeno
	if ( tabla == "H" ){
        cout << "Nombre: Hidrogeno \n Numero atomico: 1 \n blablabla \n ..... \n mas blablabla..." << endl;
	}
 
	//Helio
	if ( tabla == "He" ){
        cout << "Nombre: Helio paso de escribir, pon tu los datos jaja" << endl;
	}
 
 
	cin.ignore();
	return 0;
}

si quieres guardar una formula en un char estas haciendo mal por que char solo guarda una letra.
Para eso mejor usas string:
string frase = "He";
if (frase=="He"){ //< Es un string pon comillas doble ;)
cout << correcto;
}

Eso es lo que creo que buscas, sino sigue preguntando. Lo de arriba es variación mía jaja no me hagas caso que estoy fatal de la cabeza jaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar