#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
int gans[20]={43575, 87565, 33256, 92394, 12839, 30956, 23595, 21983, 10223, 65805, 000001, 32998, 47899, 56688, 55442, 63363, 65897, 12758, 32546, 42536};
double premios[]={500.00, 700.00, 800.00, 900.00, 1200.00, 1500.00, 1800.00, 2000.00, 2100.00, 2300.00, 2800.00, 3000.00, 3200.00, 3500.00, 4000.00, 10000.00, 100000.00, 200000.00, 500000.00, 1000000 };
int bolcliente, i;
cout<<"Introduzca su numero de boleto: ";
cin>>bolcliente;
if(bolcliente==gans[0]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[0]<<" pesos";}
if(bolcliente==gans[1]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[1]<<" pesos";}
if(bolcliente==gans[2]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[2]<<" pesos";}
if(bolcliente==gans[3]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[3]<<" pesos";}
if(bolcliente==gans[4]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[4]<<" pesos";}
if(bolcliente==gans[5]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[5]<<" pesos";}
if(bolcliente==gans[6]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[6]<<" pesos";}
if(bolcliente==gans[7]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[7]<<" pesos";}
if(bolcliente==gans[8]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[8]<<" pesos";}
if(bolcliente==gans[9]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[9]<<" pesos";}
if(bolcliente==gans[10]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[10]<<" pesos";}
if(bolcliente==gans[11]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[11]<<" pesos";}
if(bolcliente==gans[12]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[12]<<" pesos";}
if(bolcliente==gans[13]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[13]<<" pesos";}
if(bolcliente==gans[14]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[14]<<" pesos";}
if(bolcliente==gans[15]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[15]<<" pesos";}
if(bolcliente==gans[16]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[16]<<" pesos";}
if(bolcliente==gans[17]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[17]<<" pesos";}
if(bolcliente==gans[18]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[18]<<" pesos";}
if(bolcliente==gans[19]) {cout<<"Felicidades, haz ganado el premio de: "<<premios[19]<<" pesos";}
else{cout<<"Lo sentimos, no haz ganado premio alguno, suerte para la proxima"<<endl; }
system("pause");
}
嗨,你能帮我解决一下这个问题吗?如你所见,这个程序是西班牙语,它要求用户输入他的乐透票号,如果他是胜利者(阵列gans中的任何数字),那么打印一条消息,如果他没有赢得消息应该打印出另一条消息,确实如此,但如果他是胜利者,即使他赢了也会打印其他条件,你能帮我解决这个错误吗?
答案 0 :(得分:1)
else
仅指其正上方的if
。让我们说bolcliente==gans[10]
。该程序检查每个条件。当它到达bolcliente==gans[19]
时,它发现不,它不相等,因此它运行cout<<"Lo sentimos, ... "
。
答案 1 :(得分:0)
除了第一个else
之外,您需要在if
之前添加{{1}}。
答案 2 :(得分:0)
如果有50个数字而不是20个,该怎么办? 100个数字而不是20个?你会写100次所有这些陈述吗? 1000件物品怎么样?您将以编写代码的方式使自己疲惫不堪。
以这种方式思考 - 要么找到了物品,要么找不到物品。因此有两种情况。继续阅读这些信息,考虑如何使用这一点来重写if / else。
这是相同的代码,采用更加理智的方法(它将解决您的问题):
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
int gans[]={43575, 87565, 33256, 92394, 12839, 30956, 23595, 21983, 10223, 65805,
000001, 32998, 47899, 56688, 55442, 63363, 65897, 12758, 32546,
42536};
const int numGans = sizeof(gans) / sizeof(gans[0]);
double premios[]={500.00, 700.00, 800.00, 900.00, 1200.00, 1500.00, 1800.00,
2000.00, 2100.00, 2300.00, 2800.00, 3000.00, 3200.00, 3500.00,
4000.00, 10000.00, 100000.00, 200000.00, 500000.00, 1000000
};
int bolcliente, i;
cout<<"Introduzca su numero de boleto: ";
cin>>bolcliente;
int* pGans = std::find(gans, gans + numGans, bolcliente);
// found an item
if ( pGans != gans + numGans )
{
int whichOne = std::distance(gans, pGans);
cout << "Felicidades, haz ganado el premio de: "<<
premios[whichOne]<<" pesos";
}
else
// didn't find the item
cout<<"Lo sentimos, no haz ganado premio alguno, suerte para la proxima"
<< endl;
}
注意使用find()。如果找不到该项,则返回的指针将指向最后一个有效项之后的指针。
如果找到了该项,那么为了得到找到的那个,我们调用std :: distance()来计算第一个项和找到的项之间的项数。
底线是这个 - 如果你看到自己一遍又一遍地写同样的东西(在你的情况下是20次),唯一的区别是这里的变量或数字或代码的模式是相似的,那么现在是时候查看代码,看看它是否可以用更短的方式重写。
即使您无法考虑使用算法,也可以编写for循环,直到找到正确的数字为止。
bool found = false;
for (int i = 0; i < numGans && !found; ++i)
{
if (gans[i] == bolcliente)
{
cout << "Felicidades, haz ganado el premio de: " << premios[i] << " pesos";
found = true;
}
}
if ( !found )
cout << "Lo sentimos, no haz ganado premio alguno, suerte para la proxima" << endl;