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

Pliki tektstowe, ciągle zapisuję sie 0.

VPS Starter Arubacloud
0 głosów
478 wizyt
pytanie zadane 28 stycznia 2016 w C i C++ przez Kimi Bywalec (2,050 p.)

To znowu Ja, zmodyfikowałem lekko kod jednak nadal nie jestem w stanie sobie poradzić z tym uporczywym 0 w pliku txt.

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <fstream>
#include <conio.h>
using namespace std;
int minuty;
int wybor;
int i; //to wywala w notatnik

int main()
{


cout<<"WITAJ W PROGRAMIE, WYBIERZ JEDNA Z OPCJI"<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"Nowa Sesja"<<endl;
cout<<"Pokaz czas wczesniejszczej sesji"<<endl;
cin>>wybor;
switch(wybor)
case 1:
{

    for (int i=1; i<=36000; i++)
    {

        Sleep (600);
        system("cls");
        cout<<"Twoj komputer dziala"<<endl;
        cout<<i<<"Minut"<<endl;

          if( kbhit() )
             if( getch() == 'q' ) break;
        if(i>60)
        {
            cout<<"Twoj komputer dziala"<<endl;
            cout<<i/60<<"godzin"<<endl;
        }

cout<<"Jesli chcesz zakonczyc program i rownoczesnie zapisac swoj wynik nacisnij Q";
    }


fstream t;
t.open("Program_Minutowy.txt",ios::out|ios::app);
t<<i;
t.close();
break;
}
    switch(wybor)
    case 2:
    {
    fstream t;
    t.open("Program_Minutowy.txt", ios::in);
     cout<<i;
    if(t.good()==false)
        {

                cout<<"Nie mozna otworzyc pliku!";
        }
    break;
    }

    return 0;

}

 

3 odpowiedzi

0 głosów
odpowiedź 28 stycznia 2016 przez draghan VIP (106,230 p.)
wybrane 29 stycznia 2016 przez Kimi
 
Najlepsza

To już drugi temat z tym programem. Mogłeś kontynuować poprzedni wątek. Jak już Ci pisałem, w pętli for definiujesz nową zmienną o nazwie i, chociaż planujesz działać na globalnej. Btw. - zmienne globalne są nieeleganckie.

W Twoim kodzie jest dwukrotnie użyta konstrukcja switch, jest to bardzo nieładne i nawet nie wiem, czy działa. Poprawiłem Ci i tę zmienną z pętli, i switch. Przeanalizuj.

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

using namespace std;
int minuty;
int wybor;
int i; //to wywala w notatnik

int main()
{


    cout<<"WITAJ W PROGRAMIE, WYBIERZ JEDNA Z OPCJI"<<endl;
    cout<<"----------------------------------------"<<endl;
    cout<<"Nowa Sesja"<<endl;
    cout<<"Pokaz czas wczesniejszczej sesji"<<endl;
    cin>>wybor;
    switch(wybor)
    {
    case 1:
        for (i=1; i<=36000; i++) // <- tutaj nie definiuj nowej zmiennej (int i = 1), jedynie przypisz wartość (i = 1)
        {

            Sleep (600);
            system("cls");
            cout<<"Twoj komputer dziala"<<endl;
            cout<<i<<"Minut"<<endl;

            if( kbhit() )
                if( getch() == 'q' ) break;

            if(i>60)
            {
                cout<<"Twoj komputer dziala"<<endl;
                cout<<i/60<<"godzin"<<endl;
            }

            cout<<"Jesli chcesz zakonczyc program i rownoczesnie zapisac swoj wynik nacisnij Q";
        }


        fstream t;
        t.open("Program_Minutowy.txt",ios::out|ios::app);
        t<<i;
        t.close();
        break;

    case 2:
        fstream t;
        t.open("Program_Minutowy.txt", ios::in);
        cout<<i;
        if(t.good()==false)
        {

            cout<<"Nie mozna otworzyc pliku!";
        }
        break;
    }

    return 0;

}

 

komentarz 28 stycznia 2016 przez Daaa22 Dyskutant (8,250 p.)
Ja bym zamiast dać

for (i=1; i<=36000; i++)

dałbym

for (;;)
komentarz 28 stycznia 2016 przez draghan VIP (106,230 p.)
Już Mu o tym wspominałem. Nie poprawiałem logiki programu, niech się autor trochę pogimnastykuje. ;)
komentarz 29 stycznia 2016 przez Kimi Bywalec (2,050 p.)
Na początku też zamierzałem użyć pętli nieskończonej, jednak nie widziałem co napisać w samej pętli.  Gdy program będzie działać to go zrefaktoryzuje :)
komentarz 29 stycznia 2016 przez draghan VIP (106,230 p.)

Kimi, już rozumiesz, o co chodziło z tymi zmiennymi i?

komentarz 29 stycznia 2016 przez Kimi Bywalec (2,050 p.)
Tak już rozkminiłem :) Siadłem przy kodzie na nowo drugiego dnia i wszystko stało się takie przejrzyste.

edit. Dziękuje za pomoc bo już dostrzegłem mój prosty i bardzo głupi błąd.
komentarz 29 stycznia 2016 przez draghan VIP (106,230 p.)
To super. :) Jakbyś miał jeszcze jakieś pytania do tego kodu, to wal śmiało - jak będę, to podpowiem.
komentarz 29 stycznia 2016 przez Kimi Bywalec (2,050 p.)
Teraz muszę ogarnąc aby tekst w notatniku miał postać taką jak w konsoli czyli minuty i godziny ale mam nadzieję że dam rady sam :)
+1 głos
odpowiedź 28 stycznia 2016 przez 0rb_12 Bywalec (2,440 p.)
Wywal int z pętli for, masz deklaracje na szczycie, wystarczy. W pętli zostaw tylko " i=0 "

Pozdro ;]]
komentarz 29 stycznia 2016 przez Kimi Bywalec (2,050 p.)
Nie zbyt rozumiem. Pętla ma wyglądać tak:

for(int i=0)

Może wydawać się to banalne, ale dopiero zaczynam ;(
+1 głos
odpowiedź 28 stycznia 2016 przez Sebastian R Obywatel (1,110 p.)
To jest problem redefinicji. Nie wyrzucało Ci żadnego błędu?
komentarz 28 stycznia 2016 przez draghan VIP (106,230 p.)
Nie ma problemu redefinicji - w C++ istnieje takie zjawisko, jak przesłanianie zmiennych.
komentarz 29 stycznia 2016 przez Sebastian R Obywatel (1,110 p.)
Dobrze, że są mądrzejsze głowy ode mnie ;)

Podobne pytania

0 głosów
0 odpowiedzi 975 wizyt
pytanie zadane 27 maja 2020 w C i C++ przez pozdro600 Początkujący (260 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 17 lutego 2020 w C i C++ przez Konrad Gałach Użytkownik (880 p.)
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 12 października 2019 w C i C++ przez amelia.cpp Obywatel (1,860 p.)

93,030 zapytań

141,992 odpowiedzi

321,294 komentarzy

62,377 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...