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

Zagnieżdżone pętle w C++

+1 głos
273 wizyt
pytanie zadane 22 stycznia 2021 w C i C++ przez Karson Obywatel (1,000 p.)
Witam mam problem ze zrozumieniem zagnieżdżonych pętli i ich warunków. Mniej więcej wydaje mi się, że wiem co nie dzieje ale jednak chyba nie do końca. Mam zrobić zadanie o treści: Napisz program który za pomocą zagnieżdżonych pętli poprosi użytkownika o podanie liczby wyświetlanych wierszy. Następnie pokaż żądaną liczbę wierszy z gwiazdkami: jedna gwiazdka w pierwszym wierszu, dwie w drugim i tak dalej. Poniżej gwiazdki są poprzedzone dopełnieniami - kropkami pozwalającymi ustalić liczbe wierszy. Oto przykładowy wynik działania programu:

....*

...**

..***

.****

*****

Umiem zrobić pętle w której wyświetlają się same gwiazdki ale juz jak mam wyświetlić to i to, to nie za bardzo. Jakby komuś się chciało wyjaśnić działanie pętli i warunków to proszę o pomoc i z góry dziękuje.

2 odpowiedzi

0 głosów
odpowiedź 22 stycznia 2021 przez VBService Mędrzec (185,660 p.)
wybrane 22 stycznia 2021 przez Karson
 
Najlepsza

Użyłem długich nazw zmiennych, mam nadzieję, że komentarz będzie zbędny po analizie kodu. Pewnie na wykonanie tego zadania jest kilka innych sposobów, ale starałem się zrobić zapis jak najprostszy do zrozumienia. wink

    cin >> number_of_lines;
    
    for (int line=0; line<number_of_lines; ++line) {
        for (int dots_in_line=(number_of_lines-line)-1; dots_in_line>0; --dots_in_line) {
            cout << ".";
        }
        for (int stars_in_line=0; stars_in_line<=line; ++stars_in_line) {
            cout << "*"; 
        }
        cout << endl;
    }

nieco zmieniony zapis


    ...

    for (int line=1; line<=number_of_lines; ++line) {
        for (int dots_in_line=number_of_lines-line; dots_in_line>0; --dots_in_line) {
            cout << ".";
        }
        for (int stars_in_line=0; stars_in_line<line; ++stars_in_line) {
            cout << "*"; 
        }
        cout << endl;
    }

 

komentarz 22 stycznia 2021 przez Karson Obywatel (1,000 p.)
Tylko, że nie wiem do końca dlaczego pierwszy pętla zaczyna nie od 1. Czemu w środkowej pętli jest dots_in_line=number_of_lines-line; a nie np -1 i czemu w wewnętrznej pętli czemu zaczyna nie od 0.
1
komentarz 22 stycznia 2021 przez VBService Mędrzec (185,660 p.)
edycja 22 stycznia 2021 przez VBService

Może to choć trochę będzie pomocne wink

#include <iostream>
using namespace std;

int main()
{
    int number_of_lines = 0;
    cout << "Prosze podac liczbe wierszy: ";
    cin >> number_of_lines;
    
    for (int line=0; line<number_of_lines; ++line) {
        
        cout << "\nnumber_of_lines = " << number_of_lines << "\n";
        cout << "line = " << line << "  -  czyli: " << line + 1 << " wiersz\n";
        
        string dots = "";
        for (int dots_in_line=(number_of_lines-line)-1; dots_in_line>0; --dots_in_line) {
            dots += ".";
            cout << "dot_in_line = " << dots_in_line << "  " << dots << "\n";
        }
        
        cout << dots << "\n";
        
        string stars = "";        
        for (int stars_in_line=0; stars_in_line<=line; ++stars_in_line) {
            stars += "*";
            
            cout  << "line = " << line << "  -  stars_in_line = " << stars_in_line + 1 << "  " << stars << "\n"; 
        }
        
        cout << dots << stars << "\n";
        cout << endl;
    }

    return 0;
}

 

1
komentarz 24 stycznia 2021 przez Karson Obywatel (1,000 p.)

Wydaje mi się, że to zrozumiałem :) Dzięki wielkie za poświęcony czas i chęci!! Mogę uczyć się dalej, bo to nie dawało mi spokoju. Dzięki Wielkie jeszcze raz coolwink

+1 głos
odpowiedź 22 stycznia 2021 przez Michałełe Nałogowiec (25,600 p.)
Masz w zmiennej szerokość jednego wiersza - n

w pierszej iteracji wypisujesz (n-i) kropek, gdzie i to dama iteracja, i i gwiazdek

Podobne pytania

0 głosów
3 odpowiedzi 615 wizyt
pytanie zadane 2 maja 2020 w Python przez lenzo1 Początkujący (360 p.)
0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 24 czerwca 2019 w C i C++ przez magda_19 Gaduła (3,010 p.)
0 głosów
2 odpowiedzi 548 wizyt
pytanie zadane 5 lutego 2017 w C i C++ przez ofnero Użytkownik (830 p.)

89,082 zapytań

137,669 odpowiedzi

307,603 komentarzy

59,140 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...