Zliczanie średników w pliku tekstowym

0

Napisz funkcję Średniki, która zliczy ile razy znak ';'(średnik) występuje w pliku tekstowym,
którego nazwa jest jedynym parametrem funkcji. Jeśli operacje plikowe nie powiodą się, wartością
funkcji ma być –1. W programie jako pliku do testowania użyj pliku z kodem źródłowym
programu, który właśnie piszesz

4

Jakie jest pytanie?

0

@_13th_Dragon:

#include <iostream>
#include <fstream>
using namespace std;

int sredniki(int liczsred)
{
    liczsred++;
}

int main()
{
    cout << "Liczba srednikow w tekscie" << endl;
    ifstream srednik;
    srednik.open("sredniki.cpp");
    if(!srednik.is_open())
    {
        cout<<" Blad, nie mozna odczytac pliku. ";
        return 1;
    }
    char znak;
int ilesred;
    while(srednik>>znak)
    {
        if(znak==';')

        {
             sredniki(ilesred);
        }
        }
        srednik.close();


        if(ilesred==0)
            cout<<"Brak srednikow w tekœcie "<<endl;
        else

            cout<<"W tekscie jest: "<<ilesred<<" srednikow"<<endl;

        return 0;

}

dlaczego to nie działa?

6

Bo funkcja int sredniki(int liczsred) operuje na kopii liczsred, więc jej zwiększanie tej zmiennej nie wpływa na resztę programu. Oprócz tego, miałeś zwracać -1 w przypadku błędu odczytu pliku, a zwracasz 1. Być może są też i inne błędy.

4

Zacznij od przeczytania zadania uważnie

  • ... którego nazwa jest jedynym parametrem funkcji
  • ... nie powiodą się, wartością funkcji ma być –1
int count_semicolons(const char *filename)
{
  ifstream file("sredniki.cpp");
  if(!file) return -1;
  int count=0;
  for(int ch;(ch=file.get())!=EOF;) count+=(ch==';');
  return count;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1