badanie zbieżności pętli

madaf007
Użytkownik
Użytkownik
Posty: 131
Rejestracja: 4 wrz 2008, o 17:01
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 33 razy

badanie zbieżności pętli

Post autor: madaf007 »

Na wstępie do informatyki mam takie zadanie wykonać:
Przeprowadź badanie zbieżności pętli
while(n>1)if(n%2)n=3*n+1; else n/=2;
Sprawdź liczby kroków która wykonuje ta pętla dla wszystkich liczb naturalnych \(\displaystyle{ n \le 1000.}\)

nie wiem jak za to się zabrać...
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

badanie zbieżności pętli

Post autor: kadiii »

Masz przeprowadzić badanie czyli najpewniej zrobić program testowy i sprawdzić zbieżność.
Swoja drogą jest to słynny problem Collatza
dodaje w bonusie kod tylko przeanalizuj wyniki(!) - to naprawdę ciekawy problem:

Kod: Zaznacz cały

#include <stdio.h>
#define MAX 10000
main() {
int x=2,y,i;
 while(x<=MAX)
 {
  y=x;
  i=0;
  while(y>1)
  {
   if(y%2==0) y/=2;
   else y=3*y+1;
   i++;
  }
  printf("dla %d zbiezny po %d krokach
",x,i);
  x++;
 }
 printf("KONIEC - wszystkie zbieżne do %d",MAX);
}
madaf007
Użytkownik
Użytkownik
Posty: 131
Rejestracja: 4 wrz 2008, o 17:01
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 33 razy

badanie zbieżności pętli

Post autor: madaf007 »

kadiii pisze:Masz przeprowadzić badanie czyli najpewniej zrobić program testowy i sprawdzić zbieżność.
Swoja drogą jest to słynny problem Collatza
dodaje w bonusie kod tylko przeanalizuj wyniki(!) - to naprawdę ciekawy problem:

Kod: Zaznacz cały

#include <stdio.h>
#define MAX 10000
main() {
int x=2,y,i;
 while(x<=MAX)
 {
  y=x;
  i=0;
  while(y>1)
  {
   if(y%2==0) y/=2;
   else y=3*y+1;
   i++;
  }
  printf("dla %d zbiezny po %d krokach
",x,i);
  x++;
 }
 printf("KONIEC - wszystkie zbieżne do %d",MAX);
}
dzięki wielkie:) tylko czemu zbieżność liczy mi od 703 a nie od 1?
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

badanie zbieżności pętli

Post autor: kadiii »

Bo tyle liczb wyświetla twoja konsola. Przekieruj sobie do pliku wyjście to zobaczysz, że program liczy od liczby 2( W linuksach zwyczajnie > wynik.txt w windowsie jakoś podobnie). A i jeszcze raz zachęcam do analizy wyniku.
ODPOWIEDZ