Mój program w C++ wyłącza się w nie pożądanym momencie! POMOCY!


(pitrowskiadam) #1

Witam.
Jak w temacie mam problem z moim programem. Oto kod źródłowy:
--------------------------------------------------------------------------
#include <cstdlib
#include <iostream
#include <fstream
#include <windows.h>

using namespace std;

int PIN, nr_operacji, kasa=0, kasa_wplata, kasa_wyplata, potw, ilosc_kasy_do_wplaty;

int main()
{

cout << "Witaj w naszym banku!!" <<endl;
cout << "Podaj PIN: ";
cin >> PIN;

if (PIN==1234){

    cout << "Podales poprawny PIN" <<endl;
    cout << "Wybierz operacje do wykonania" <<endl;
    cout << "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" <<endl;
    cout << "1.Wplata" <<endl;
    cout << "2.Wyplata" <<endl;
    cout << "3.Sprawdzenie stanu konta" <<endl;
    cin >>nr_operacji;
    
    switch (nr_operacji)
    {
        case 1:
        {
          cout << "Wybierz ilosc pieniedzy do wplacenia:" <<endl;
          cout << "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" <<endl;
          cout << "1.50 " <<endl;
          cout << "2.100 " <<endl;
          cout << "3.150 " <<endl;
          cout << "4.200 " <<endl;
          cout << "5.250 " <<endl;
          cout << "6.300 " <<endl;
          cout << "7.350 " <<endl;
          cout << "8.400 " <<endl;
          cout << "9.450 " <<endl;
          cout << "10.500 " <<endl;
          cin >>ilosc_kasy_do_wplaty;
          
          switch (ilosc_kasy_do_wplaty)
          {
                case 1:
                {
                    cout << "Wybrana ilosc pieniedzy to 50" <<endl;
                    cout << "Potwierdzic?: (1-tak/2-nie)";
                    cin >> potw;
                        if (potw==1){
                            kasa = kasa+kasa_wplata;
                            cout << "Dziekujemy za wybranie naszego banku!!" <<endl;
                            cout << "Do widzenia!" <<endl;
                            
                            fstream plik; 
                            plik.open("kasa.txt" , ios::in);
                            
                            plik <<kasa;
                            
                            plik.close();                                                                 
                            
                           } else if (potw==2) {
                                cout << "Do widzenia!";                                    
                            } else {
                                cout << "Nie ma takiej odpowiedzi";
                            }
                             
                }
        }
        break;
        
        case 2:
        {
          cout << "";   
        }
        break;
        
        case 3:
        {
          cout << "";   
        }
        break;
        
        default:
        {
        cout << "Nie ma takiej operacji!!";
        }
    }   
  } 
  }else {       
        cout << "Niepoprawny PIN!!!";
}

return 0;

}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------*
Program jeszcze jest nie skonczony!!!
Problem tkwi w jego wyłączaniu się. Jesli wpisze poprawny pin to wszytkie instrukcje wykonuje poprawnie do momentu
"wybrana ilosc pieniedzy to 50"
Potwierdzam według instrukcji i nic nie zdąży sie pokazac bo sie od razu wylacza. Pliku txt tez nie tworzy.
Prosze o szybką pomoc.
Podkreslam ze jestem calkiem ZIELONY w c++ ale chciałem zrobic program ktory zawierał bedzie wszystkie nowo poznane przezemnie funkcje i instrukcje.


(Fizyda) #2

Wyświetla się, ale nie zdążysz tego zobaczyć bo kończy Ci się program i zamyka. Dodaj przed return 0 w main coś takiego:
std::cin.get();
Zatrzyma Ci zamykanie konsoli po wykonaniu kodu aż nie wciśniesz enter.

Czemu nie tworzy Ci się plik nie wiem, teraz nie mam czasu bliżej przyjrzeć się kodu (kodowi?), jak wrócę bo zaraz wyjeżdżam to w tedy zerknę raz jeszcze.

EDIT:
Jeszcze raz zerknąłem i problem z plikiem to prawdopodobnie to że otwierasz go do odczytu a nie do zapisu, zmień std::ios::in na std::ios::out


(pitrowskiadam) #3

Dzięki za pomoc Fizyda ogarnę to jak wrócę do domu ale i tak z góry dziękuję

niestety nic to nie pomoglo:(


nie mam pojecia dla czego


(pitrowskiadam) #4


(Fizyda) #5

Co do tworzenia pliku to błąd jest tak jak mówiłem wcześniej. Co do zatrzymywania konsoli dodaj przed cin.get() jeszcze jedną linijkę:
cin.ignore();
ewentualnie obie linijki możesz zastąpić przez:
system("PAUSE");


(pitrowskiadam) #6

plik juz ogarnalem i wylaczanie tez takze wielkie dzieki za pomoc :smile: