• 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. )

0 głosów
63 wizyt
pytanie zadane 12 kwietnia 2016 w Rozwój zawodowy, nauka, szkoła, praca przez piotr432 Użytkownik (600 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,710 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 (600 p.)
n % i == 0 tak powinno być
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (600 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,710 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 (600 p.)
włączyłeś program z kodu ?
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (600 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,710 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 (600 p.)
W sumie to racja ;/ jakbym to poprawił było by dobrze ?
komentarz 12 kwietnia 2016 przez Porcupine Nałogowiec (31,710 p.)
Chyba tak :) Po za tym wydaje się być całkiem ok
komentarz 12 kwietnia 2016 przez piotr432 Użytkownik (600 p.)
Ok. jeszcze będę pisał zapewne w sprawie innych algo. :D Tymczasem dziękuje :)

Podobne pytania

0 głosów
0 odpowiedzi 43 wizyt
pytanie zadane 16 lutego w C i C++ przez avabuy Nowicjusz (210 p.)
0 głosów
1 odpowiedź 52 wizyt
0 głosów
0 odpowiedzi 30 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

64,859 zapytań

111,316 odpowiedzi

234,167 komentarzy

46,724 pasjonatów

Przeglądających: 242
Pasjonatów: 12 Gości: 230

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...