W każdym kolejnym wierszu pliku ”dane.txt” znajduje się zestaw danych. W skład każdego zestawu danych wchodzą następujące informacje oddzielane spacjami: - x – liczba całkowita nieujemna, - y – liczba całkowita nieujemna (y > x), - znak - pojedynczy znak, - ciąg znaków (bez spacji). Napisz program, który wypisze liczbę tych zestawów danych, w których liczba wystąpień znaku w ciągu znaków jest większa od x i mniejsza od y.
return 0; // zwracamy wartość zero, żeby sygnalizować poprawne zakończenie programu
}
UWAGA!
Zakładamy, że plik "dane.txt" znajduje się w tym samym katalogu co plik wykonywalny programu. W przypadku błędu podczas otwierania pliku, program wypisze odpowiedni komunikat na standardowe wyjście błędów (cerr) i zwróci wartość 1. W przypadku poprawnego zakończenia programu, na standardowe wyjście (cout) zostanie wypisana liczba zestawów danych spełniających warunki.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream plik("dane.txt"); // otwieramy plik do odczytu
if (!plik.good()) // sprawdzamy, czy udało się otworzyć plik
{
cerr << "Nie udało się otworzyć pliku!" << endl;
return 1; // zwracamy wartość różną od zera, żeby sygnalizować błąd
}
int liczba_zestawow = 0;
while (!plik.eof()) // dopóki nie osiągniemy końca pliku
{
int x, y, liczba_wystapien;
char znak;
string ciag_znakow;
plik >> x >> y >> znak >> ciag_znakow;
liczba_wystapien = 0;
for (char c : ciag_znakow) // dla każdego znaku w ciągu znaków
{
if (c == znak) // jeśli znak jest taki sam jak poszukiwany znak
{
liczba_wystapien++; // zwiększamy licznik wystąpień
}
}
if (liczba_wystapien > x && liczba_wystapien < y) // jeśli liczba wystąpień spełnia warunki
{
liczba_zestawow++; // zwiększamy licznik zestawów danych
}
}
plik.close(); // zamykamy plik
cout << "Liczba zestawów danych spełniających warunki: " << liczba_zestawow << endl;
return 0; // zwracamy wartość zero, żeby sygnalizować poprawne zakończenie programu
}
UWAGA!
Zakładamy, że plik "dane.txt" znajduje się w tym samym katalogu co plik wykonywalny programu. W przypadku błędu podczas otwierania pliku, program wypisze odpowiedni komunikat na standardowe wyjście błędów (cerr) i zwróci wartość 1. W przypadku poprawnego zakończenia programu, na standardowe wyjście (cout) zostanie wypisana liczba zestawów danych spełniających warunki.