cuando compilo el programa, dice que 'd' no es un int, así que si alguien tiene idea de cómo cambiarlo a un int o hacer que funcione.
#include <iostream> using namespace std; int main() { int k; cin >> k; if(k==2) { cout << "we have 3 main sub companies and other 2 companies that are growing\n"; cout << "the 3 main sub companies are\n"; cout << " a-Aegre Food and Drinks\n"; cout << " b-Future Tech\n"; cout << " c-Hope Energy\n"; char d[]={'a','b','c'}; int d[0]=1,d[1]=2,d[2]=3; cout << "In which one of our companies do you want to invest plase enter the letters befor them "; cin >>d; switch(d)//here it says d is n't an int// { case a:cout <<"we have 5 bonds"; case b:cout <<"we have 3 bonds"; case c:cout <<"we have 2 bonds"; } } }
Sería más fácil resolver este problema sin una matriz:
#include <iostream> using namespace std; int main() { int k; cin >> k; if(k==2) { cout << "We have 3 main sub-companies and other 2 companies that are growing.\n"; cout << "The 3 main sub-companies are\n"; cout << " a-Aegre Food and Drinks\n"; cout << " b-Future Tech\n"; cout << " c-Hope Energy\n"; char d; cout << "In which one of our companies do you want to invest? Please enter the letters before them: "; cin >> d; switch(d) { case 'a': cout << "We have 5 bonds"; break; case 'b': cout << "We have 3 bonds"; break; case 'c': cout << "We have 2 bonds"; break; default: cout << "Invalid input!\n"; } } }
Un char
es un tipo entero, que se puede usar en una declaración de switch
.
Tenga en cuenta que estoy usando caracteres literales en las etiquetas de case
y minúsculas de la declaración de switch
. Además, si no desea pasar al siguiente caso, debe usar break
después de cada caso en la declaración de switch
.
¿Parece estar tratando de hacer que d
sea una matriz de caracteres, una matriz de números enteros y un solo valor, todo al mismo tiempo? Creo que lo que realmente quieres hacer es leer un solo carácter y compararlo en un interruptor. No necesitas una matriz en absoluto:
#include <iostream> using namespace std; int main() { int k; cin >> k; if(k==2) { cout << "we have 3 main sub companies and other 2 companies that are growing\n"; cout << "the 3 main sub companies are\n"; cout << " a-Aegre Food and Drinks\n"; cout << " b-Future Tech\n"; cout << " c-Hope Energy\n"; char company; cout << "In which one of our companies do you want to invest plase enter the letters befor them "; cin >>company; switch(company) { case 'a':cout <<"we have 5 bonds"; break; case 'b':cout <<"we have 3 bonds"; break; case 'c':cout <<"we have 2 bonds"; break; } } }
Tenga en cuenta que necesita un break
entre sus casos; a
se activarán los tres casos.
Si lo que intentaba hacer era asignar una carta de empresa a un número, entonces lo que necesita es un std::map
:
#include <iostream> #include <map> using namespace std; int main() { int k; cin >> k; if(k==2) { cout << "we have 3 main sub companies and other 2 companies that are growing\n"; cout << "the 3 main sub companies are\n"; cout << " a-Aegre Food and Drinks\n"; cout << " b-Future Tech\n"; cout << " c-Hope Energy\n"; std::map<char, int> companies = {{'a', 1}, {'b', 2}, {'c', 3}}; char company; cout << "In which one of our companies do you want to invest plase enter the letters befor them "; cin >>company; auto companyNumber = companies.find(company); if (companyNumber == companies.end()) { cout << "invalid company\n"; return 1; } switch(companyNumber->second) { case 1:cout <<"we have 5 bonds"; break; case 2:cout <<"we have 3 bonds"; break; case 3:cout <<"we have 2 bonds"; break; } } }
d
es una matriz de caracteres, puede cambiar elementos como este, d[0] = '1', d[1] = '2', d[2] = '3';
Pero no puedes hacerlo así, int d[0]=1,d[1]=2,d[2]=3;
porque d
ya está declarado como una matriz de caracteres. No puedes declararlo en otra variable.
Algunos ejemplos:
char d[]={'a','b','c'}; // char array d[0]='1',d[1]='2',d[2]='3'; // update char array cin >>d[0]; // you can also take input like this (cin >> d[0]) or (cin >> d[1]) or (cin >> d[2]). switch(d[0]) // pass input { case 'a':cout <<"we have 5 bonds"; case 'b':cout <<"we have 3 bonds"; case 'c':cout <<"we have 2 bonds"; }