问题描述
这段代码有什么问题?我一直在尝试,但是我不知道为什么不能在=
语句中使用==
或if
。
#include <vector>
#include <cstdlib>
#include <time.h>
using namespace std;
/* I am trying to make the program output a periodic t symbol
so then it asks the user what the element is */
void symbols(std::vector<std::string> alcalinos) {
alcalinos = { "H","Li","Na","K","Rb","Cs","Fr" };
std::string elemento;
cout << "Introduce el elemento correspondiente al símbolo(en minusculas) : \n";
srand(time(NULL));
int random = rand() % 7;
cout << alcalinos[random];
cin >> elemento;
if ((alcalinos = "H") && (elemento = "hidrogeno")) {
cout << "correcto\n";
}
else if ((alcalinos = "Li") && (elemento = "litio")) {
cout << "correcto\n";
}
else if ((alcalinos = "Na") && (elemento = "sodio")) {
cout << "correcto\n";
}
else if ((alcalinos = "K") && (elemento = "potasio")) {
cout << "correcto\n";
}
else if ((alcalinos = "Rb") && (elemento = "rubidio")) {
cout << "correcto\n";
}
else if ((alcalinos = "Cs") && (elemento = "cesio")) {
cout << "correcto\n";
}
else if ((alcalinos = "Fr") && (elemento = "francio")) {
cout << "correcto\n";
}
else {
cout << "incorrecto\n";
}
int main(); {
void symbols();
}
解决方法
我必须心情愉快,我添加了注释以表明您犯的错误
void symbols() { // no parameter for function
// local declaration of vector instead of parameter
std::vector<std::string> alcalinos = { "H","Li","Na","K","Rb","Cs","Fr" };
std::string elemento;
cout << "Introduce el elemento correspondiente al símbolo(en minusculas) : \n";
int random = rand() % 7;
cout << alcalinos[random];
cin >> elemento;
// compare alcalinos[random] not alcalinos
// use == not =
if ((alcalinos[random] == "H") && (elemento == "hidrogeno")) {
cout << "correcto\n";
}
else if ((alcalinos[random] == "Li") && (elemento == "litio")) {
cout << "correcto\n";
}
else {
cout << "incorrecto\n";
}
} // missing }
int main() { // no ; after main()
srand(time(NULL)); // seed RNG once in main
symbols(); // no void before function call
}
当您犯了很多错误时,这意味着您试图一次编写太多代码。如果您是初学者,则一次只添加一行代码。并在添加的每一行之后测试代码。这样,您只想一次解决一个问题。您会发现这种方式更加容易。