Въпрос за Паскал???

dinko92
Мнения: 87
Регистриран: 19 апр 2006, 22:51

Въпрос за Паскал???

Мнение от dinko92 » 18 юли 2007, 01:27

От вчера се занимавам с програмата (нз как просто ми хрумна) и горе-долу хванах някои общи знания но...
при опита ми да направя програма която да изчислява формулите за съкратено умножение (а*а+2*а*б+c*c)
става някъв гаф


program formula;
var a, b, c:real;
begin
writeln('vavedete a: ');
readln(a);
writeln(vavedete b: ');
readln(b);
if a>=0 then begin
if b>=0 then begin
c:=a*a+2*a*b+b*b;
writeln(stoinostta ne c e: ',c:2:4);
end;
if a<0 then begin
if b<0 then begin
c:=a*a-2*a*b+b*b;
writeln(stoinostta na c e : ',c:2:4);
end;
end.

Вади ми грешка за неочакван край...
Принципно проблема идва от там
че искам при положителни "а" и "б" да ми изпълнява един алгоритам а при отрицателни друг за да може програмата да е наистина използваема (абе че то няма да е няма ама все пак...).
Не съм мн на ясно как точно става номера с "if ...then" и после как трябва да се завърши.
Също така ще съм ви благодарен ако някой ми каже каква роля играят следните цифри при този ред:
writeln(stoinostta na c e : ',c:2:4);
говоря за 2 и 4. Проблема е че се самоубочавам и разгледах някои програми и разбрах че ако не сложа 2 или 4 не ми става програмата (или поне такъв извод си изкарах)...
ПЛС помогнете че почнах да уважавам Паскал независимо че е един от най-простите езици наистина е зарибяващо... :)

Потребителски аватар
Чо :)
Мнения: 922
Регистриран: 05 фев 2004, 11:49
Местоположение: http://www.curve.app/join#D6X498WN
Контакти:

Re: Въпрос за Паскал???

Мнение от Чо :) » 18 юли 2007, 10:49

Няма значение дали a и b са положителни или отрицателни.

program formula;
var a, b, c:real;

begin
writeln('Izchislqwane na (a+b)^2 i (a-b)^2');
write('vavedete a: ');
readln(a);
write('vavedete b: ');
readln(b);

c:=a*a+2*a*b+b*b;
writeln('(a+b)^2=',c:2:4);
c:=a*a-2*a*b+b*b;
writeln('(a-b)^2=',c:2:4);
readln;
end.

c:2:4 означава, общия брой разряди (цифри), които трабва да се покаже числото и броя им след десетичната запетая
ако първото е по-малко от второто, се игнорира

примерно числото 156.9341564
със :2:4 ще се покаже "156.9342" (закръглено до 4я знак)
със :10:3 ще се покаже " 156.934" (т.е ще има празни места преди чилото)
със :5:0 ще се покаже " 157" (с две празни местса и пак закръглено)
ако няма зададени разряди, ще реално число ще изглежда "1.5693415640E+02" , което означава 1.5693415640 *10^2


грешката "неочакван край" (unexpected end) я дава защото не си затвори всички "begin" секции с "end;", преди края на програмта "end."


IF условие THEN (ако е вярно условието, какво да прави)
ELSE (ако не е вярно, какво да прави

когато трябва да се пправят няколко неща, се използва BEGIN END;

IF условие THEN
BEGIN
направи 1
направи 2
END

или

IF условие THEN
BEGIN
направи 1
направи 2
END
ELSE
BEGIN
направи 3
направи 4
END
Усмихни се... Животът е Хубав :)
Samsung S22 Ultra 5G, S21 Ultra 5G, Note 20 Ultra 5G, Note 10+, Note 9, Note 8, Note 5, Note 3, Nokia 808, N8, 5800, N95, 6600, 6510, 5510

Отговори