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

Piszę program, który poda ile słów w pliku slowa.txt kończy się na literę A

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

Nie wiem za bardzo jak to zrobić, próbowałem deklarować zmienną aby szukała tej liczby, probuje stringiem, ale nwm jak zrobić aby szukał takich zdań w pliku.

 

#include <iostream>
#include <fstream>

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 nie dostepny!";
    }

    else
    {
        while(!plik.eof())
        {
            plik >> a;
            i++;
        }
    }

    plik.close();
}

 

1
komentarz 12 lutego 2021 przez VBService Ekspert (254,260 p.)
edycja 12 lutego 2021 przez VBService

Propozycja w oparciu o wskazówkę @j23  wink

slowa.txt

Kombii - Skarby

Ospali - praca nie pozwala pospać
Eliminowani - los nierówno rozdał
Niektórzy nie są zdolni by wziąć duży rozmach
Niektórzy nie chcą wiedzieć
Zamiast leżeć stanąć można

Gdy zbudzi nas dźwięk potłuczonego szkła
Mamy coś czego nie zabiorą nam
Gdy wzrok przesłoni gęsta mgła
Mamy swoje skarby
Mamy coś czego nie zabiorą nam

Niektórzy stworzeni po to by żyć w ogonie
Pogoda dla bogaczy nie jest po ich stronie
Gdy mgła przesłania oczy i bywa chłodno
Zamarzną dłonie nie zamarznie godność

Gdy zbudzi nas dźwięk potłuczonego szkła
Mamy coś czego nie zabiorą nam
Gdy wzrok przesłoni gęsta mgła
Mamy swoje skarby
Mamy coś czego nie zabiorą nam
#include <iostream>
#include <fstream>
 
using namespace std;

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

 
    if(plik.good() == false)
    {
        cout << "Plik jest niedostepny!";
    }
    else
    {
        int i=0;
        string word;
    
        while(plik >> word)
        {
            if(word.back() == 'a')
            {
                printf("%-15s", word.c_str());
                i++;
                if (i%4 == 0) cout << endl;
            }
        }
        
        cout << "\n\nIlosc slow konczacych sie na litere 'a': " << i << endl;
    }

    plik.close();
    
    return 0;
}

komentarz 12 lutego 2021 przez BedrisK Użytkownik (600 p.)
Program nie działa poprawnie, nie wyszukuje słów kończących się na a

Przykładowe słowa:

AAIWQX EZSLCL
ACTOACTAOER OACTA
ACUO KORNL
AEIVWSDZ QJYBA
AHMUJT ZEALIL
AHRMAHKUV MAH
AIAPFA UKCLJP
AIZ IZVAIZEHK
AKAY SKNE
AKLZFY PVVYUE
AMDRQQ WOCNXM
AMEPAMELOCG PAMEL
AMUV GXS
AOHAO OHAAOHAOABS
1
komentarz 12 lutego 2021 przez VBService Ekspert (254,260 p.)
edycja 12 lutego 2021 przez VBService

Oj tam, oj tam, mała poprawka i działa. wink

slowa.txt
 
AAIWQX EZSLCL
ACTOACTAOER OACTA
ACUO KORNa
AEIVWSDZ QJYBA
AHMUJT ZEALIL
AHRMAHKUV MAH
AIAPFA UKCLJP
AIZ IZVAIZEHK
AKAa SKNE
AKLZFY PVVYUE
AMDRQQ WOCNXM
AMEPAMELOCA PAMEL
AMUV GXS
AOHAO OHAAOHAOABa
#include <iostream>
#include <fstream>
  
using namespace std;
 
int main()
{
    fstream plik;
    plik.open("slowa.txt", ios::in);
 
  
    if(plik.good() == false)
    {
        cout << "Plik jest niedostepny!";
    }
    else
    {
        int i=0;
        string word;
     
        while(plik >> word)
        {
            if(word.back() == 'a' || word.back() == 'A')
            {
                printf("%-15s", word.c_str());
                i++;
                if (i%4 == 0) cout << endl;
            }
        }
         
        cout << "\n\nIlosc slow konczacych sie na litere 'a' lub 'A': " << i << endl;
    }
 
    plik.close();
     
    return 0;
}

komentarz 12 lutego 2021 przez BedrisK Użytkownik (600 p.)
Dziękuje!

1 odpowiedź

+2 głosów
odpowiedź 11 lutego 2021 przez j23 Mędrzec (194,920 p.)
wybrane 12 lutego 2021 przez BedrisK
 
Najlepsza
while(plik >> a) {
    if(a.back() == 'a') ++i;
}

 

komentarz 11 lutego 2021 przez BedrisK Użytkownik (600 p.)
chyba coś nie działa
komentarz 11 lutego 2021 przez j23 Mędrzec (194,920 p.)
Pokaż całość.
komentarz 11 lutego 2021 przez BedrisK Użytkownik (600 p.)
#include <iostream>
#include <fstream>

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 nie dostepny!";
    }

    else
    {
        while(!plik.eof())
        {
            plik >> a;
            i++;
        }
    }

    while(plik >> a)
    {
        if(a.back()=='a');
        i++;
        cout << a << endl;
    }

    plik.close();
}

 

2
komentarz 11 lutego 2021 przez j23 Mędrzec (194,920 p.)
edycja 11 lutego 2021 przez j23
  • Po pierwsze program ma zwrócić ilość słów kończących się literą a. U Ciebie nie robi tego - wyświetla słowa (w teorii, bo druga pętla się nie wykona).
  • Po drugie zmieniłeś mój kod, który teraz jest nieprawidłowy i nie robi tego, co powinien.
  • Po trzecie moja pętla while powinna zastąpić twoją pętle (myślałem, że się domyślisz).
komentarz 12 lutego 2021 przez BedrisK Użytkownik (600 p.)

Ok, mam tak, ale nwm co dalej

#include <iostream>
#include <fstream>

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 nie dostepny!";
    }

    else
    {
        while(plik >> a)
        {
            if(a.back() == 'a') ++i;
        }
    }

    plik.close();
}

 

komentarz 12 lutego 2021 przez BedrisK Użytkownik (600 p.)
Program się tylko włącza i nie szuka

Przykładowe słowa:

AAIWQX EZSLCL
ACTOACTAOER OACTA
ACUO KORNL
AEIVWSDZ QJYBA
AHMUJT ZEALIL
AHRMAHKUV MAH
AIAPFA UKCLJP
AIZ IZVAIZEHK
AKAY SKNE
AKLZFY PVVYUE
AMDRQQ WOCNXM
AMEPAMELOCG PAMEL
AMUV GXS
AOHAO OHAAOHAOABS
2
komentarz 12 lutego 2021 przez j23 Mędrzec (194,920 p.)

Szuka, tylko nie wypisujesz pod koniec wartości i, no i zamień 'a' na 'A'.

komentarz 12 lutego 2021 przez BedrisK Użytkownik (600 p.)
okk, dziękuje już rozumiem bo jest duża litera i musi być tak A, a nie takie a

Dziękuje!!!!!!!!!!!!!!!

Podobne pytania

0 głosów
1 odpowiedź 260 wizyt
0 głosów
1 odpowiedź 548 wizyt

92,617 zapytań

141,466 odpowiedzi

319,783 komentarzy

61,999 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!

...