Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

R. 35 - prośba o sprawdzenie zadania domowego

Ostatnio zmodyfikowano 2019-01-28 19:36
Autor Wiadomość
colargol
Temat założony przez niniejszego użytkownika
R. 35 - prośba o sprawdzenie zadania domowego
» 2019-01-28 18:45:43
Witam.

Czy mógłbym poprosić o sprawdzenie czy poprawnie wykonałem zadanie domowe z rozdziału 35 poziom 4?

C/C++
#include <fstream>
#include <iostream>

using namespace std;

int main()

{
    ifstream plik( "C:\\plik.txt" ); //DEKLARACJA UCHWYTU DO PLIKU
    if( !plik.good() ) //SPRAWDZENIE CZY POWIODLO SIE OTWARCIE PLIKU
         return 0;
   
    char znak;
    int ile = 0;
   
    while( !plik.eof() )
    {
        plik >> znak;
        ile++;
    } //SPRAWDZA ILE ZNAKOW ZAWIERA CALY PLIK
   
    plik.clear(); //CZYSZCZENIE STRUMIENIA
    plik.seekg( 0 ); //USTAWIANIE POZYCJI ODCZYTU NA 0
    int pozycja = plik.tellg(); //DEKLARACJA ZMIENNEJ PRZECHOWUJACA AKTUALNA POZYCJE
   
    do
    {
        plik.seekg( 3, ios::cur ); //PRZESUNIECIE POZYCJI O 3 DO PRZODU WZGLEDEM AKTUALNEJ
        plik >> znak; //ZAPISANIE NAPOTKANEGO ZNAKU DO ZMIENNEJ
        cout << znak << ", "; //WYPISANIE ZNAKU NA EKRANIE
        pozycja = plik.tellg(); //ODCZYTANIE AKTUALNEJ POZYCJI
       
    } while( pozycja < ile - 1 ); //WYKONUJ DOPOKI NUMER POZYCJI JEST MNIEJSZY OD LICZBY WSZYSTKICH ZNAKOW W PLIKU
   
    return 0;
}
P-173746
pekfos
» 2019-01-28 18:51:05
Niepotrzebnie masz dwie pętle.
P-173747
colargol
Temat założony przez niniejszego użytkownika
» 2019-01-28 18:52:17
Która pętla jest niepotrzebna i dlaczego?
P-173748
pekfos
» 2019-01-28 19:01:47
Która, to powinno być oczywiste. Są tylko dwie, a jedna wykonuje zadanie. Nie musisz wiedzieć, ile jest znaków. Masz je po prostu wypisywać, aż się skończą.
P-173750
colargol
Temat założony przez niniejszego użytkownika
» 2019-01-28 19:08:34
Jak usune tą pętle to wtedy ostatni znak dwa razy mi wyświetla.
P-173751
pekfos
» 2019-01-28 19:12:14
» Kurs C++ » Poziom 4Wczytywanie zawartości pliku, a kontrola błędów lekcja
Jeśli napiszesz pętlę czytającą liczby z pliku i warunek pętli będzie oparty o metodę good(), lub eof(), to ta pętla nie zawsze będzie działać poprawnie.
P-173753
colargol
Temat założony przez niniejszego użytkownika
» 2019-01-28 19:15:11
To co mam zrobić żeby działało poprawnie?

Wyświetla tak:


a, c, d, d,


A ma wyświetlać tak:


a, c, d,


Tamta druga pętla właśnie powodowała to, że dobrze wyświetla.
P-173754
pekfos
» 2019-01-28 19:18:38
Najprościej nie robić tego:
C/C++
plik >> znak; //ZAPISANIE NAPOTKANEGO ZNAKU DO ZMIENNEJ
cout << znak << ", "; //WYPISANIE ZNAKU NA EKRANIE
Jeśli skończy się plik i nie wczytasz znak, to i tak go wyświetlasz.
P-173755
« 1 » 2
  Strona 1 z 2 Następna strona