Liczba znaków w tablicy znaków za pomocą pętli for

0

Witam, mam napisać program który zliczy liczbę znaków w tablicy znaków. Musi to być wykonane za pomocą pętli for. Mam kod ale zawsze wyświetla 9 i nie do końca wiem gdzie jest błąd.

 #include <iostream>

using namespace std;

int main()
{
    //liczba znakow w tablicy

    char tab_znak[10]={"Boom booM"};
    int wynik;

    for (int znak=0;znak<10;znak++)
        {
            wynik=znak;
        }
    cout<<wynik<<endl; 

jest to fragment programu, nie całość.

0

wynik = znak, a ostatnią wartością zmiennej znak w pętli to 9, stąd masz taki wynik.

0

tak też myślałam, tylko co z tym zrobić, żeby działało jak należy?

1

Jeśli jako "należy" rozumiesz zliczanie znaków A-Za-z, to trzeba

zeruj wynik
for ()
    jesli znak w tablicy to A-Za-z
        zwieksz wynik o 1
0

Ma zliczyć znaki z tablicy czyli w moim przyadku "Boom booM" - 9 znaków. A jak usunę spację i będzie "BoombooM" ma wyświetlić 8 znaków. A nie jak u mnie, wciąż 9. To mam na mysli mówiąc "należy" ;)

1
int wynik=0;
while(tab_znak[wynik]) ++wynik;
cout<<wynik<<endl; 
0
dag napisał(a):

Musi to być wykonane za pomocą pętli for.

3

Dopóki nie jest za późno zmień kierunek na dziennikarstwo.

for(;tab_znak[wynik];) ++wynik;
0
int wynik = 0;
for (; tab_znak[wynik] != '\0'; ++wynik);
cout << wynik << endl;
1
_13th_Dragon napisał(a):

Dopóki nie jest za późno zmień kierunek na dziennikarstwo.

Panu już dziękuję za pomoc ;)

2

@dag ty wiesz co się w kodzie dzieje? Masz pętlę for z licznikiem. Licznik zwiększasz o 1 i wpisujesz do wynik zawsze wartość tego licznika. Czyli za każdym razem jak uruchomisz program będzie on przyjmował kolejno wartości: 0,1,2,3,4,5,6,7,8,9. Ostatnią wartością jest 9 i to właśnie widzisz na ekranie.
Kolejna rzecz, że twoja pętla for nie ma nic wspólnego z tablicą znaków, którą deklarujesz wcześniej. Możesz ją równie dobrze usunąć i program nadal będzie działać. Trochę niepokojące prawda?

Pytanie: czy spacje też mają być wliczane? Czy mają być zliczane znaki alfanumeryczne czy wszystkie poza białymi?

0

A zadanie nie brzmiało czasem: zastanów się nad wykorzystaniem pętli for do obliczenia długości łańcucha znaków? Bo ciężko mi uwierzyć, że taki poziom prezentują zadania na pwr. Wykorzystywanie tu pętli for mija się z celem.

1

Nie będzie gotowca bo to jest zbyt banalny problem. Poczytaj o tablicach znaków w C++ i o pętli for, a ja dam pseudokod:

wynik = 0
for i = 0 to  rozmiar_tablicy - 1
   znak = pobierz znak na pozycji i
     if znak = 0 then
        break;
     else
         wynik = wynik + 1
     end if
end for

Skoro już tak bardzo potrzebujesz pętli for

0

Dzięki za pomoc, wyjaśnię dlaczego męczę z pętlą for, zrobiłam to inaczej i tak też wysłałam zadanie ale wiem, że większość w tym pan dr robili to za pomocą pętli for więc z czystej ciekawości zapytałam tutaj bo sama nad tą pętlą muszę jeszcze posiedzieć. Temat uważam za zamknięty.

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