• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pisze program, który poda liczbę wierszy z pliku txt zawierających pary słów

Object Storage Arubacloud
+1 głos
676 wizyt
pytanie zadane 18 lutego 2021 w C i C++ przez BedrisK Użytkownik (600 p.)

Piszę program, który poda liczbę wierszy z pliku txt zawierających pary słów, w których pierwsze słowo zawiera się w drugim słowie. Czyli muszę porównywać słowa, jedno do drugie i td.

Oto co na razie napisałem:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    fstream plik;
    plik.open("slowa.txt", ios::in);

    int i=0;
    string a;

    if(plik.good() == false)
    {
        cout << "Plik jest niedostepny!";
    }
    else
    {
        while(!plik.eof())
        {
            plik >> a;
            i++;
        }
    }

    plik.close();

    for(int j=0; j<i-1; j++)
    {
        cout << endl << a;
    }

    return 0;
}

Nie wiem za bardzo co dalej.

komentarz 19 lutego 2021 przez BedrisK Użytkownik (600 p.)
za nazwe stringu trzeba wstawić a? nie wiem co oznacza '/n'
komentarz 21 lutego 2021 przez BedrisK Użytkownik (600 p.)

@forestG.tmp 

 

komentarz 22 lutego 2021 przez TOWaD Mądrala (5,700 p.)
'\n' sorki
komentarz 22 lutego 2021 przez BedrisK Użytkownik (600 p.)
I jak zrobić aby wyświetlić to ile policzyło

?
komentarz 22 lutego 2021 przez TOWaD Mądrala (5,700 p.)
edycja 23 lutego 2021 przez TOWaD

mokrowski przecież dał odpowiedz, a ja nie zrozumiałem pytania.

Ale jak getline to:


//getline(plik, word1, char{32}); getline(plik, word2, char{32}); getline(plik, resztawiersza);
getline(plik, word1,char{32}); getline(plik, word2);
if (word2.find(word1)!=-1) licznik++;

ale to się nie nadaje do takiego użycia, bo jedna spacja więcej i kicha, ale już do znanych słów składających się też z spacji to po przeróbkach jak najbardzej

 

1 odpowiedź

+2 głosów
odpowiedź 18 lutego 2021 przez mokrowski Mędrzec (155,460 p.)

Troszkę przekombinowałeś.

Wczytywanie par słów można wykonać tak:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

int main() {
	std::ifstream file("slowa.txt");
	if (! file) {
		std::cerr << "File open error!\n";
		return EXIT_FAILURE;
	}
	std::string word1, word2;
	while(file >> word1 >> word2) {
		std::cout << word1 << ' ' << word2 << '\n';
	}
	return EXIT_SUCCESS;
}

Teraz trzeba dodać licznik który sprawdzi czy słowo 2 zawiera słowo 1:

std::size_t counter{};
// ...
counter += word2.find(word1) != std::string::npos ? 1: 0;
// ...
std::cout << counter << '\n';

I już :)

komentarz 19 lutego 2021 przez BedrisK Użytkownik (600 p.)
Dziękuje, a czy dało by się to zrobić bez biblioteki <cstdlib> ?
komentarz 19 lutego 2021 przez mokrowski Mędrzec (155,460 p.)
Oczywiście. W zasadzie w samym programie dotyczy ona wyłącznie kodów powrotu EXIT_SUCCESS, EXIT_FAILURE.
komentarz 19 lutego 2021 przez BedrisK Użytkownik (600 p.)
Ok, dziękuje
komentarz 22 lutego 2021 przez BedrisK Użytkownik (600 p.)
A jak wypisać ile polliczył tych podobnych?
komentarz 22 lutego 2021 przez mokrowski Mędrzec (155,460 p.)

Masz wyżej:

std::cout << counter << '\n';

 

Podobne pytania

+1 głos
1 odpowiedź 639 wizyt
0 głosów
1 odpowiedź 351 wizyt
0 głosów
2 odpowiedzi 238 wizyt
pytanie zadane 22 lutego 2019 w C i C++ przez patryk241 Użytkownik (700 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...