Responsive image Boda Szilárd weblapja

Laborfeladat:
1. Írjunk egy C++ programot, amely megszámolja k darab különböző szó előfordulási számát egy szövegben. A szöveget egy input.txt fileból olvassuk ki. A keresendő szavakat egy kovetelmeny.txt fileból olvassuk be, ahol k sorban vannak. A megszámolt szavakat előfordulásuk csökkenő sorrendjébe rendezve egy output.txt fileba írjuk, majd rajzoljuk ki Excelben.


input.txt
  • - Uram! A késemért jöttem!
  • - Hol hagyta?
  • - Valami matrózban.
  • - Milyen kés volt?
  • - Acél. Keskeny penge, kissé hajlott. Nem látta?
  • - Várjunk... Csak lassan, kérem... Milyen volt a nyele?
  • - Kagyló.
  • - Hány részből?
  • - Egy darabból készült.
  • - Akkor nincs baj. Megvan a kés!
  • - Hol?
  • - A hátamban.
  • - Köszönöm...
  • - Kérem... A csapos mesélte, hogy milyen szép kés van bennem. Egy darab húszcentis kagylóritkaság.
  • - Forduljon meg, kérem, hogy kivegyem...
  • - Kitartás! A kocsmáros azt mondta, hogy amíg nem hoz orvost, hagyjam bent a kést, mert különben elvérzek. A kocsmáros ért ehhez, mert itt már öltek orvost is. Régi étterem.



kovetelmeny.txt
  • kés
  • kagyló
  • hogy
  • kocsmáros
  • matróz

output.txt
  • kés 6
  • hogy 3
  • kocsmáros 2
  • kagyló 2
  • matróz 1



Megoldott feladat

1. Másoljuk ki egy wikipédia cikk szövegét egy “input.txt” fileba. Az így kapott szöveget soronként olvassuk be egy C++ programmal, és számoljuk meg, hogy egy bizonyos szó,  például az “az” névelő, vagy bármilyen más szó hányszor fordul elő a szövegben! Az így kapott számot írjuk ki a képernyőre.

Megoldás:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;

int main()

{

    int k=0,i=0;

    //input file deklaralasa

    fstream file("input.txt");

    string token,line,keres;

    cout<<"Kerem irja be a szot amit keres:";

    //beolvassuk a keresett szot

    cin>>keres;

    if(file.is_open()){

        //amig van uj sor, addig olvassunk
        while(getline(file,line)){

           
//megnezzuk az elso elofordulasi helyet a keres string nek a sorban        
size_t talalat=line.find(keres);

//ha a string megvan, akkor amig megtalalja, keressen tovabb
while(talalat!=string::npos){

talalat=line.find(keres,talalat+1);
         
//noveljuk a k erteket
k++;

            }

        }

        cout<<"A keresett szo" << keres << " " << k << " alkalommal fordul elo";

    }

    else

    {

        cout << "nem sikerult megnyitni a filett";

    }

    return 0;

}