2016-12-06 85 views
0

所以,我剛開始編程。得到了我的第二次任命,但有一件事真的困擾着我。 這個程序應該爲食品雜貨做筆記,當我意識到我不需要變量b並將其刪除時,可以做得很好。再次運行它,然後jumlah [i] * harga [i]總是0. 嘗試替換變量b,程序恢復正常。那麼問題是什麼?C++:這個變量b是做什麼的?

#include <iostream> 
 
#include <iomanip> 
 
#include <windows.h> 
 
#include <ctime> 
 
BOOL gotoxy(const WORD x, const WORD y) { 
 
    COORD xy; 
 
    xy.X = x; 
 
    xy.Y = y; 
 
    return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), xy); 
 
} 
 
using namespace std; 
 
string nonota, namabrg; 
 
char yorno, lanjut; 
 
int jumlah[30], a, b, i; //problem 
 
float diskon, Tharga, pembayaran, kembalian, harga[30], stlhdiskon; 
 

 
int main() 
 
{ 
 
    cout<<fixed<<setprecision(0); 
 
    Tharga=0; 
 
    a=3; 
 
    do 
 
    { 
 
    cout<<"Nomor Nota   : "; 
 
    cin>>nonota; 
 

 

 
     time_t now = time(0); 
 
    cout<< "Tanggal    : "; 
 
     tm* ltm= localtime(&now); 
 
      cout<<ltm->tm_mday<<"-"; 
 
      cout<<1 + ltm->tm_mon<<"-"; 
 
      cout<<1900 + ltm->tm_year<<endl; 
 
      cout<<" --------------------------------------------------------------------------"; 
 
    //cout tabel 
 
    gotoxy(5,a); cout<<"Nama Barang"; 
 
    gotoxy(22,a); cout<<"|"; 
 
    gotoxy(25,a); cout<<"Harga Satuan"; 
 
    gotoxy(43,a); cout<<"|"; 
 
    gotoxy(45,a); cout<<"Jumlah"; 
 
    gotoxy(54,a); cout<<"|"; 
 
    gotoxy(62,a); cout<<"Total Harga"<<endl; 
 
    cout<<" --------------------------------------------------------------------------"; 
 
    //data 
 
     do{ 
 
      a=a+2; 
 
      for(i=0; i<31; i++) 
 
      gotoxy(5,a); cin>>namabrg; 
 
      gotoxy(25,a); cin>>harga[i]; 
 
      gotoxy(45,a); cin>>jumlah[i]; 
 
      gotoxy(62,a); cout<<jumlah[i]*harga[i]<<endl; 
 
      Tharga+=jumlah[i]*harga[i]; 
 
      cout<<"barang berikutnya y/n?"; 
 
      gotoxy(5,a+2); cin>>lanjut; 
 
      if(lanjut=='n' or lanjut=='N') {i=31;} 
 
      gotoxy(0,a+1); cout<<"         "; 
 
     } 
 
     while(lanjut=='y' or lanjut=='Y'); 
 
     gotoxy(0,a+2); cout<<"         "; 
 
      gotoxy(45,a+2); cout<<"Total Harga : Rp. "<<Tharga<<endl; 
 
      gotoxy(45,a+3); cout<<"Diskon  : Rp. "; 
 
      diskon=0; 
 
       if(Tharga>=1000000){diskon=0.2;} 
 
       if(Tharga>=500000 and Tharga<1000000){diskon=0.15;} 
 
       if(Tharga>=100000 and Tharga<500000) {diskon=0.1;} 
 
      cout<<diskon*Tharga<<endl; 
 
      gotoxy(45,a+4); cout<<"Harga  : Rp. "<<Tharga-(diskon*Tharga)<<endl; 
 
      gotoxy(45,a+5); cout<<"Pembayaran : Rp. "; cin>>pembayaran; 
 
      gotoxy(45,a+6); cout<<"Kembalian : Rp. "<<pembayaran-(Tharga-(diskon*Tharga))<<endl; 
 
      cout<<"buat nota lagi y/n? "; cin>>lanjut; 
 
     a=a+11; 
 
     } 
 
     while (lanjut=='y' or lanjut=='Y'); 
 
     system("pause"); 
 
     return 0; 
 
}

+0

你在你的代碼中的許多錯誤。你的「for」週期之一是沒有做任何事情。 - > for(i = 0; i <31; i ++)沒有{} – CyberClaw

回答

0

我看到for(i=0; i<31; i++)後您使用harga[i=30],但只有harga[0],...,harga[29]harga[30]實際上指向屬於其他變量的內存,這就是爲什麼與b奇怪的行爲)。

(老實說,似乎有更多的問題在這裏,例如,與for的身體。)