HELP pascal
HELP pascal
zdravím. potreboval by som pomoc s programom v pascale
PR.
Napíšte program, ktorým nájdete najväčšieho spoločného deliteľa N zadaných čísel. Užívateľ hodnotu N zadá.
keby bola znama ta hodnota N, tak by som si s tym vedel poradit, ale ked ze nie je potreboval by som pomoc.
toto je program pre 2 cisla, no ja by som potreboval pre N cisel, pomozete? za odpovede vopred dakujem.
program spoldel;
uses crt;
var
number_1,number_2,temp : integer;
begin
clrscr;
writeln('Program na vypocet najvacsieho spolocneho delitela');
writeln('Zadaj prve cislo');
readln(number_1);
writeln('Zadaj druhe cislo');
readln(number_2);
clrscr;
Repeat
IF number_1 < number_2 THEN
begin
temp := number_1;
number_1 := number_2;
number_2 := temp;
end;
number_1 := number_1 mod number_2;
Until number_1 = 0;
writeln(number_2);
readln;
end.
PR.
Napíšte program, ktorým nájdete najväčšieho spoločného deliteľa N zadaných čísel. Užívateľ hodnotu N zadá.
keby bola znama ta hodnota N, tak by som si s tym vedel poradit, ale ked ze nie je potreboval by som pomoc.
toto je program pre 2 cisla, no ja by som potreboval pre N cisel, pomozete? za odpovede vopred dakujem.
program spoldel;
uses crt;
var
number_1,number_2,temp : integer;
begin
clrscr;
writeln('Program na vypocet najvacsieho spolocneho delitela');
writeln('Zadaj prve cislo');
readln(number_1);
writeln('Zadaj druhe cislo');
readln(number_2);
clrscr;
Repeat
IF number_1 < number_2 THEN
begin
temp := number_1;
number_1 := number_2;
number_2 := temp;
end;
number_1 := number_1 mod number_2;
Until number_1 = 0;
writeln(number_2);
readln;
end.
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: HELP pascal
no ved to, že ja mam problem to urobiť v pascale a nie najsť vzorec, ale aj tak dik 
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: HELP pascal
Ja som uz zabudol v nom kodit, tak som skopiroval prvy lik ktori som nasiel.
Kód: Vybrať všetko
program ea;
var x,y:integer;
begin
writeln('Euklidov algortimus ');
writeln('Zadaj x,y');
readln(x,y);
repeat
if x>y then x:= x-y;
if y>x then y:= y-x;
until x=y;
writeln('NSD= ',x);
readln;
end.
Re: HELP pascal
Lenze to je riesenie pre 2 cisla. Avsak on potrebuje riesenie pre N cisiel, teda i viac.
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: HELP pascal
Tak pouzije Euklidov algoritmus na dvojice z cisel ( parne + neparne) , s toho ziska len polovicny pocet tychto cisel, a postup opkuje pokial nema jedno,
nejako sa to da urcite napisat ako pekna rekurzia .
Keby si este pametam pascaltak ti to napisem
Este lepsi napad zo O(n)
pouzijes Euklidov algoritmus na prve dve cisla, potom jeho vysledok vlozis donho polu z dalsim cislom postupnosti a pokracujes dokonca.
nejako sa to da urcite napisat ako pekna rekurzia .
Keby si este pametam pascaltak ti to napisem
Este lepsi napad zo O(n)
Re: HELP pascal
no keby sa našiel človek čo by mi to napisal tak to by bola ozaj veľka vďaka, lebo z toho čo tu hovorite rozumiem asi tak viete čomu 
Re: HELP pascal
Kód: Vybrať všetko
program ea;
var x,y:integer;
begin
writeln('Euklidov algortimus ');
writeln('Zadaj cislo ');
readln(x);
repeat
writeln('Zadaj dalsie cislo ');
readln(y);
if (y = 0)
break;
repeat
if x>y then x:= x-y;
if y>x then y:= y-x;
until x=y;
until 1=1;
writeln('NSD= ',x);
readln;
end.
Re: HELP pascal
v pascale mi to nejde, naskočí mi chybac-ice napísal:stale pridavas cisla ... kym nezadas nulu a mas to pre N cisel... iba copy paste harrisnov kod ... pridany cyklus ktory som chcel uz pridat do jeho kodu len sa mi nechcelo rozmyslat ci ma na to dobry algoritmus ...Kód: Vybrať všetko
program ea; var x,y:integer; begin writeln('Euklidov algortimus '); writeln('Zadaj cislo '); readln(x); repeat writeln('Zadaj dalsie cislo '); readln(y); if (y = 0) break; repeat if x>y then x:= x-y; if y>x then y:= y-x; until x=y; until 1=1; writeln('NSD= ',x); readln; end.
Re: HELP pascal
a ja mam vediet syntax ? preco nenapises aka chyba ti naskoci ... ten IF sisi tam neprepisal ... IF y = 0 THEN BREAK;
Re: HELP pascal
No lebo tam je chybka a to
namiesto:
if (y = 0) break;
if (y = 0) then Break;
a (len pre upravu)
until 1=1
until True
namiesto:
if (y = 0) break;
if (y = 0) then Break;
a (len pre upravu)
until 1=1
until True
Re: HELP pascal
už to ide ale ono je to stale len na 2 čísla, ale ja by som to potreboval urobiť tak, aby sa ma pýtalo, z koľkých čísel to má urobiť, a potom aby som ich tam mohol toľko zadať.
Re: HELP pascal
toto je na N cisel ... mozeš ich davat do vtedy kym ta to neprestane bavit a nezadaš nulu...
prehod prvy repeat until na For cyklus a pred cele pridaj nacitania kolko krat N sa to ma vykonat + kontrolu N => 2 tym ze for bude zacinat i := 2 a podmienka bude i =< N ... a inkrementovat budeš o jedna ...
prehod prvy repeat until na For cyklus a pred cele pridaj nacitania kolko krat N sa to ma vykonat + kontrolu N => 2 tym ze for bude zacinat i := 2 a podmienka bude i =< N ... a inkrementovat budeš o jedna ...
Re: HELP pascal
nechcem byť dotieravý, viem že otravujem ale nemohol by si mi to upraviť ty?
ako si si určite všimol tak ja som z toho dosť jeleň
bol by som ti veľmi vďačný
ako si si určite všimol tak ja som z toho dosť jeleň
bol by som ti veľmi vďačný
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: HELP pascal
Nehovorim ze je to OK
Kód: Vybrať všetko
program ea;
var x,y,pocet:integer;
begin
writeln('Euklidov algortimus ');
write('Zadaj pocet cisel ');
read(pocet);
pocet:=pocet-1;
write ('Zadaj cislo ');
readln(x);
repeat
writeln('Zadaj cislo ');
readln(y);
if (y = 0) then break;
repeat
if x>y then x:= x-y;
if y>x then y:= y-x;
until x=y;
pocet:=pocet-1;
until pocet <=0;
writeln('NSD= ',x);
readln;
end.
Re: HELP pascal
kámo, maš u mňa pivo... fakt veľke vďaka
samozrejme aj ostatným ďakujem za pomoc

samozrejme aj ostatným ďakujem za pomoc