• 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++

Object Storage Arubacloud
+1 głos
955 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 Ekspert (253,100 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 Ekspert (253,100 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 1,003 wizyt
pytanie zadane 2 maja 2020 w Python przez lenzo1 Początkujący (360 p.)
0 głosów
1 odpowiedź 750 wizyt
pytanie zadane 24 czerwca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
2 odpowiedzi 787 wizyt
pytanie zadane 5 lutego 2017 w C i C++ przez ofnero Użytkownik (830 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

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

...