Программа работает некорректно. Числа в порядке A>=B>=C - Free Pascal
Формулировка задачи:
Здравствуйте!
Возникла проблема с программой, сейчас предоставлю её код, но она работает немного не так как было задумано, кроме того где-то есть упущение. Кто разбирается помогите мне доделать её.
Сейчас в голову пришла мысль, что нужно прописать условие для b>с, но теперь где это прописать?
И как сделать календарь 20-го столетия. Я не понимаю логики трех формул, а именно для чего они нужны?
Мне нужно только значение формул, а саму программу я составлю сам.
Заранее спасибо!
program p_1_1;
uses Crt;
var a,b,c:real;
begin
ClrScr;
write ('Введите число a: ');
read (a);
write ('Введите число b: ');
read (b);
write ('Введите число c: ');
read (c);
if (a>b) and (b>c) then writeln('Ответ:',a:1:0,b:1:0,c:1:0)
else begin
if (a>b) then begin
if (b=c) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
else begin
b:=b+c; c:=b-c; b:=c-b;
write ('Ответ',a:1:0,b:1:0,c:1:0);
end;
end;
end;
if (a=b) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
else begin
if (a>=b) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
else begin
a:=a+b; b:=a-b; a:=a-b;
writeln ('Ответ',a:1:0,b:1:0,c:1:0);
if (a>=c) then writeln ('Ответ',a:1:0,b:1:0,c:1:0)
else begin
a:=a+c; c:=a-c; a:=a-c;
writeln ('Ответ',a:1:0,b:1:0,c:1:0);
end;
end;
end;
while not keypressed do;
end.- • S=[(12-M)/10]
- • K=[(G-1900-S)*365,25]+[(M+12*S-2)*30,59]+D+29
- • N=K-7[K/7]
2. Составить программу «Календарь XX столетия», которая определяет день недели любого дня XX-го столетия. По введенному значению 1, 2, 3 вычисляет
1. номер дня недели по формуле, где D- день, М-месяц, G-год:
• S=[(12-M)/10]
• K=[(G-1900-S)*365,25]+[(M+12*S-2)*30,59]+D+29
• N=K-7[K/7] (N-вычисляется от 0-воскресенье до 6-суббота, []-целая часть)
2. день недели по его номеру
3. выход
Решение задачи: «Программа работает некорректно. Числа в порядке A>=B>=C»
textual
Листинг программы
var
a,b,c:real;
procedure Sw(var x,y:real);
var
t:real;
begin
t:=x;
x:=y;
y:=t;
end;
begin
write('a,b,c=');readln(a,b,c);
if a<b then Sw(a,b);
if b<c then Sw(b,c);
if a<b then Sw(a,b);
writeln(a:15:0,b:15:0,c:15:0);
end.
Объяснение кода листинга программы
- Объявлены три переменные типа real: a, b, c.
- Определена процедура Sw с двумя аргументами типа real и одной переменной типа real.
- В процедуре Sw происходит обмен значениями между двумя аргументами и переменной t.
- В основной программе происходит ввод значений переменных a, b, c с помощью функции readln.
- Если первое введенное число (a) меньше второго (b), то вызывается процедура Sw с аргументами a и b.
- Если второе введенное число (b) меньше третьего (c), то вызывается процедура Sw с аргументами b и c.
- Если первое введенное число (a) меньше второго (b), то вызывается процедура Sw с аргументами a и b.
- Выводится на экран значение переменных a, b, c с помощью функции writeln, при этом используется формат вывода с позицией 15 знаков и пробелами между числами.