2014-04-02 121 views
0
#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"); 
} 

嗨,你能帮我一下吗?这个程序是西班牙文,你可以看到,它要求用户输入他的乐透彩票号码,如果他是一个赢家(阵列中的任何号码),那么打印一条消息,如果他没有赢得消息应该用另一条信息打印,但是如果他是赢家,即使他赢了也会打印其他条件,你能帮我解决这个错误吗?如果其他条件的错误

+1

你几乎可以用一个'std :: find'调用和一个if-else替换所有的巨块。 – chris

+0

我还是不知道很多功能,这就是为什么即时通讯使我可以,但是,谢谢... –

回答

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; 
+0

qwow,这就是我猜想的很多工作,但即时通讯仍然在第二学期,我不知道很多功能,但是谢谢,生病试图了解你的代码 –

+0

看看for循环的第二个例子。你应该知道什么是for()循环,如果这是你的第二个学期。它应该很简单,可以理解。如果你大声说出那个循环中的内容,那应该是有道理的。 – PaulMcKenzie

+0

大声笑当然,我知道什么是循环,但我不知道一些其他功能,如sizeof或std :: fin,即时通讯阅读它试图了解他们,但多数民众赞成为什么我的代码是非常简单的,因为那就是这样我可以做到这一点... 所以,你知道我如何解决我的问题在我自己的代码? –

1

else仅指其正上方的if。比方说bolcliente==gans[10]。该程序检查每个条件。当它到达bolcliente==gans[19]时,它发现否,它不相等,所以它运行cout<<"Lo sentimos, ... "

+0

哦,我明白了,但是当我在每一个后面添加一个else,如果它显示许多“其他”,我有,在这种情况下,它打印19次cout <<“lo sentimos ...”,所以我该如何修复它? –

0

您需要在除第一个之外的每个if之前添加else