Cvičenie č. 4 - Jednoduché úlohy v Pascale
Úlohy
Podmienky, reálne čísla
Kvadratická rovnica
Napíšte program, ktorý si zo štandardného vstupu postupne načíta parametre \(a,b,c\) kvadratickej rovnice v tvare \( ax^2 + bx + c = 0\) a vráti všetky jej koreňe. Ošetrite všetky možnosti, tj. rovnica má:
- 2 reálne korene
- 1 réalny koreň
- 2 komplexné korene
Ak si nespomínate na riešenie kvadratickej rovnice, tak si pomôžte wikipediou.
Pomôcka: Pre odmocninu použite funkciu sqrt()
Riešenie
program KvadratickaRovnica;
var
a, b, c, d: Double;
begin
write('a = ');
readln(a);
write('b = ');
readln(b);
write('c = ');
readln(c);
d := b*b - 4*a*c;
if d > 0 then begin
d := sqrt(d) / (2 * a);
b := -b / (2 * a);
writeln('2 realne korene: ', b + d, b - d);
end else if (d = 0) then begin
writeln('jeden realny koren: ', -b / (2*a));
end else begin
d := sqrt(-d) / (2 * a);
b := -b / (2 * a);
writeln('2 komplexne zdruzene korene: ',
b, '+', d, 'i ', b, '-', d, 'i');
end;
readln;
end.Cykly a polia
Kladné čísla
Napíšte program, ktorý na vstup dostane ľubovoľne dlhú postupnosť celých čísel. Túto postupnosť úplne rovnako vypíše, ale len do prvého záporného čísla na ktoré narazí (to už nevypíše).
Príklad
Vstup:
1 2 42 5 2 1 -1 3 41 421 1Výstup:
1 2 42 5 2 1Riešenie
program kladneCisla;
var a : integer;
begin
read(a);
while (a > 0) do
begin
write(a, ' ');
read(a);
end;
writeln();
end.Delitelia v intervale
Napíšte program, ktorý dostane na vstup na prvom riadku 3 celé čísla: dolný limit, horný limit a deliteľ. Predpokladajte, že vždy platí dolný limit < horný limit. Program následne vypíše na jeden riadok všetký celé čísla z intervalu [dolný limit, horný limit], ktoré sú deliteľné deliteľom.
Príklad
Vstup:
1 100 5Výstup:
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100Riešenie
program delitelia;
var a, b, d, i : integer;
begin
readln(a, b, d);
for i:=a to b do
if (i mod d = 0) then
write(i, ' ');
writeln();
end.Otočenie vstupu
Napíšte program, ktorý dostane na vstup (všetko na jednom riadku) celé číslo n a po ňom ďaľších n celých čísel. Program následne vypíše túto postupnosť n čísel v opačnom poradí.
Príklad
Vstup:
5 1 2 3 4 5Výstup:
5 4 3 2 1Riešenie
program otocenieVstupu;
var n, i : integer;
cisla : array[1..1000] of integer;
begin
read(n);
for i:=1 to n do
read(cisla[i]);
for i:=n downto 1 do
write(cisla[i], ' ');
writeln();
end.Deliteľnosť
Test prvočíselnosti
Napíšte algoritmus, ktorý dostane na vstup jedno číslo, a vráti yes ak sa jedná o prvočíslo, a no inak.
Príklad 1.
Vstup:
16Výstup:
noPríklad 2.
Vstup:
13Výstup:
yesRiešenie
program testPrvociselnosti;
var x,i : integer;
prvocislo : boolean;
begin
read(x);
prvocislo:=true;
for i:=2 to trunc(sqrt(x)) do
if (x mod i = 0) then
begin
prvocislo := false;
break;
end;
if (prvocislo) then
writeln('yes')
else
writeln('no');
end.Domáce úlohy
V CodEx-e nájdete svoje 2 povinné domáce úlohy: Maximum v posloupnosti (výskyty) a PPPPP 2.6 Všechna prvočísla.
Poznámka: Na vyriešenie druhej úlohy (Všechna prvočísla) použite algoritmus Eratostenovo sito, ktorý je pekne popísaný na Wikipedii.
Termín odovzdania: 1. 11. 2016 (23:59)