Program na Windows 10 sam się wyłącza

0
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <fstream>

using namespace std;

float prad1,prad2;  string dzienP  [1];
float woda1,woda2;  string dzienW  [1];
float gaz1,gaz2;    string dzienG  [1];
float x,y,z;

int main()
{
    cout << "Witaj w liczniku ceny pradu,wody i gazu!" << endl;
    cout<<"Wpisz z licznikow ilosc zluzytego pradu:";
    cin>>prad1;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienP[0];
    system("cls");                         //Prad

    cout<<"Wpisz z licznikow ilosc zluzytej wody:";
    cin>>woda1;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienW[0];
    system ("cls");                        //Woda

    cout<<"Wpisz z licznikow ilosc zluzytego gazu:";
    cin>>gaz1;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienG[0];
    system ("cls");                        //Gaz

    //Dzien 2
    cout<<"Teraz wpisuj ilosc z drugiego dnia!"<<endl;
    cout<<"Wpisz z licznikow ilosc zluzytego pradu:";
    cin>>prad2;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienP[1];
    system("cls");                         //Prad

    cout<<"Wpisz z licznikow ilosc zluzytej wody:";
    cin>>woda2;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienW[1];
    system ("cls");                        //Woda

    cout<<"Wpisz z licznikow ilosc zluzytego gazu:";
    cin>>gaz2;
    cout<<"Wpisz date(np.01.01.2017):";
    cin>>dzienG[1];
    system ("cls");                        //Gaz

    cout<<"Ilosc pradu:"<<prad2-prad1;
    cout<<"Ilosc wody:"<<woda2-woda1;
    cout<<"Ilosc gazu:"<<gaz2-gaz1;

    x=prad2-prad1;
    z=woda2-woda1;
    y=gaz2-gaz1;




    cout<<"Cena pradu:"<<x*0,55;
    cout<<"Cena wody:"<<z*11;
    cout<<"Cena gazu:"<<y*2,50;

    cout<<"Cena wszystkiego razem:"<<x+z+y;




    fstream plik;

    plik.open("dane.txt",ios::in);

    plik<<prad1    <<endl;
    plik<<dzienP[0]<<endl;
    plik<<prad2    <<endl;
    plik<<dzienP[1]<<endl;
    plik<<x        <<endl;

    plik<<woda1    <<endl;
    plik<<dzienW[0]<<endl;
    plik<<woda2    <<endl;
    plik<<dzienW[1]<<endl;
    plik<<z        <<endl;

    plik<<gaz1     <<endl;
    plik<<dzienG[0]<<endl;
    plik<<gaz2     <<endl;
    plik<<dzienG[1]<<endl;
    plik<<y;

    plik.close();
    cout<<"Trwa zapisywanie!";
    Sleep(3000);

    return 0;
}

Program sam się wyłącza na dniu drugim nie wiem dlaczego ?!!!

1

Wychodzisz poza tablicę.
Zobacz że definiujesz tablicę string która ma 1 miejsce.

string dzienP[1];

Następnie wpisujesz tam datę

cin>>dzienP[0]; 

Tu kończy się miejsce w twojej tablicy, ale Ty próbujesz wpisać tam jeszcze jeden string

cout<<"Wpisz date(np.01.01.2017):";
cin>>dzienP[1];
1
atmal napisał(a):

Wychodzisz poza tablicę.
Zobacz że definiujesz tablicę string która ma 1 miejsce.

string dzienP[1];

Następnie wpisujesz tam datę

cin>>dzienP[0]; 

Tu kończy się miejsce w twojej tablicy, ale Ty próbujesz wpisać tam jeszcze jeden string

cout<<"Wpisz date(np.01.01.2017):";
cin>>dzienP[1];

Zmieniłem string prad[2]; i wciaz nic nie rozumiem

0

Ale przecież nigdzie o zmiennej prad nigdzie nie pisałem

  1. "Wpisz z licznikow ilosc zluzytego gazu:" - chyba zużytego...

  2. Co do tego kawałka kodu:

cout << "Cena pradu:" << x * 0, 55;
cout << "Cena wody:" << z * 11;
cout << "Cena gazu:" << y * 2, 50;

Programując używa się kropki jako separatora dziesiętnego.

  1. To tak żeby użytkownik myślał że dzieją się jakieś ważne operacje czy jak?
Sleep(3000);
  1. Przede wszystkim pozbądź się zmiennych globalnych, czyli powinny one być zadeklarowane w funkcji main.

  2. Prąd, woda, gaz i data pojawiają się dla każdego dnia więc gdybyś miał tych dni np. 10 to będziesz miał 40 zmiennych? Nie, można użyć, na przykład, struktur.

  3. Jeżeli prąd, woda oraz gaz odnoszą się do tego samego dnia to czemu prosisz użytkownika aby znowu podał dane.

  4. Używasz string ale nigdzie nie masz

#include <string>
0

Kiedy zachodzi potrzeba używania dużej ilości zmiennych lepiej używać struktur albo klas, znajdź jakiś tutorial do c++ (chyba tego używasz chociaż nie wiem po co ci stdlib) i porządnie przewałkuj.

#include <iostream>
using namespace std;

struct LicznikPradu
{
	float zuzytaIlosc[2];
	string data[2];
};

int main(int argc, char *argv[])
{
	LicznikPradu licznikPradu;
	
	// dzien 1
	cout << "Witaj w liczniku ceny pradu" << endl;
	cout << "Wpisz z licznikow ilosc zluzytego pradu:";
	cin >> licznikPradu.zuzytaIlosc[0];
	cout << "Wpisz date(np.01.01.2017):";
	cin >> licznikPradu.data[0];

	// dzien 2
	cout << "Teraz wpisuj ilosc z drugiego dnia!" << endl;
	cout << "Wpisz z licznikow ilosc zluzytego pradu:";
	cin >> licznikPradu.zuzytaIlosc[1];
	cout << "Wpisz date(np.01.01.2017):";
	cin >> licznikPradu.data[1];

	float x = licznikPradu.zuzytaIlosc[1] - licznikPradu.zuzytaIlosc[0];
	cout << "Ilosc pradu zuzytego miedzy dzniem takim a takim:" << licznikPradu.zuzytaIlosc[1] - licznikPradu.zuzytaIlosc[0];

	cout << "Cena pradu:" << x*0.55;

	return 0;
}
0

@czaffik:
To już lepiej byłoby taką strukturę stworzyć:

struct Day
{
	float electricity;
	float water;
	float gas;
	string date;
};

I stworzyć np. tablicę dni.

0

@atmal: większa o mniejszość, chodziło tylko o przykład jak to mniej więcej pospinać w strukturę, takie rzeczy można robić na wiele sposobów w zależności od widzimisię autora i tego co chce zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1