Hi I am in a bit of trouble.
what is nedded:
Reading a text file character-by-character, using the "get(char)" function.
Count the words in the file which contains "w" or "W". The possible delimiters are: '\t','n',' '(space).
Do not use arrays.
The codes:
MAIN.CPP
#include <iostream>
#include "enor.h"
using namespace std;
//Feladat: Kiírjuk a szöveges fájlban a w betűt tartalmazó szavak számát
//Bemenő adatok:szöveges állomány
//Kimenő adatok:statndard output
int main()
{
string hol="input.txt";
int darabw=0;
Enor t(hol);
t.First();
while (t.End())
{
t.Next();
}
cout<<darabw<<endl;
return 0;
}
ENOR.CPP
#include "enor.h"
#include <iostream>
using namespace std;
bool wk;
bool nemlimit;
int darabw;
//Feladat: Felsoroló létrehozása.
//Bemenő adatok:-
//Kimenő adatok:alapértelmezett felsoroló
//Tevékenység: Megnyitja a felsoroló hátterében levő szöveges állományt olvasásra
Enor::Enor(const string &str)
{
f.open(str.c_str());
if(f.fail()){
cout << "Nem lehet megnyitni az inputfajlt!\n";
exit(1);
}
}
//Feladat: A felsoroló Next() művelete.
//Bemenő adatok:alapértelmezett felsoroló
//Kimenő adatok:alapértelmezett felsoroló
//Tevékenység: Beolvassa a következő karaktert.
void Enor::Next()
{
char ch;
while(st==norm){
vege = st == abnorm;
if(!vege){
f.get(ch);
if ((ch=='w')|| ((ch=='W')&&(wk==false))) {nemlimit=false wk=true, ++darabw;}
if ((ch==' ') || (ch== '\t') || (ch=='\n')) {nemlimit=false;}
}
}}
//Feladat: A szöveg első karakterének megkeresése, annak feldolgozása.
//Bemenő adatok:alapértelmezett felsoroló
//Kimenő adatok:alapértelmezett felsoroló
//Tevékenység: Az első nem delimiter karakterig olvassa a szöveget.
void Enor::First()
{
char ch;
nemlimit=false;
wk=false;
while ((ch='\n') && (ch='\t') && (ch='\n') && (f.good()))
{
ch=f.get();
cout<<"delimi"<<'\n';
};
{
if ((ch=='w')|| (ch=='W')) {nemlimit=true; wk=true, ++darabw;}
}
if(!f.fail()){
st = norm;;
}
else st = abnorm;
}
ENOR.h
#ifndef ENOR_H
#define ENOR_H
#include <fstream>
#include <string>
#include <sstream>
enum Status { abnorm, norm };
// sorok felsoroló típusa
// Típusértékek: felsoroló objektumok
// Reprezentáció: szöveges állomány adatfolyam objektuma
//
// Műveletei: felsoroló létrehozása
// felsoroló műveletek
// a szöveg következő sorának olvasása
class Enor{
private:
std::ifstream f;
Status st;
bool vege;
void Read();
public:
Enor(const std::string &str);
void First();
void Next();
bool End() const {return st;}
};
#endif
What I'm trying to do:
With t.First() I search for the first not delimiter character and read it. if it is w or W, then the counter goes up.
With t.Next()I read the next character, and if it is w and there wasnt a w before in the word (meaning that wk is false, and nemlimit is true).
Please help me!!