Даны 3 целых числа A,B,C, которые пользователь вводит с клавиатуры программа должна вывести на экран данные числа в порядке возрастания, если хоть 2 числа между собой равны, то запросить ввод данных заново. Язык: Pascal.
Рассмотрим уравнение вида ax³ + bx = 0 Его также можно представить в виде x(ax² + b) = 0 Это же равносильно системе [ x = 0 [ x = ±√( -b / a ) Понятно, что решением этого уравнения, независимо от коэффициентов, будет всегда являться 0. Также уравнение будет иметь и другие корни, при a ≠ 0 и -b / a > 0, это x = ±√( -b / a )
Решение на С #include <stdio.h> #include <math.h> int main() { // Ввод данных float a, b; printf("a = "); scanf("%f", &a); printf("b = "); scanf("%f", &b); // Первый корень уравнения printf("x1 = 0\n"); // Второй и третий корни уравнения if (a != 0 && -b / a > 0) { printf("x2 = %.3f \n", -sqrt(-b / a)); printf("x3 = %.3f \n", sqrt(-b / a)); } return 0; }
Перефразируем данное по условию высказывание, чтобы использовать слова-понятия, применяемые в алгебре логики: Не идет дождь ИЛИ прогулка отменяется И я останусь дома СЛЕДОВАТЕЛЬНО я не вымокну. Заменим части предложения на выражения, выданные нам по условию: НЕТ "идет дождь" ИЛИ ("прогулка отменяется" И "я останусь дома") СЛЕДОВАТЕЛЬНО НЕТ "я вымокну" Запишем полученную фразу, заменив выражения на символьное обозначение: not A or (B and D) → not C Запишем фразу символами алгебры логики ¬A ∨ (B∧D) → ¬C
var
x1,x2,x3,middle:integer;
begin
read(x1,x2,x3);
while((x1=x2) or (x2=x3) or (x1=x3)) do begin
write('Введите данные снова: ');
read(x1,x2,x3);
writeln();
end;
middle := (x1 + x2 + x3) - max(max(x1,x2),x3) - min(min(x1,x2),x3);
write(min(min(x1,x2),x3) ,' ', middle ,' ' , max(max(x1,x2),x3));
end.