Problem z programem

0

Witam,
W moim programie jest problem z if, gdyż program nie używa 1 else if. Załączam kod źródłowy.

#include <iostream>
using namespace std;
int main(){
    int i;
    int ilosc;
    cin>>ilosc;
    system("CLS");
    int tablica[ilosc];
    int hurra=1;
    int super=1;
    int wiwat=1;
    for(i=1; i<ilosc; i++){

        tablica[i] = i;
        if(hurra==7){
            cout<<"Hurra!"<< endl;
            hurra=1;
        } else if(super==11){
            cout<<"Super!"<< endl;
            super=1;
        } else if(wiwat==77){
            cout<<"Wiwat!"<<endl;
            wiwat=1;
        } else {
            cout<<i << endl;
        }
        hurra++;
        super++;
        wiwat++;        

    }
    cout<<i<<endl;

    return 0;
}
0

Gdzie masz błędne zachowanie? Dla jakich danych wejściowych?

1
2
3
4
5
6
Hurra!
8
9
10
Super!
12
Aby kontynuować, naciśnij dowolny klawisz . . .

0

Słowo "Super" wyświetla się zamiast liczb: 11,22,31 i tyle

0

Sam tak chciałeś.

else if(super==11){
            cout<<"Super!"<< endl;
            super=1;  // <- Resetujesz licznik, czyli warunek super==11 będzie spełniony co jedenaście iteracji
        }

Edit: Umknęło mi, że ustawiasz 1.
Pod koniec pętli robisz super++więc "zjadasz" jeden przebieg. Ustawiaj zmienne na 0.
Poza tym używasz else if, więc w którejś iteracji zarówno hurra == 7 jak i super == 11 są prawdziwe, ale tylko jeden jest wykonywany.

0

To jak zrobić "Super!" pokazywało się zamiast 11,22,33,44,55,66...

0

Po poprawie na 1 działa, ale tylko do momentu 66. Przy 77 jest "Hurra!", a przy 88 i 99 itd. nic

1
Emski napisał(a):

To jak zrobić "Super!" pokazywało się zamiast 11,22,33,44,55,66...

else if(super%10 == super/10%10)
0

Dziękuję

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