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

Alog. maturalne ( badanie , rozkłady sorotwanie itd. )

42 Warsaw Coding Academy
0 głosów
260 wizyt
pytanie zadane 12 kwietnia 2016 w Rozwój zawodowy, nauka, praca przez piotr432 Użytkownik (620 p.)

alogrymt

 

#include <iostream>

using namespace std;
int main ()
{
	int i = 2, n;
	cout << "Podaj liczbe: ";
	cin >> n;
	
	while (n > 1)
	{
		while (n % i == 0)
		{
			cout << n << "\t" << i << endl;
			n = n / i;
		}	
		i++;
	}
return 0;
}

 rozkład na czynniki pierwsze

Zgadza się ten schemat z tym kodem ?

1 odpowiedź

0 głosów
odpowiedź 12 kwietnia 2016 przez Porcupine Nałogowiec (31,560 p.)
Nie... weź na przykład n = 3 idąc Twoim schematem blokowym:
1) n > 1, bo 3 > 1
2) i = 2
3) n % i != 0 (więc przyjmując, że świadomie robisz niejawne rzutowanie typów warunek jest spełniony - TAK)
4) n = n / i czyli z n = 3/2 = 1
5) Wypisze: 1    1

Co zupełnie nie ma nic wspólnego z rozkładem na czynniki pierwsze...
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
n % i == 0 tak powinno być
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
nie wypisz bo tam gdzie n % i zapomniałem , że to ma być tak "n % i == 0  "
komentarz 12 kwietnia 2016 przez Porcupine Nałogowiec (31,560 p.)
Nadal nie działa, chociażby dlatego, że wtedy wchodzisz w pętle nieskończoną

i = 2 ----> n % i == 0 (zwraca NIE) ----> i = 2 + 1 = 3 ----> ponownie przypisujesz: i = 2....
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
włączyłeś program z kodu ?
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
n = 3

3>1 ( n>1) tak

i = 2

3 % 2 == 0 nie

i++ -> i=3

znowu wchodzi w pętle

3 / 3 = 1  nowa wartość n=1

wraca do pierwszego warunku

1>1 nie

 

koniec
komentarz 12 kwietnia 2016 przez Porcupine Nałogowiec (31,560 p.)
Nie, ale widzę co robi... problem w tym, a przynajmniej jeden z problemów to to, że ta strzałka, która wskazuje od: i = i + 1, wskazuje przed i = 2 zamiast po. Przez to za każdym razem po zwiększeniu i o jeden i tak przypiszesz do niego i = 2. Dlatego dla n - nieparzystych wartość Twojej zmiennej i będzie skakać: 2, 3, 2, 3, 2, 3, 2, 3, 2, ... i tak w nieskończoność....
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
W sumie to racja ;/ jakbym to poprawił było by dobrze ?
komentarz 12 kwietnia 2016 przez Porcupine Nałogowiec (31,560 p.)
Chyba tak :) Po za tym wydaje się być całkiem ok
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (620 p.)
Ok. jeszcze będę pisał zapewne w sprawie innych algo. :D Tymczasem dziękuje :)

Podobne pytania

0 głosów
0 odpowiedzi 632 wizyt
pytanie zadane 10 marca 2021 w Rozwój zawodowy, nauka, praca przez hacerberry Użytkownik (680 p.)
0 głosów
1 odpowiedź 2,039 wizyt
pytanie zadane 19 września 2022 w Sprzęt komputerowy przez Jerzy Użytkownik (950 p.)
+2 głosów
2 odpowiedzi 576 wizyt
pytanie zadane 16 października 2021 w Algorytmy przez mn130496 Gaduła (3,530 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...