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

strcmp () funkcja porównania w petli while pomoc

Object Storage Arubacloud
+1 głos
415 wizyt
pytanie zadane 1 lipca 2016 w C i C++ przez 1naswiecie Początkujący (410 p.)

Witam mam problem . Ostrzegam że jestem zielony, dopiero się uczę  więc proszę o wyrozumiałość :)

Oto kod:

 

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    const int Size = 100;
    char word [Size];
    int numberword=0;
    char matchword [] = "gotowe";

    cout << "Podaj slowa (kiedy skonczysz napisz \"gotowe\"" << endl;
    cin >> word;

    while (strcmp(word, matchword)!= 0 )
    {
        cin >> word;
        ++numberword;

    }
    cout << "Podano " << numberword << " slow."<< endl;


    return 0;
}

 

Pytanie jest takie, proszę wytłumaczcie mi co dokladnie się dzieje w tym kodzie.
Przede wszystkim, co się dzieje w warunku pętli. Czy to zero za znakiem różne jest typem bool ( False)?
Jak to się dzieje że program zamyka pętle w momencie kiedy wpisze słowo "gotowe:"?
Po co istnieje strumień wejścia CIN przed pętlą i w środku pętli. 
 z góry dziękuje. 
 

2 odpowiedzi

+1 głos
odpowiedź 1 lipca 2016 przez PestkiGrochu Początkujący (460 p.)
wybrane 1 lipca 2016 przez 1naswiecie
 
Najlepsza
1. W warunku pętli porównywane są dwie tablice charów, zwracana jest prawda, jeśli są identyczne ( prawda w c++ odpowiada 1, a fałsz 0), wynik porównania jest następnie porównywany do różny od 0(jeśli różny to cały warunek jest prawdziwy). Czyli jeśli tablice word i matchword przechowują inne słowa to program wchodzi do pętli. W pętli ponownie pobierane jest z klawiatury słowo, oraz zwiększa się zmienną numberworld o 1, po czym znowu sprawdzany jest warunek pętli, gdyż iteracja się skończyła. Jeśli warunek jest prawdziwy (czyli w poprzedniej iteracji podano znajdujące się w matchword słowo), to program nie wchodzi więcej do pętli i wykonuje kolejne instrukcje znajdujące się za nią.

2. Strumień wejścia istnieje przed pętlą, ponieważ warunek pętli porównuje tablice word i matchword, bez niego pierwsza iteracja byłaby zawsze wykonywana(bo nic tam wcześniej nie ma, więc word nie jest taki sam jak matchword, w którym jest słowo kluczowe) nawet jeśli od razu podano by słowo klucz: "gotowe".

3. Jeśli podasz słowo "gotowe", to zostanie ono zapisane w tablicy word, która to porównywana jest z tablicą matchword w warunku pętli.

4. Strumień musi być wewnątrz pętli, ponieważ bez niego program sprawdzałby tylko raz podane słowo, po czym skończyłby się, gdyby podano słowo "gotowe", lub w przeciwnym przypadku wpadł w pętlę nieskończoną.

Pozdrawiam,
Mam nadzieję, że pomogłem.
komentarz 1 lipca 2016 przez 1naswiecie Początkujący (410 p.)
Ok czyli jeśli tablicy char word  chociaż jedno słowo będzie identyczne jak w tablicy matchword to wtedy da mi true ?
Bo jeśli w word wpisze : Ala ma kota gotowe
a w matchword przypisane jest: gotowe
to wystarczy że word ma słowo gotowe to funkcja czyta to jako identyczne?
bardzo pomogles dziekuje .
komentarz 3 lipca 2016 przez PestkiGrochu Początkujący (460 p.)
Z tego co się orientuje to dla tablicy charów obiekt cin ignoruje znaki białe. Poszczególne słowa lądują w buforze i "czekają" w nim aż do kolejnego użycia cin. Jeśli wpiszesz zdanie to wykona się kilka iteracji(po jednej dla każdego słowa).
+1 głos
odpowiedź 1 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)

Jak jesteś zielony i dopiero się uczysz, to się naucz analizować kod.

Co do funkcji strcmp, to łap. Resztę rzeczy powinieneś znać.

komentarz 1 lipca 2016 przez 1naswiecie Początkujący (410 p.)
Wiesz, dokladnie cały czas ucze się analizować dlatego dałem ten post, po prostu niektóre rzczy się rozumie a niektóre nie :) kto pyta nie błądzi :) Dziękuje za odnośnik

Podobne pytania

0 głosów
1 odpowiedź 76 wizyt
pytanie zadane 4 grudnia 2019 w C i C++ przez danielo665 Obywatel (1,040 p.)
0 głosów
0 odpowiedzi 231 wizyt
pytanie zadane 24 maja 2022 w C i C++ przez zibi100 Nowicjusz (120 p.)
+1 głos
1 odpowiedź 450 wizyt
pytanie zadane 15 lutego 2017 w Python przez michalrudy Użytkownik (520 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...