• 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
62 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,720 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,720 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,720 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,720 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 35 wizyt
pytanie zadane 16 lutego w C i C++ przez avabuy Nowicjusz (210 p.)
0 głosów
1 odpowiedź 51 wizyt
0 głosów
0 odpowiedzi 21 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

61,205 zapytań

107,094 odpowiedzi

223,009 komentarzy

32,535 pasjonatów

Przeglądających: 163
Pasjonatów: 0 Gości: 163

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.

...