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
0
4
Jakie jest pytanie?
0
#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;
}