Program, który sprawdzi ile jest liczb w pliku, w którym znajdują się liczby i wyrazy.

0

Aktualnie mój kod bez problemu liczy ilość liczb z pliku, tylko pojawia się problem gdy przed liczbami postawie literę/wyraz. Wtedy kod pomija wszystko i pokazuje że jest 0 liczb. Co powinienem zmienić aby zaczął działać? Chciałbym zaznaczyć że dopiero uczę się c++.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int liczba;
    float suma = 0;

    ifstream odczyt ("tekst.txt");

    cout << "Liczby w pliku: ";

    while (odczyt >> liczba)
    {
        cout << liczba << " ";
        suma++;
    }

    odczyt.close();

    cout << endl << "Suma liczb w pliku wynosi: " << suma;

    return 0;
}

0

Jest kilka rozwiązań, np.

  1. Przed Twoim algorytmem wczytaj cały tekst i usuń z niego wszystkie znaki inne niż cyfry i znaki białe.
  2. Skanuj tekst znak po znaku. Każdy ciąg cyfr rozpoczęty od cyfry to liczba. Kiedy trafisz na znak inny niż cyfra, to szukasz następnej liczby.
1
int count=0;
bool indig=false;
for(char ch:inputstring)
{
   bool nextindig=isdigit(ch);
   if((!indig)&&(nextindig)) ++count;
   indig=nextindig;
}

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