Ljudi upomoc!
Mladjem bratu treba, a ja nemam pojma. Ako je neko voljan da pomogne, biću mu zauvek zahvalan...
imam par zadataka u Pascalu, pa ukoliko ima neko da može da resi nabrzaka neka se javi!
1. Napisati program koji će izracunati slobodan prostor na disketi ako se na nju snimi jedna datoteka odredjene velicine. Velicina datoteke i praznog prostora na disketi se izrazava u KB, a disketa je kapaciteta 1,44 MB.
2. Napisati program koji datom cetvorocifrenom broju određuje broj koji se dobija ispisom cifara u
obrnutom poretku. Broj se unosi preko jedne promenljive. Uneti potrebne komentare.
3. Data su tri realna broja. Napisati program za ispitivanje koji od datih brojeva pripada
intervalu (a,b). Velicine a i b su takođe date.
4. Napisati program koji racuna funkciju f na sledeci nacin:
f = } a² - cos(a)/3-b za x≥3
3*a/b za 0<x<3
|b+1| - a za x=0
nije definisano za x<0
gde je a=x/y i
b=x-y
HVALA UNAPRED!!!
Znači, ovako:
1. Važi da je 1 MB = 1024 KB. Dakle, 1,44 MB = 1474,56 KB. Rešenje je razlika ovog broja i unetog broja koji predstavlja veličinu datoteke. Pretpostavimo da je veličina datoteke manja od 1,44 MB.
Kod:
program zad1;
const
kapacitet = 1474.56;
var
velicina, rezultat : real;
begin // glavni deo koda
readln (velicina); // ulaz
rezultat := kapacitet - velicina; // dobijanje resenja
writeln (rezultat, ' KB'); // izlaz
end.
2. Koliko sam ja shvatio, ide nekako ovako:
n = 4513
4513 -> 3154
Ono što treba uraditi jeste dodeliti svakoj cifri posebnu promenjivu, tj. za ovaj primer izdvojiti
a1 = 3;
a2 = 1;
a3 = 5;
a4 = 4. Ideja izdvajanja cifara je ta da treba primeniti kombinacije operacija MOD i DIV. Postupak dobijanja svake od promenljivih može se obaviti na razne načine, a jedan od njih je:
a1 := n mod 10;
a2 := (n mod 100) div 10;
a3 := (n mod 1000) div 100;
a4 := n div 1000;
Svaki od ovih primera analiziraj.
Recimo da je broj koji treba da se ispiše
m. Tada je
m = 1000 ·
a1 + 100 ·
a2 + 10 ·
a3 +
a4. Time je zadatak rešen!
Jedino ne znam gde su ti "obavezni" komentari - oni samo pomažu programeru da se u svom kodu snađe.
Kod:
program zad2;
var
n, m : integer; // n - polazni broj; m - izlazni broj
a1, a2, a3, a4 : byte; // moze i integer ako ne zna koja je razlika
begin // glavni deo koda
readln (n); // ulaz
a1 := n mod 10; // izdvajanje cifara
a2 := (n mod 100) div 10;
a3 := (n mod 1000) div 100;
a4 := n div 1000;
m := 1000 * a1 + 100 * a2 + 10 * a3 + a4; // resenje
writeln (m); // izlaz
end.
3. Ovo se radi preko običnog IF grananja. Recimo da se u prvoj liniji unose
a i
b, a u drugoj
x,
y i
z. Tada bi jedan primer izgledao ovako:
Unesi granice intervala -> -3.4 11.58
Unesi tri realna broja -> 8.9 -7.1 5
Prvi broj pripada datom intervalu.
Drugi broj ne pripada datom intervalu.
Treci broj pripada datom intervalu.
Svaki od tri broja (x, y, z) treba da prođe kroz testiranje - da li pripada datom intervalu. Broj k pripada intervalu (m, n) (za n > m) ukoliko važe dve stvari:
I) k > m
II) k < n
Pretpostavljam da se u postavci zadatka podrazumeva da je a < b. Ako ne, to se lako može ispraviti zamenom njigovih vrednosti.
Moguće je uraditi i ovo: recimo da testiramo promenljivu x. Prvo ćemo napisati 'Prvi broj ' pomoću write (), a onda ćemo testirati da li x
NE pripada intervalu (a, b). Ako ne pripada, onda u istom redu ispisuje 'ne '. Nakon te provere ispisujemo 'datom intervalu.' i prelazimo u novi red. Tada testiramo sledeću promenljivu.
Nepripadanje intervalu možemo uraditi na dva načina:
I) korišćenjem NOT u uslovu (not ((k > m) and (k < n)))
II). korišćenjem OR ((k ≤ m) or ( k ≥ n))
Ja ću koristiti ovaj prvi način. Takođe, radi čitljivosti, ostavio sam razmak između nekih delova koda.
Kod:
program zad3;
var
a, b : real;
x, y, z : real;
begin // glavni deo koda
write ('Unesi granice intervala -> ');
readln (a, b);
writeln ('Unesi tri realna broja -> ');
readln (x, y, z);
write ('Prvi broj ');
if not ((x > a) and (x < b)) then
write ('ne ');
writeln ('pripada datom intervalu.');
write ('Drugi broj ');
if not ((y > a) and (y < b)) then
write ('ne ');
writeln ('pripada datom intervalu.');
write ('Treci broj ');
if not ((z > a) and (z < b)) then
write ('ne ');
writeln ('pripada datom intervalu.');
end.
4. Očigledno, da bismo odredili ovu funkciju f (x, y), nephodne su nam realne promenljive
x i
y.

Takođe, biće nam potrebne dve pomoćne promenljive,
a i
b. Rešenje će biti zaokruženo na četiri decimale. Sve ostalo je običan razgranat algoritam.
Međutim, zadatak je neodređen i ne kazuje šta treba da se radi u slučaju da je
y = 0. Zato ću dodati još jedan uslov koji će, u slučaju da je y = 0, ispisati "nije definisano". Takođe, ukoliko je x = y i 0 < x < 3 opet imamo deljenje nulom.
Takođe, pošto je moguće da funkcije još nisu rađene, apsolutna vrednost zahteva još jedan IF.
Što se provere pripadnosti intervalu tiče, pogledaj rešenje prethodnog zadatka:
Kod:
program zad4;
var
x, y : real;
a, b : real;
m : real;
begin // glavni deo koda
readln (x, y);
if y = 0 then
writeln ('nije definisano')
else
begin
a := x / y;
b := x - y;
if x < 0 then
writeln ('nije definisano')
else
begin
if x = 0 then
if b + 1 < 0 then
writeln (-(b + 1) - a : 0 : 4)
else
writeln (b + 1 - a : 0 : 4)
else
if (x > 0) and (x < 3) then
if x = y then
writeln ('nije definisano')
else
writeln (3 * a / b : 0 : 4)
else
writeln (sqr (a) - cos (a) / 3 - b : 0 : 4);
end;
end;
end.
Nadam se da je ovo bilo od pomoći i da nije bilo konfuzno.
