Pro Vas hracka:-) – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pro Vas hracka:-) – Pascal – Fórum – Programujte.comPro Vas hracka:-) – Pascal – Fórum – Programujte.com

 

Himler
~ Anonymní uživatel
1 příspěvek
2. 11. 2009   #1
-
0
-

Dobry den,
jsem zacatecnik s pascalem. Dostal jsem se k jednomu ukolu a nevim jak s nim dal, nemusite mi posilat cely program, jenom poradit nejake tipy, treba jake cykly pouzit. Mam do programu zadat 2 cisla - interval. V tomto intervalu ma program najit vsechny suda a licha cisla a zvlast je secist. Nemusim to mit, ale rad bych vedel jak na to. Zajima me to. Za jakoukoli odpoved dekuju

Nahlásit jako SPAM
IP: 93.99.117.–
gandy93
~ Anonymní uživatel
1 příspěvek
2. 11. 2009   #2
-
0
-

program project1;


uses crt;
var parne, neparne, i, x: Integer;

begin
clrscr;
write('Zadajte minimum intervalu: '); readln(i);
write('Zadajte maximum intervalu: '); readln(x);
parne:=0; neparne:=0;
for i:=i to x do
begin
if (i mod 2 = 0) then parne := parne+i
else neparne := neparne+i;
end;
WriteLn('Sucet parnych cisel je: ', parne);
WriteLn('Sucet neparnych cisel je: ', neparne);
readkey;
end.

Azda to je ok...

Nahlásit jako SPAM
IP: 85.237.233.–
Laaca0
Stálý člen
2. 11. 2009   #3
-
0
-

Jistě, normální programátor samozřejmě použije cyklus. Ale DOSem ošlehaný pascalovský geek odkojený AThelem a zocelený assemblerem si vystačí i bez cyklů. Výsledkem je nesrovnatelně rychlejší kód.

Procedure ZobrazVysledek(s,l,c:longint);

begin
writeln('soucet vsech cisel: ',c);
writeln('sudych: ',s);
writeln('lichych: ',l);
readln;
halt;
end;

var a,b,c,s,l,o,p:longint;
r,t:real;
begin
write('Zadej zacatek intervalu: ');
readln(a);
write('Zadej konec intervalu: ');
readln(b);
if a>b then
begin
writeln('Prazdny interval');
Halt;
end;

if a=b then
if odd(a) then ZobrazVysledek(0,a,a)
else ZobrazVysledek(a,0,a);

{jednoduche pripady skoncily, zacneme s matematikou}
o:=a+b; {soucet jedne dvojice}
p:=b-a+1; {kolik cisel se bude scitat}
c:=o*p div 2; {soucet jedne dvojice vynasobime poctem dvojic}
r:=c/2; {pri rozdeleni na suda a licha cisla budeme vychazet z}
{presne poloviny vysledku}

{ted provedeme distribuci rozdilu mezi sudou a lichou slozku}
if odd(p) then t:=o/4 {varianta pro lichy pocet cisel}
else t:=p/4; {a pro sudy}

l:=round(r+t); {defaultne dame vetsi cast sude slozce}
s:=c-l;
if not odd(b) then {...a eventualne to prohodime}
begin c:=l;l:=s;s:=c;c:=s+l;end;

ZobrazVysledek(s,l,c);
end.


Princip je ten, že čísla v posloupnosti můžeme rozdělit na N dvojic se stejným součtem. Příklad:
1+2+3+4+5+6= (1+6)+(2+5)+(3+4)
součet každé závorky je 7 a závorek je (6-1)+1

Tento princip objevil matematik Gauss.

Požadavek na oddělené sečtení sudých a lichých čísel je velká komplikace, ale nakonec jsem vymyslel jak na to. Jestli to objevil někdo přede mnou nevím, ale nejspíš jo :-)

Nahlásit jako SPAM
IP: 89.111.89.–
DOS-u-akbar
Laaca0
Stálý člen
2. 11. 2009   #4
-
0
-

Ehmm....
Závorek je samozřejmě (6-1+1) / 2

Akorát nevím, proč mi zdejší redakční systém nedovoluje editovat můj příspěvek. Vždyť to dříve šlo....

Nahlásit jako SPAM
IP: 89.111.89.–
DOS-u-akbar
Kobi
~ Moderátor
+1
Věrný člen
2. 11. 2009   #5
-
0
-

Editace jde, náhled ne

Nahlásit jako SPAM
IP: 83.240.25.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Pro programatory hracka — založil Milan

Programátor pro Vás — založil Daniel Havránek

Váš nick? — založil yaqwsx

Váš názor = ? — založil Petroff

Podla vas... — založil ps2console

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý