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

Zadanie z potęgami

Object Storage Arubacloud
0 głosów
1,094 wizyt
pytanie zadane 9 września 2017 w C i C++ przez student97 Nowicjusz (210 p.)
Hej,

Wie ktoś może jak zrobić taki program, aby pobierał od użytkownika potęgę do której mają być podniesione liczby np. z przedziału od 1 do 20 :D z zastosowaniem pętli while.

2 odpowiedzi

0 głosów
odpowiedź 9 września 2017 przez marcin99b Szeryf (82,180 p.)
pobierasz od użytkownika 2 zmienne, albo robisz to na tablicach (array)

stosujesz pętle while która podrabia pętle for

działa

Obstawiam że w szkole dali ci takie zadanie, żebyś nauczył się jak robić inaczej, niż normalnie
komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)
Nie, po prostu uczę się programować w C i tak mnie naszło, jakby to można było wykonać, bo to jest coś minimalnie trudniejszego od tego zwykłego potęgowanie xd
0 głosów
odpowiedź 9 września 2017 przez niezalogowany
edycja 9 września 2017

3^5 = 3*3*3*3*3
Czyli pętlą musisz 5 razy wymnożyć 3. Pętlę while możesz użyć tak:

int podstawa, wykladnik;
// tu zrob przypisywanie wartosci

int wynik = 1; // bo mnozenie
while (wykladnik--) 
{
	wynik *= podstawa;
}

Wykładnik po wykonaniu ciała pętli zostaje zmniejszony o 1. Gdy będzie równy 0 pętla zakończy się (gdy inna wartość pętla będzie wciąż wykonywana).

komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)

Zastosowałem to co mi napisałeś i nie działa, a ja takie coś mam, tylko nie wiem jak wynik zrobić

int main()
{
    int podstawa=0;
    int wykladnik;
    int wynik;
    printf("Podaj potege do ktorej chcesz podniesc podstawe: ");
    scanf("%d", &wykladnik);


    while(++podstawa<=20)
    {
        
        printf("%d ^ %d=%d\n",podstawa,wykladnik,wynik);
    }
    return 0;
}

 

komentarz 9 września 2017 przez niezalogowany

Możesz zrobić to tak:

#include <stdio.h>

int main()
{
	int podstawa = 0;
	int wykladnik;
	
	printf("Podaj potege do ktorej chcesz podniesc podstawe: ");
	scanf("%d", &wykladnik);

	while (++podstawa <= 20)
	{
		int wynik = 1; 
		int i = wykladnik; // zeby nie zmieniac wykladnika
		while (i--)
		{
			wynik *= podstawa;
		}

		printf("%d ^ %d = %d\n", podstawa, wykladnik, wynik);
	}
}
komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)
A czemu trzeba dwie pętle while robić i czemu wykładnik--? nie rozumiem tego
komentarz 9 września 2017 przez niezalogowany
Pierwsza pętla liczy kolejne wyniki dla różnych podstaw. Druga liczy samą potęgę.
3^3 = 3*3*3

3^4 = 3*3*3*3

Pętlą mnożę więc tyle razy ile wynosi wykładnik. Chyba, że chcesz to zrobić pętlą for, albo skorzystać z gotowej funkcji pow. Jak wolisz ;)
komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)
dalej nie rozumiem czemu wykładnik--? jakiś chyba ciemny jestemxd
komentarz 9 września 2017 przez niezalogowany

Dobra od początku, bo ja tak dużo wiem, a to nie musi być wszystko takie oczywiste na pierwszy rzut oka. 

Masz pętlę while. W while masz warunek. Warunki albo są PRAWDZIWE, albo FAŁSZYWE. Prawda to wartość true, 1, albo jakakolwiek !=0 liczba. Fałsz to false, 0. Pętla działa tak długo jak warunek jest prawdziwy. W drugim kodzie użyłem zamiast wykładnika zmiennej o nazwie i (żeby samego wykładnika nie zmieniać). Przeanalizuj taki kod:

int main()
{
	int i = 5;
	while (i--)
	{
		printf("%d\n", i);
	}
}

Pętla wykonała się 5 razy, bo:
 

while(i=5) prawda wykonuje {}
zmniejszam i o 1
while(i=4) prawda wykonuje {}
zmniejszam i o 1
while(i=3) prawda wykonuje {}
zmniejszam i o 1
while(i=2) prawda wykonuje {}
zmniejszam i o 1
while(i=1) prawda wykonuje {}
zmniejszam i o 1
while(i=0) fałsz kuniec
komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)
No to rozumiem, a czemu własnie wykladnik ma byc zmniejszany jak ma być on stały, bo przeciez wpisuje go użytkownik
komentarz 9 września 2017 przez niezalogowany
Dlatego widząc co dokładnie chcesz zrobić użyłem nowej zmiennej by wykładnika nie zmieniać :P Zmieniam zmienną i od wartości początkowej wykładnika, a wykładnik tym razem jest bez zmian.
komentarz 9 września 2017 przez student97 Nowicjusz (210 p.)
Czyli gdy się użyje nowej zmiennej by wykladnika nie zmieniać to on robi się stały czy jak? :(
komentarz 9 września 2017 przez niezalogowany
Jak go nie ruszasz to się nie zmienia

Podobne pytania

0 głosów
2 odpowiedzi 218 wizyt
pytanie zadane 15 stycznia 2018 w C i C++ przez Admin Cpp Początkujący (350 p.)
0 głosów
2 odpowiedzi 573 wizyt
pytanie zadane 18 października 2018 w Java przez blofeld Użytkownik (700 p.)
0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 9 kwietnia 2018 w C# przez mariola1167 Nowicjusz (140 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...