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

Problem z pętlą for

Object Storage Arubacloud
0 głosów
788 wizyt
pytanie zadane 8 października 2019 w C i C++ przez rel Początkujący (340 p.)

Witam, piszę ze swoim problemem związanym z nieumiejętnością dokończenia programu. Ten program c++ w założeniu powinien wczytywać od użytkownika liczbę, a następnie wyświetlać potęgi trzeciego stopnia poprzednich liczb od 1 w gorę i je sumować np.: użytkownik wybiera 5 - wyświetla się 1^3=1, 2^3=8, [...], 5^3=125, a następnie suma wyników potęgowania (1 + 8 + [...] + 125). Doszedłem do momentu, w którym prawidłowo wyświetlają się wyniki potęgowania, ale nie umiem ich dodać. Proszę o pomoc.

#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cout << "Podaj liczbe\n";
	cin >> a;
	for (b = 1; b <= a; b = b + 1)
		cout << b << '^' << 3 << '=' << b * b * b << endl;
	cout << "Suma poteg:";



}

 

2 odpowiedzi

+2 głosów
odpowiedź 8 października 2019 przez radek024 Szeryf (77,160 p.)
wybrane 8 października 2019 przez rel
 
Najlepsza
Czy masz jakiś konkretny powód, dla którego definiujesz zmienną b nie w pętli? Trochę bez sensu. Jeżeli chcesz coś sumować, to warto byłoby pomyśleć o jakiejś zmiennej, która będzie zbierała kolejne potęgi. Dodałbym też klamerki - bez nich pętla ogranicza się do jednej instrukcji, a wyjście na ekran i dodawanie kolejnych potęg to już dwie operacje.

Aby rozwiązania nie dawać w pełni, a jeszcze bardziej naprowadzić - gdzie należy zdefiniować zmienną, aby za każdym razem się nie zerowała?
komentarz 8 października 2019 przez rel Początkujący (340 p.)
Dzięki za odpowiedź, ale jestem totalnym żółtodziobem jeżeli chodzi o programowanie i te pytania mogą wydać się głupie lub irytujące, ale

-rozumiem, że definiowanie zmiennej w pętli zamiast poza nią ma znaczenie (?)

-w którym miejscu powinienem dodać klamerki?

Tak jak powiedziałeś dodałem kolejną zmienną, ale nie za bardzo wiem co z nią dalej zrobić.
komentarz 8 października 2019 przez radek024 Szeryf (77,160 p.)

rozumiem, że definiowanie zmiennej w pętli zamiast poza nią ma znaczenie

Tak, to się nazywa zakresami. Jak wiadomo, pętla wykonuje kod wewnątrz jej ciała. Przykład:

int obrot=0;

for(int i=0; i<5; i++){
obrot=obrot+1;
}

 Po zakończeniu pętli, zmienna obrot=4. Dzieje się tak ze względu warunku pętli. A co jeżeli zmienimy delikatnie kod?

for(int i=0; i<5; i++){
int obrot=0;
obrot=obrot+1;
}

Ile teraz równa jest zmienna obrot? To z początku trudne do ogarnięcia, ale 1. Dzieje się tak ze względu na definiowanie owej zmiennej za każdym obrotem pętli. Dopiero dla i=4 (czyli ostatniego kroku, który spełnia warunek) dodanie jedynki działa.

 

w którym miejscu powinienem dodać klamerki?

Zobacz na kod - klamerki są zaraz za pętlą.

komentarz 8 października 2019 przez rel Początkujący (340 p.)
Dzięki wielkie, za wyczerpującą odpowiedź, teraz już rozumiem :)

Najlepsza odpowiedź za to, że chciało Ci się tłumaczyć :)
komentarz 8 października 2019 przez Ezzadanko5head Nowicjusz (180 p.)

@rel, Jeśli chodzi o klamerki to jeśli w pętli masz tylko jedną instrukcje to nie musisz ich dodawać wcale, a jeśli pętla zawiera więcej niż jedną instrukcje to klamrę otwierającą dodajesz po rozpisaniu działania pętli a zamykającą po wszystkich instrukcjach jakie ma wykonać pęlta np:

for(int i=0; i<5; i++){
//Tu wpisujesz instrukcje
}


komentarz 8 października 2019 przez rel Początkujący (340 p.)
Też myślałem w tym kierunku, ale dobrze mieć jasne wytłumaczenie, dzięki :)
+1 głos
odpowiedź 8 października 2019 przez tkz Nałogowiec (42,000 p.)

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cout << "Podaj liczbe\n";
    cin >> a;
    int suma = 0;
    for (b = 1; b <= a; b = b + 1)
    {
        cout << b << '^' << 3 << '=' << b * b * b << endl;
        suma+=b * b * b;
    }
    cout << "Suma poteg: "<< suma;
 
 
 
}

cpp.sh/5eusn

komentarz 8 października 2019 przez rel Początkujący (340 p.)
Dzięki za odpowiedź :)

Podobne pytania

0 głosów
1 odpowiedź 165 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
+2 głosów
2 odpowiedzi 282 wizyt
pytanie zadane 25 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)
0 głosów
1 odpowiedź 514 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)

92,536 zapytań

141,377 odpowiedzi

319,455 komentarzy

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

...