Программа работает некорректно. Числа в порядке A>=B>=C - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Возникла проблема с программой, сейчас предоставлю её код, но она работает немного не так как было задумано, кроме того где-то есть упущение. Кто разбирается помогите мне доделать её.
Листинг программы
  1. program p_1_1;
  2. uses Crt;
  3. var a,b,c:real;
  4. begin
  5. ClrScr;
  6. write ('Введите число a: ');
  7. read (a);
  8. write ('Введите число b: ');
  9. read (b);
  10. write ('Введите число c: ');
  11. read (c);
  12. if (a>b) and (b>c) then writeln('Ответ:',a:1:0,b:1:0,c:1:0)
  13. else begin
  14. if (a>b) then begin
  15. if (b=c) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
  16. else begin
  17. b:=b+c; c:=b-c; b:=c-b;
  18. write ('Ответ',a:1:0,b:1:0,c:1:0);
  19. end;
  20. end;
  21. end;
  22. if (a=b) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
  23. else begin
  24. if (a>=b) then writeln('Ответ',a:1:0,b:1:0,c:1:0)
  25. else begin
  26. a:=a+b; b:=a-b; a:=a-b;
  27. writeln ('Ответ',a:1:0,b:1:0,c:1:0);
  28. if (a>=c) then writeln ('Ответ',a:1:0,b:1:0,c:1:0)
  29. else begin
  30. a:=a+c; c:=a-c; a:=a-c;
  31. writeln ('Ответ',a:1:0,b:1:0,c:1:0);
  32. end;
  33. end;
  34. end;
  35. while not keypressed do;
  36. end.
Сейчас в голову пришла мысль, что нужно прописать условие для b>с, но теперь где это прописать? И как сделать календарь 20-го столетия. Я не понимаю логики трех формул, а именно для чего они нужны?
  1. • S=[(12-M)/10]
  2. • K=[(G-1900-S)*365,25]+[(M+12*S-2)*30,59]+D+29
  3. • 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
Листинг программы
  1. var
  2.   a,b,c:real;
  3. procedure Sw(var x,y:real);
  4. var
  5.   t:real;
  6. begin
  7.   t:=x;
  8.   x:=y;
  9.   y:=t;
  10. end;  
  11. begin
  12.   write('a,b,c=');readln(a,b,c);
  13.   if a<b then Sw(a,b);
  14.   if b<c then Sw(b,c);
  15.   if a<b then Sw(a,b);
  16.   writeln(a:15:0,b:15:0,c:15:0);
  17. end.

Объяснение кода листинга программы

  1. Объявлены три переменные типа real: a, b, c.
  2. Определена процедура Sw с двумя аргументами типа real и одной переменной типа real.
  3. В процедуре Sw происходит обмен значениями между двумя аргументами и переменной t.
  4. В основной программе происходит ввод значений переменных a, b, c с помощью функции readln.
  5. Если первое введенное число (a) меньше второго (b), то вызывается процедура Sw с аргументами a и b.
  6. Если второе введенное число (b) меньше третьего (c), то вызывается процедура Sw с аргументами b и c.
  7. Если первое введенное число (a) меньше второго (b), то вызывается процедура Sw с аргументами a и b.
  8. Выводится на экран значение переменных a, b, c с помощью функции writeln, при этом используется формат вывода с позицией 15 знаков и пробелами между числами.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы