Программа работает некорректно. Числа в порядке 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 знаков и пробелами между числами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д