OK. Już to słyszałem. To nie jest „bardzo dokładna” informacja o tym co robisz, to jest tylko informacja o tym, co chcesz, żeby było zrobione. To nie jest to samo…
Używając metafory, to tak, jakbyś odpowiadał „jadę do Krakowa, na Tkacką 17/2B”, zapytany o to, jaką trasą jedziesz. A tutaj trzeba krok po kroku: „wyjeżdżam na obwodnicę, kieruję się na A4, jadę pod sam Kraków, zjeżdżam przy…”
To nie jest trywialne zadanie. Ono ma pewien niezerowy poziom algorytmiczny — czyli w zrozumieniu, jak to zrobić, krok po kroku. Nie ma znaczenia, czy na kartce papieru, czy na komputerze. Jest to coś, co trzeba samemu zrozumieć. I nie wiem, czy Ty to rozumiesz czy nie, a jeśli tak, to w jakim stopniu…
I jest też znajomość języka, którym się operuje przy tłumaczeniu komputerowi, jak i co ma zrobić. Tutaj jasnym jest, że C++ stwarza Ci ogromne problemy. Zatem doradzę Ci, jeszcze raz, tak: zostaw to zadanie. Naucz się podstaw C++ — w szczególności tego, jak działają pętle. Potem możesz wrócić do tego zadania — i wymyślić, jak krok po kroku je zrobić. I wreszcie poskładać te dwie rzeczy ze sobą — czyli wyjaśnić komputerowi, przy użyciu C++, jak on ma je rozwiązać.
Pobierze od użytkownika ile liczb ma być w tablicy, a potem jakie te liczby są, dlatego zmienna n i a.
n przechowuje ilość liczb, natomiast a ich wartość, 1 lub 0.
Nie wiesz zatem, co to jest zmienna typu int
, której używasz. int
przechowuje jedną wartość. Jak się chce mieć więcej, to potrzeba mieć kolekcję tych intów — na przykład tablicę czy (tutaj znacznie lepiej) wektor.
Spróbuj, samemu czy tutaj na forum, opisać swoimi słowami, krok po kroku, co każda linijka robi. Nie co Ty chcesz, żeby robiła, tylko co faktycznie dla komputera oznaczają te zapiski. Przykład:
int n,a,k; // deklaruję trzy zmienne globalne, n, a oraz k; są one domyślnie ustawiane na 0
int main()
{
cin >> n; // przyjmuję od użytkownika liczbę całkowitą i wrzucam ją do n
cin >> a; // przyjmuję od użytkownika liczbę całkowitą i wrzucam ją do a
for(int t[n];a<n-1;a++) // zaczynam od deklaracji VLA tablicy intów o rozmiarze n; a potem w pętli, tak długo jak a jest mniejsze od n-1, wykonuję poniższe instrukcje, a na koniec zwiększam a o jeden
if(a==1) // i tak dalej
cout<< k+1;
else
cout<< " ";
return 0;
}
Pomoże Ci to, być może, zobaczyć, co tak dokładnie robisz, i że nie ma to absolutnie nic wspólnego z Twoim zamierzonym celem.