Wczytywanie liczby znaków.

0

Witam mam za zadanie napisanie programu który będzie zliczał liczbę znaków wprowadzanych. W pierwszej linii znajduje się liczba wprowadzanych ciągów znakowych, a następne to już ciągi. np

Wejście:

2
Poczatek
23572,asd,329956!!!

Wyjście:

8 8 0
19 3 11

Wszystko ładnie pięknie, napisałem program lecz jeszcze muszę zliczać znaki spacji, moje arcydzieło jednak liczy ciągi znaków po spacji jako oddzielne ciągi. Podaje kod mojego programu:

#include<iostream>
#include<string.h>

using namespace std;

int main()
{
    int n, l=0, m=0, f=0;
    char t[100][100];

    cin>>n;

    for(int i=0; i<n; i++)
    {
        cin>>t[i];
    for(int i=0; i<n; i++)
    {
        for (int z=0;z<31;z++)
        {         
            if (t[i][z]>='0' && t[i][z]<='9')
            {
                l++;
            }
            if (t[i][z]>='a' && t[i][z]<='z')
            {
                m++;
            }
            if (t[i][z]>='A' && t[i][z]<='Z')
            {
                m++;
            }
            if (t[i][z])
            {
                f++;
            }

            t[i][z]=0;
        }

    }
                cout<<f<<" "<<m<<" "<<l<<"\n";
            l=0, m=0, f=0;
    }
    return 0;
}

Prosił bym o przedstawienie sposobu w jaki można zażegnać mój problem.

1

string s;
getline(cin,s);
int dlugosclinii = s.size();

1

Widze ze zadanie jakby ze spoja, wiec pare uwag. Lepiej operowac na tablicy 1 wymiarowej i na biezaco wczytywac i wyswietlac wyniki. Jesli chcesz pobierac spacje to musisz wczytac dane do chara najlepiej przez cin.getline np.

char tab[100];
cin.getline(tab,100); 

Teraz przegladasz sobie tablice i sprawdzasz znak po znaku(tylko nie cala tablice) czy isalpha isdigit isspace i wyswietlasz wyniki. Dlugosc ciagu zwraca strlen

1

podejście obiektowe jest wygodniejsze, zakładając że na początku kodu wrzucisz magiczną linijkę ios_base::sync_with_stdio(0); to szybkość będzie porównywalna i rzadko kiedy zaważy o tym czy Twoje zadanie wykona się w oczekiwanym czasie

0

Oczywiscie ze wygodniejsze, tylko na spoju czesto podana jest max dlugosc danych na wejsciu, wiec mozna to sobie z gory ograniczyc wtedy. Osobiscie tez wole korzystac z takiego podejscia.

0

No ok to było bardzo pomocne, dzięki za odpowiedź, jeżeli to nie jest problem to bym prosił o podanie funkcji dla stringa która będzie zliczać liczby oraz cyfry.

1

ischar sprawdza czy to znak
isnum sprawdza czy to liczba
Iterować umiesz. Teraz trzeba to połączyć.

0

Fajnie dzięki za tak szybką odpowiedz. Możecie mi podać gdzie najszybciej znaleźć takie funkcje wraz z objaśnieniami ?

0

jeszcze ostatnie pytanie. Jakiej biblioteki należy użyć przy tych funkcjach?

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