|
more than 450 programs for free
|
![]() English |
![]() Slovensky |
![]() Česky |
![]() Šarišsky |
|
Category: Source in Pascal (KMP) Author: Ján Mojžiš Program: Postupnost.pas File exe: Postupnost.exe Zostavte program, kt. bude vo vzostupnom poradi vytvarat 100 najmensich cisel v mnozine M, ak je M definovana nasledujuco:
i) cislo 1 je z M ii) ak cislo x je z M, tak aj cisla 2x +1 a 3x +1 su z M iii) ziadne ine cisla, nez tie, ktore vzniknu pomocou pravidiel i) alebo ii), nepatria do M. Na ukazku uvedieme prvych sedem prvkov mnoziny M: 1,3,4,7,9,10,13,... Postupnost: vzorec: predosle je na zaciatku 1 1) cislo a = (predosle X 2) + 1 2) cislo b = (predosle X 3) + 1 cislo a a cislo b su pridane do zoznamu, ak tam este niesu (nieje). potom je predosle. Vtip je v tom, ze je treba nasledujuce predosle updatovat. Ale ako? Jednoducho pole[index], kde index je samostatny, a posuva sa len vtedy ked su vygenerovane nove cislo a a cislo b (na konci smycky repeat). Teda predosle = pole[index]. Views: 65x
{ ============== } { KSP 15. rocnik 115: Postupnost Copyright (c) Jan Mojzis } { ============== } { Zadanie: } { Zostavte program, kt. bude vo vzostupnom poradi vytvarat 100 najmensich } { cisel v mnozine M, ak je M definovana nasledujuco: } { i) cislo 1 je z M } { ii) ak cislo x je z M, tak aj cisla 2x +1 a 3x +1 su z M } { iii) ziadne ine cisla, nez tie, ktore vzniknu pomocou pravidiel i) alebo ii),} { nepatria do M. } { Na ukazku uvedieme prvych sedem prvkov mnoziny M: 1,3,4,7,9,10,13,... } { ----------------------------------------------------------------------------} { Postupnost: vzorec: } { predosle je na zaciatku 1 } { 1) cislo a = (predosle X 2) + 1 } { 2) cislo b = (predosle X 3) + 1 } { } { cislo a a cislo b su pridane do zoznamu, ak tam este niesu (nieje). } { potom je predosle. } { Vtip je v tom, ze je treba nasledujuce predosle updatovat. Ale ako? } { Jednoducho pole[index], kde index je samostatny, a posuva sa len vtedy} { ked su vygenerovane nove cislo a a cislo b (na konci smycky repeat).} { Teda predosle = pole[index]. } { } { Author: (c) 2007 Jan Mojzis } { Date : 06.07.2008 http://www.trsek.com } program postupnost; var i,p,q : integer; generovane,generovane2 : integer; najdene,zapisuj : boolean; M : array[1..100] of integer; M_i : integer; cislo : integer; temp : integer; procedure zatried(var pole : array of integer); { Zatriedenie na koniec } var p,q, pom,pom2 : integer; begin for p := 1 to 100 do begin for q := 100 downto p do begin if M[p] > M[q] then begin pom:=M[p]; pom2:=M[q]; M[q]:=pom; M[p]:=pom2; end; end; end; end; begin generovane:=1; generovane2:=1; M_i := 1; { kazde cislo ktore vygenerujeme, } { musime znovugenerovat cez obidva } najdene :=false; { vzorce 2xCislo[index] + 1 a } M[1]:=1; { 3xCislo[index] + 1 a az } cislo:=1; { (pozn.autor) na zaciatku je cislo } temp:=0; { nastavene na 1. } repeat zapisuj:=true; generovane:= (2 * cislo) + 1; generovane2:= ( 3 * cislo) + 1; for i := 1 to 100 do { jednotku uz v poli nechceme, uz ju mame } if (M[i] = generovane) or (M[i] = generovane2) then zapisuj:=false; if zapisuj then begin inc(M_i); if(M_i) = 100 then begin M_i:=100; najdene:=true; M[M_i]:=generovane end else begin M[M_i]:=generovane; { write(',',generovane); } inc(M_i); if(M_i) = 100 then begin M_i:=100; najdene:=true; M[M_i]:=generovane2; end else begin M[M_i]:=generovane2; { write(',',generovane2); } end; end; end; inc(temp); cislo:=M[temp]; { inkrement indexu matice s } until najdene; { generovanymi cislami, pre vyrobu } { novych gen. cisel } zatried(M); { USETRIME CAS, KED TO SPRAVIME AZ NA KONCI } write('Cisla : ',M[1]); for i := 2 to 100 do write(',',M[i]); { potom je index+1,... } writeln; writeln('..To vse, pocet cisel: ', high(M)); readln; end. [Run] [Save] [Print] [Send e-mail] |
|