• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wynik się nie wczytuje

Object Storage Arubacloud
0 głosów
190 wizyt
pytanie zadane 28 kwietnia 2016 w C i C++ przez zkkf56 Dyskutant (8,710 p.)

Witam,

Mam problem ponieważ gdy w notatniku liczba pucharów zapisuje np. liczba 025 się to przy następnym uruchomieniu programu nie odczytuje się. Oto mój kod:

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
#include <string>
#include <stdio.h>



using namespace std;


int liczba, strzal, proby, opcja, puchary, wyzwanie, Puchary_z_Pliku, napis , wybor,  nr_linii=1;
string imie;

void zapisz()
{
   FILE *save=fopen("save.txt","w");
    fprintf(save,"%03d", puchary);
    fclose(save);
}


void wczytaj()
{
   FILE *save=fopen("save.txt","r");
   fprintf(save,"%03d", puchary);
   fclose(save);
}



int main()
{
    for(;;)
    {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0009 );
    wczytaj();
    cout << "Witaj! W grze! Wybierz co chcesz zrobic:" << endl;
    cout << "Wersja gry: 1.2" << endl;
    cout << "1.Graj! "<<endl;
    cout << "2.Wyzwanie! "<<endl;
    cout << "3.Sprawdz swoja liczbe pucharow! "<<endl;
    cout << "4.Wyjdz z gry"<<endl;
    cin >>opcja;
    //napis = napis + puchary;
    if(opcja==4)
    {
        cout << "Zapisywanie stanu gry...";
        Sleep(500);
        zapisz();
        exit(0);

    }


    if(opcja == 3)
    {



            cout << endl;
            cout << endl;
            cout << endl;
            cout << "Twoja liczba pucharow to:"<<puchary;
            cout << endl;
            cout << endl;
            cout << endl;


        }




        if(opcja == 1)
        {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba)
            {

            proby++;

            HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 25 pucharow!";
                puchary = puchary + 25;
                //napis = napis + puchary;
                cout << "Twoja liczba pucharow: "<<Puchary_z_Pliku +  puchary <<endl;
            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }


            }
            }

            if(opcja==2)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Wybierz nr i poziom trudnosci wyzwania:"<<endl;
                cout << "1.Latwy,zgadnij liczbe w mniej niz 25 rund"<<endl;
                cout << "2.Sredni,zgadnij liczbe w mniej niz 15 rund"<<endl;
                cout << "3.Trudny,zgadnij liczbe w mniej niz 10 rund"<<endl;
                cin >>wyzwanie;


            if(wyzwanie==1)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<24)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 30 pucharow!";
                puchary = puchary + 30;
                //napis = napis + 30;
                cout << "Twoja liczba pucharow: "<<Puchary_z_Pliku +  puchary <<endl;


            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>23)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }





            if(wyzwanie==2)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<14)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 50 pucharow!";
                puchary = puchary + 50;
                cout << "Twoja liczba pucharow: "<< Puchary_z_Pliku + puchary <<endl;

            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>13)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }

            if(wyzwanie==3)
            {


             srand(time(NULL));
             liczba = rand()%(100+1);
            while(strzal!=liczba && proby<9)
            {
                proby++;

                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0007 );
            cout << "Zgadnij jaka to liczba.(to Twoja "<<proby<<" proba.):";
            cin >> strzal;

            if(strzal==liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, 0x0003 );
                cout << "Brawo! Zgadles w: "<<proby<<" probie"<<endl;
                cout << "Wygrywasz: 60 pucharow!";
                puchary = puchary + 60;
                napis = napis + 60;
                cout << "Twoja liczba pucharow: "<< Puchary_z_Pliku + puchary <<endl;


            }

            if(strzal<liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Niestety podales za mala liczbe :("<<endl;
            }

            if(strzal>liczba)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
                cout << "Niestety podales za duza liczbe :("<<endl;
            }

            if(strzal>100)
            {
                HANDLE hOut;
                hOut = GetStdHandle( STD_OUTPUT_HANDLE );
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << "Podales wieksza liczbe niz jest w zakrasie! :("<<endl;
            }

            if(proby>8)
            {
                cout<<endl;
                cout<<endl;
                cout<<  "Przegrales! W: "<<proby<<" probie. Twoja liczba to:"<<liczba<<endl;
                cout<<endl;
                cout<<endl;
            }



            }
            }


            }
}



    return 0;
}



 

1 odpowiedź

0 głosów
odpowiedź 28 kwietnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 28 kwietnia 2016 przez zkkf56
 
Najlepsza

A wiesz, człowieku, co to jest walidacja kodu, ale samodzielna?

void zapisz()
{
   FILE *save=fopen("save.txt","w");
    fprintf(save,"%03d", puchary);
    fclose(save);
}
 
 
void wczytaj()
{
   FILE *save=fopen("save.txt","r");
   fprintf(save,"%03d", puchary); // ==========> Tutaj ma być funkcja fscanf!
   fclose(save);
}

Za niedługo zacznę takie pytania usuwać, bo tracę cierpliwość...

komentarz 28 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
Zrobiłem to co kazałeś i program mi się wiesza :D
komentarz 28 kwietnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Może jakieś konkrety? Czy się w ogóle kompiluje?
komentarz 28 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)

Tak kompiluje się, a po zkompilowaniu pojawia się okienko:   Program przestał działać.

 

komentarz 28 kwietnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
A jakiego IDE używasz? Spróbuj debugować program krok po kroku - powinno ci się pojawić miejsce błędu.
komentarz 28 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)

Używam Code::Blocks po zdebugowaniu programu pojawiło mi się:

#0 0x7552ac6b    msvcrt!_libm_sse2_pow_precise() (C:\WINDOWS\SysWOW64\msvcrt.dll:??)
#1 0x755b9c68    msvcrt!_iob() (C:\WINDOWS\SysWOW64\msvcrt.dll:??)
#2 ??    ?? () (??:??)


coś takiego :)

komentarz 28 kwietnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
A debugowałeś krok po kroku? Pokazała ci się błędna linia?
komentarz 28 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
tak krok po kroku i nie pokazała mi się błędna linia
komentarz 28 kwietnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
A wcześniej występował ten problem? Wygląda, jakby program nie mógł znaleźć odpowiedniej funkcji w bibliotece dynamicznej...
komentarz 29 kwietnia 2016 przez zkkf56 Dyskutant (8,710 p.)
Nie wystąpił dopiero po zmianie fprintf na fscanf

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
0 głosów
3 odpowiedzi 279 wizyt
pytanie zadane 20 marca 2017 w JavaScript przez Muhin Gaduła (4,120 p.)
0 głosów
1 odpowiedź 343 wizyt
pytanie zadane 30 marca 2016 w C i C++ przez Chajol Początkujący (290 p.)

92,551 zapytań

141,397 odpowiedzi

319,528 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...