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