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

question-closed Odświeżanie pliku w c++

Object Storage Arubacloud
0 głosów
500 wizyt
pytanie zadane 22 stycznia 2016 w C i C++ przez Pablo99 Obywatel (1,110 p.)
zamknięte 12 kwietnia 2016 przez event15

WItam. Zrobiłem prosty stoper z funkcją zapisu i wczytywania czasów. Problem polega na aktualizowaniu zawartości pliku. Po uruchomieniu programu i dodaniu czasów (dopisanie bądź ze stopera) czasy wyświetlają się pierwotne które były w momencie uruchamiania programu. Po ponownym uruchomieniu wyniki zostają zaktualizowane
 

#include <iostream>
#include <ctime>
#include <fstream>
#include <cstdlib>
#include <stdio.h>

using namespace std;

clock_t start,stop;
float wersja=1.3;
int wybor;
float wyniki[100];
int wynik;

string linia;
int nr_linii=1;


int main()
{
    fstream czasy;
    czasy.open("Czasy.txt", ios::in | ios::app);

    if(czasy.good()==false)
    {
        cout<<"Nie mozna otworzyc pliku!";
    }

    fstream czasyin;
    czasyin.open("Czasy.txt", ios::out | ios::app);
    int licznik=0;

    while(!czasy.eof())
    {
        getline(czasy, linia);
        wyniki[licznik]=atof(linia.c_str());
        licznik++;
    }

    for(;;)
    {
        cout << "Stoper MostTime "<<wersja<<" Console" << endl;
        cout << "**********MENU************" << endl;
        cout << "1. Stoper"<< endl;
        cout << "2. O programie"<< endl;
        cout << "3. Pokaz czasy"<< endl;
        cout << "4. Dodaj czas"<< endl;
        cout << "0. EXIT"<< endl;
        cout <<"**********MENU************" << endl;
        cout << "Wybierz:";
        cin >> wybor;

        switch (wybor)
        {
        case 1:
            int czas;
            cout << endl <<"Aby wlaczyc stoper wcisnij jakikolwiek klawisz " << endl;
            getchar();
            getchar();
            start = clock();
            cout << endl <<"Odliczanie trwa, wcisnij jakikolwiek klawisz aby zatrzymac odliczanie";
            getchar();
            stop = clock();
            czas = (stop-start) / CLOCKS_PER_SEC;
            czasyin<<czas<<endl;
            cout << endl << "Czas to:"<< czas << " sec" << endl;
            cout << endl << "*Nacisniecie klawisza spowoduje wyjscie do menu" << endl;
            getchar();
            break;
        case 2:
            cout << "Wersja "<<wersja<<" WORK-IN-PROGRESS" << endl;
            cout << endl << "*Nacisniecie klawisza spowoduje wyjscie do menu" << endl;
            getchar();
            getchar();
            break;
        case 3:
            cout<<"Ilosc czasow: "<<licznik<<endl<<endl;

            for (int i=0; i<(licznik-1); i++)
            {
                cout<<wyniki[i]<<endl;

            }
            cout<<"Koniec czasow"<<endl;
            getchar();
            getchar();
            break;
        case 4:
            cout << "Wpisz czas do pliku"<<endl;
            cin>>wynik;
            czasyin<<wynik<<endl;
            break;
        case 0:
            exit(0);
            break;
        default:
            cout << "Nie ma takiej opcji"<<endl;
            cout << endl << "*Nacisniecie klawisza spowoduje wyjscie do menu" << endl;
            getchar();
            getchar();
        }
        system("cls");
    }
    czasy.close();
    czasyin.close();
    return 0;
}

 

komentarz zamknięcia: rozwiązane

1 odpowiedź

+1 głos
odpowiedź 22 stycznia 2016 przez niezalogowany
przywrócone 12 kwietnia 2016 przez event15
Staraj się nie używać zmiennych globalnych, i rozbijaj kod na funkcje.
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
Dopiero zaczynam to mój pierwszy poważniejszy projekt. Dzięki za poradę.
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
Wrzucając otwieranie/zamykanie do switch'y wyskakują błędy których wcześniej nie było (nie umiem sobie z nimi poradzić )
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
Gdy tak zrobię nie wyświetlają mi się czasy.
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
Porządek w jakim sensie?
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
edycja 22 stycznia 2016 przez Pablo99

Po usunięciu tych linijek nie zapisuje ani nie odczytuje wyników

//EDIT Zapisuje ale nie pokazuje

Pastebin : http://pastebin.com/KGNt8giZ

//EDIT++ Napotkałem jeden z mniejszych błędów po naprawieniu wyświetlania. Otóż po ponownym wyświetleniu czasów, pojawiają się inkrementując np. 1raz [1,2,3,4] 2raz [1,2,3,4,1,2,3,4] itd.

komentarz 22 stycznia 2016 przez Sedi Stary wyjadacz (10,200 p.)
Jak rozwiązałeś, to napisz, w jaki sposób :) - Chwila czasu, a w przyszłości ktoś może na tym skorzystać.
komentarz 22 stycznia 2016 przez Pablo99 Obywatel (1,110 p.)
edycja 23 stycznia 2016 przez Pablo99

Jako że pokazały się kolejne błędy proszę o pomoc. Jak uda się to naprawić napisze jak to rozwiązaliśmy.

PROBLEM ROZWIAZANY WSTAWIAM DZIALAJACY KOD : http://pastebin.com/dVUmVbMk

1.Musiałem dodać otwieranie/zamykanie pliku do switcha wraz z pętlami

2.Błędy powodowała zmienna którą próbowałem umieścić w switchu, zmienna była globalna dlatego duplikowała.
Dziękuje za pomoc !
 

komentarz 23 stycznia 2016 przez Sedi Stary wyjadacz (10,200 p.)
Najwięcej nauczysz się, pracując samodzielnie :)

Nie bój się błędów :) - Z myśleniem związane są błędy, więc nie myli się ten kto nie myśli :)

Pozdrawiam

Podobne pytania

–1 głos
4 odpowiedzi 810 wizyt
0 głosów
2 odpowiedzi 359 wizyt
0 głosów
1 odpowiedź 161 wizyt
pytanie zadane 7 czerwca 2018 w C i C++ przez Hasbuitsth Nowicjusz (140 p.)

92,632 zapytań

141,501 odpowiedzi

319,880 komentarzy

62,013 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!

...