pascal ulohy (pomoc)
pascal ulohy (pomoc)
Ma niekto tieto programy v pascale urobene a napisal by sem zdrojaky, alebo ak nie, tak by ste mi mohli pomoct aspon s tymi ktore viete, dakujem vopred...
--Vytvorte podprogram pre výpis Pascalovho trojuholníka až do rádu n. Poznámka: Pascalov trojuholník pozostáva z kombinačných čísel
--Zostavte podprogram na výpočet najmenšieho spoločného násobku dvoch čísel.
--Zostavte podprogram na krátenie zlomkov, v riešení využite procedúru NSD.
--Zostavte podprogram na výpočet súčtu cifier na párnych pozíciách od najnižších rádov.
--Vytvorte podprogram, ktorý rozhodne o celom čísle , či je dokonalé. Poznámka: ( Číslo je dokonalé , ak sa rovná súčtu svojich deliteľov okrem seba samého.)
--Zostavte podprogram, ktorý zistí, či cifra K sa nachádza v zápise čísla N.
--Zostavte podprogram, ktorý zistí, či dané číslo sa rovná druhej mocnine svojho ciferného súčtu.
--Vytvorte podprogram, ktorá prevedie prirodzené číslo z dvojkovej pozičnej sústavy do desiatkovej .
--Vytvorte podprogram pre výpis Pascalovho trojuholníka až do rádu n. Poznámka: Pascalov trojuholník pozostáva z kombinačných čísel
--Zostavte podprogram na výpočet najmenšieho spoločného násobku dvoch čísel.
--Zostavte podprogram na krátenie zlomkov, v riešení využite procedúru NSD.
--Zostavte podprogram na výpočet súčtu cifier na párnych pozíciách od najnižších rádov.
--Vytvorte podprogram, ktorý rozhodne o celom čísle , či je dokonalé. Poznámka: ( Číslo je dokonalé , ak sa rovná súčtu svojich deliteľov okrem seba samého.)
--Zostavte podprogram, ktorý zistí, či cifra K sa nachádza v zápise čísla N.
--Zostavte podprogram, ktorý zistí, či dané číslo sa rovná druhej mocnine svojho ciferného súčtu.
--Vytvorte podprogram, ktorá prevedie prirodzené číslo z dvojkovej pozičnej sústavy do desiatkovej .
NSD:
Ale nie. Skus sa pozriet do temy v Programovani, kde som uploadol do prilohy moje zdrojaky programov v pascale. Mohol by som ti niektore programy spravit, ale to by si sa nic nenaucil.
A navyse teraz nemam vobec casu sa babrat s pascalom. No a tie ulohy, ktore ti treba nie su vobec narocne, tak sa posnaz trosku. 
Mal by som mat niekde aj dalsie ulohy, ale komu sa chce hladat. Vsak?program najvacsi_spolocny_delitel; {16}
uses crt;
var M,N,i:integer;
function JEDEL(a,b:integer):boolean;
begin
if (a mod b)=0 then jedel:=true
else jedel:=false;
end;
function MAX(a,b:integer):integer;
begin
if a>b then MAX:=a
else MAX:=b;
end;
function SPOLDEL(a,b,x:integer):boolean;
begin
if ((a mod x)=0)and ((b mod x)=0)then SPOLDEL:=true
else SPOLDEL:=false;
end;
function NSD(a,b:integer):integer;
var x:integer;
begin
for i:=1 to MAX(a,b) do
begin
if SPOLDEL(a,b,i) then x:=i;
end;
NSD:=x;
end;
BEGIN
clrscr;
writeln('Zadaj 2 cisla, ktorych NSD chces vypocitat:');
readln(M,N);
writeln('Delitele cisla M=',M);
for i:=1 to M do
if JEDEL(M,i) then write(i,',');
writeln;writeln;
writeln('Delitele cisla N=',N);
for i:=1 to N do
if JEDEL(N,i) then write(i,',');
writeln;writeln;
writeln('Spolocne delitele cisel M=',M,' a N=',N);
for i:=1 to MAX(M,N) do
if SPOLDEL(M,N,i) then write(i,',');
writeln;writeln;
writeln('Najvacsi spolocny delitel cisel je');
writeln(NSD(M,N));
readln;
END.
Ale nie. Skus sa pozriet do temy v Programovani, kde som uploadol do prilohy moje zdrojaky programov v pascale. Mohol by som ti niektore programy spravit, ale to by si sa nic nenaucil.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Pascalov trojuholník:
Kód: Vybrať všetko
Program Trojuholnik;
const m=25;
var a: array[1..m, 0..m] of integer;
i, j, N, k, r: integer;
Begin
Write ('Zadaj N '); ReadLn (N);
for i:=1 to N do
begin
a[i,0]:=0; a[i,i+1]:=0;
end;
a[1,1]:=1; r:=40; {prvá hodnota r=40, stred riadku}
for k:=1 to r do Write (' '); {na obrazovke bude 40 medzier}
r:=r-2; {r sa znižuje o 2}
WriteLn (a[1,1]: 4);{zobrazenie prvého prvku v strede riadku}
for i:=2 to n do
begin
for k:=1 to r do Write (' '); {znižujúci sa počet medzier}
r:=r-2;
for j:=1 to i do
begin
a[i,j]:= a[i-1,j-1] + a[i-1,j];
Write(a[i,j]: 4);
end;
WriteLn;
end;
ReadLn; btw trosku amaterska stranka ale robil som to narychlo a davno... pouzivame to v skole na informatike na nahravanie ulohy... skus si to pozret mozno si nieco najdes http://www.pascalgjk.tk 
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
ppt: načo tak zložito, euklidov algoritmus ti nič nehovorí?
NSD
postupne ti sem popridávam aj ostatné, sú to jednoduché úlohy..
//edit1:
nsn
//edit2:
krátenie zlomku s využitím NSD:
//edit3:
Súčet cifier na párnych pozíciach:
//edit4:
Dokonalé číslo:
//edit5:
Cifra v čísle:
Pozn: robil som to cez string: je to univerzálne aj pre reťazce a rýchlejšie ako keby mam izolovať cez mod a div každú cifu a porovnávať..
//edit6:
Rovna sa čislo druhej mocnine cif. súčtu?:
//edit7:
Prevod z dvojkovej do desiatkovej:
NSD
Kód: Vybrať všetko
program NSD;
var NSD,a,b:integer;
begin
write ('Zadaj cislo a: ');
read (a);
write ('Zadaj cislo b: ');
read (b);
while a<>b do
if a>b then a:=a-b
else b:=b-a;
NSD:=a;
write (NSD);
read(b);
end;//edit1:
nsn
Kód: Vybrať všetko
Program nsn;
var a,b,sucin:integer;
nsn:extended;
begin
write ('Zadaj cislo a: ');
read (a);
write ('Zadaj cislo b: ');
read (b);
sucin:=a*b;
while a<>b do
if a>b then a:=a-b
else b:=b-a;
nsn:=sucin/a;
write ('nsn: ',nsn:8:0);
read(b);
end.krátenie zlomku s využitím NSD:
Kód: Vybrať všetko
program kratenie;
function NSD(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b
else b:=b-a;
nsd:=a;
end;
var upravenycitatel,upravenymenovatel:extended;
a,b:integer;
begin
write ('Zadaj citatela: ');
read(a);
write ('Zadaj menovatela: ');
read(b);
upravenycitatel:=a/nsd(a,b);
upravenymenovatel:=b/nsd(a,b);
write('Upraveny zlomok je: ',upravenycitatel:0:0,'/',upravenymenovatel:0:0);
read(b);
end.
Súčet cifier na párnych pozíciach:
Kód: Vybrať všetko
program sucet;
var vysledok,cifra,i,kod:integer;
cislo:string;
begin
write ('Zadaj cislo: ');
read (cislo);
vysledok:=0;
for I:=length(cislo) downto 1 do if I mod 2 = 0 then begin
val(cislo[i],cifra,kod);
if kod=0 then vysledok:=vysledok+cifra else begin
write('doslo k chybe');
exit;
end;
end;
write('sucet cifier na parnych poziciach je: ',vysledok);
read(kod);
end.
Dokonalé číslo:
Kód: Vybrať všetko
program Dokonale;
var
delitele,cislo,I:integer;
begin
delitele:=0;
write ('Zadaj cislo: ');
read (cislo);
For I:=1 to cislo-1 do if cislo mod I = 0 then delitele:=delitele+I;
if cislo mod delitele = 0 then write ('Cislo je dokonale') else write ('Cislo nieje dokonale');
read (delitele);
end.
Cifra v čísle:
Pozn: robil som to cez string: je to univerzálne aj pre reťazce a rýchlejšie ako keby mam izolovať cez mod a div každú cifu a porovnávať..
Kód: Vybrať všetko
program hladaj;
var hladam,retazec:string;
i:integer;
begin
write ('Zadaj cislo ktore sa ma prehladat: ');
readln (retazec);
write ('Zadaj hladanú cifru: ');
read (hladam);
if pos(hladam,retazec)>0 then write ('Cifra sa nachadza') else write ('Cifra sa nenachadza');
readln (I);
end.
Rovna sa čislo druhej mocnine cif. súčtu?:
Kód: Vybrať všetko
program omg;
var sucet,pom,cislo,i:integer;
begin
write ('Zadaj cislo: ');
read (cislo);
pom:=cislo;
sucet:=0;
while cislo>0 do begin
sucet:=sucet+(cislo mod 10);
cislo:=cislo div 10;
end;
if pom=sucet*sucet then write ('Rovna sa') else write ('Nerovna sa');
read (I);
end.
Prevod z dvojkovej do desiatkovej:
Kód: Vybrať všetko
program Prevod;
var cislo,cifra,mantisa,vysledok:integer;
begin
write ('Zadaj cislo v dvojkovej sustave: ');
read (cislo);
mantisa:=1;
vysledok:=0;
while cislo>0 do begin
cifra:=cislo mod 10;
cislo:=cislo div 10;
vysledok:=vysledok+cifra*mantisa;
mantisa:=mantisa*2;
end;
write (vysledok);
read(mantisa);
end.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal ulohy (pomoc)
Dobry den potreboval by som pomoc s tymto programom Napíšte program, ktorý generuje prvých n prvočísel. Sam to neviem a neviem na to prist ak by niekde vedel momoct bol by som velmi vdacny
Vopred dakujem 
Re: pascal ulohy (pomoc)
POVAZAN kľudne na to choď primitívne a testuj každé číslo na prvočíslo a až ich nájdeš N, skončíš.
Re: pascal ulohy (pomoc)
Prosim neviem to vobec ja ovladam ako jednoduche prace v pascale ale toto je na mna strasne zlozite a ide mi o znamku prosim

Re: pascal ulohy (pomoc)
Na to ti nič zložité netreba. Jeden nekonečný cyklus (while true), jedno číslo, ktoré budeš stále zväčšovať o jedna a testovať na prvočíslo a druhé číslo ako počítadlo nájdených prvočísel. Ak bude počítadlo rovné tvojmu N, príkazom break; opustíš nekonečný cyklus.
Funkciu na test prvočíselnosti spravíš rovnako primitívne - prejdeš všetky čísla až do testovaného čísla a ak je to prvočíšlo, tak bude mať medzi nimi práve dvoch deliteľov (1 a seba) To, či je číslo X deliteľné číslom Y zistíš ako if X mod Y = 0 then je deliteľné;
(jednoduchá optimalizácia na lepšiu známku môže byť - v tejto funkcii testuj čísla len do odmocniny z testovaného čísla (funkcia sqrt(X)). Z definície deliteľnosti to stačí. Ak tam (okrem 1) nebude žiadny deliteľ, číslo je prvočíslo)
Ďalšia optimalizácia - okrem dvojky môžeš testovať len nepárne čísla. Ale to už je dosť jedno.
Funkciu na test prvočíselnosti spravíš rovnako primitívne - prejdeš všetky čísla až do testovaného čísla a ak je to prvočíšlo, tak bude mať medzi nimi práve dvoch deliteľov (1 a seba) To, či je číslo X deliteľné číslom Y zistíš ako if X mod Y = 0 then je deliteľné;
(jednoduchá optimalizácia na lepšiu známku môže byť - v tejto funkcii testuj čísla len do odmocniny z testovaného čísla (funkcia sqrt(X)). Z definície deliteľnosti to stačí. Ak tam (okrem 1) nebude žiadny deliteľ, číslo je prvočíslo)
Ďalšia optimalizácia - okrem dvojky môžeš testovať len nepárne čísla. Ale to už je dosť jedno.