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

Problem z pętlą for

VPS Starter Arubacloud
0 głosów
774 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,180 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,180 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ź 162 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
+2 głosów
2 odpowiedzi 281 wizyt
pytanie zadane 25 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)
0 głosów
1 odpowiedź 497 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...