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

Rozdział 34 (zadanie 2)

Ostatnio zmodyfikowano 2017-01-17 08:43
Autor Wiadomość
krystiank907
Temat założony przez niniejszego użytkownika
Rozdział 34 (zadanie 2)
» 2017-01-16 17:20:02
Witam
Męczę się już trochę z tym programem już teoretycznie wszystko działa tylko jak to zrobić aby po napotkaniu znaku wypisywał tylko komunikat "Napotkano znak w wierszu nr: " i nie wypisywało wyniku tylko przechodziło do nowej lini i od nowa liczyło??
C/C++
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

bool Nowa( ifstream & plik )
{
    char cZnak;
   
    for(;; ) //nieskończona pętla
    {
        plik.clear();
        cZnak = plik.peek(); //sprawdzamy jaki kolejny znak zostanie zwrócony przez operację odczytu
        if( plik.fail() || plik.bad() )
             return false; //wystąpił błąd odczytu danych
       
        if( !isspace( cZnak ) )
             return false; //pobrany znak nie jest białym znakiem
       
        plik.get( cZnak ); //odczytujemy biały znak z pliku
        if( plik.fail() || plik.bad() )
             return false; //wystąpił błąd odczytu danych
       
        if( cZnak == '\n' )
        {
           
            return true;
        }
       
    } //for
}

void wypisz( int wynik )
{
    cout << "Wynik: " << wynik << endl;
}
bool wczytajPlik( string nazwaPliku )
{
    ifstream plik;
    int a = 0;
    int i = 1;
    int wynik = 0;
    string wiersz;
    plik.open( nazwaPliku );
    if( !plik.good() )
         return false;
   
    while( !plik.eof() )
    {
        plik >> a;
        if( plik.good() )
        {
            wynik += a;
            if( Nowa( plik ) )
            {
                wypisz( wynik );
                wynik = 0;
                i++;
            }
           
        }
        if( plik.fail() )
        {
            plik.clear();
            char znak;
            plik >> znak;
            if( plik.good() )
            {
                cout << " Znak w wierszu nr: " << i << " ";
            }
           
        }
       
       
    }
    plik.close();
    return true;
}


int main()
{
    if( !wczytajPlik( "/Users/krystian-mac/Desktop/Dokumenty/C++/cpp/cpp/plik1.txt" ) )
         cout << "Nie udalo sie otworzyc pliku!" << endl;
   
    return 0;
   
}
Na ten czas tak to wygląda

Wynik: 24
 Znak w wierszu: 2 Wynik: 47
Wynik: 5
Wynik: 6
Program ended with exit code: 0

Z góry dziękuje za pomoc bo już trochę brakuje mi pomysłów
P-156497
darko202
» 2017-01-17 08:43:51
1.
Trudno zrozumieć z czym masz konkretnie problem.
opisz to dokładniej.
dodając np. treść zadania.

2.
Polecam zapoznanie się z techniką debug'owania programu
musisz znaleźć dla twojego kompilatora odpowiednie informacje
podobne do
https://netbeans.org/kb/docs​/cnd/debugging.html

sprawdzasz wykonanie programu linia po linii - zatrzymując się, oglądając stany zmiennych
P-156530
« 1 »
  Strona 1 z 1