Program nie zlicza liter w pliku

0

Mam takie zadanko:

Napisz jednoparametrową funkcję Samogloski typu int. Parametrem tej funkcji ma być nazwa pliku tekstowego, zaś wynikiem funkcji:
• liczba samogłosek a, e, i, o , u, y w pliku,
• -1, jeśli plik jest pusty,
• -2, gdy pliku nie można otworzyć.

Oto mój kod:

#include <iostream>
#include <fstream>

using namespace std;

int Samogloski(int &litery)
{

    litery++;
}

int main()
{
  ifstream plik;
    plik.open("litery.txt");
    if(!plik.is_open())
    {
        return -2;
    }
    char znaki;
    while(plik>>znaki)
    {
        if(znaki=='a' && 'e' && 'i' && 'o' && 'u' && 'y')
           {
               Samogloski();
           }
           }
           plik.close();
        if (znaki == 0)
        {
             return -1;
        }
}

Co zrobiłem źle, w pliku mam kilka samogłosek ale nie zlicza mi ich?

1
if(znaki=='a' && 'e' && 'i' && 'o' && 'u' && 'y')

ten warunek jest niepoprawny.
Należy porównywać każdy znak osobno,

if(znaki=='a' || znaki== 'e' || znaki=='i' || znaki=='o' || znaki== 'u' || znaki=='y')

Ogólnie, żadna część polecenia nie została wykonana.

0

Funkcja

int Samogloski(const std::string& fileName){
    // tutaj obliczenia
}

W funkcji głownej

int main(){
   const std::string fileName = "jakasNazwaPliku";
   int vawels = Samogloski(fileName);
}
0

Czyli jeśli wszystkie operacje na pliku będą w funkcji Samogłoski a w int main() tylko jej wywołanie to będzie dobrze?

W funkcji głównej zapamiętujesz wynik zwrócony z funkcji Samogloski i coś z tym robisz. Co? Nie wiem?

0

czego nie możesz zrozumieć w tym zdaniu?

Napisz jednoparametrową funkcję Samogloski typu int. Parametrem tej funkcji ma być nazwa pliku tekstowego, zaś wynikiem funkcji liczba samogłosek

bool Samogloska(char ch) {
     return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'y';
}

int Samogloski(std::istream &stream) { // pomocniczy overload
     char ch;
     if (!stream.get(ch)) {
          return -1;
     }
     int wynik = Samogloska(ch) ? 1 : 0;
     … … …
}

int Samogloski(const std::string &fileName) { // to co opisuje treść
    ifstream plik(fileName);
    if(!plik.is_open())
    {
        return -2;
    }
    return Samogloski(plik);
}

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