Напечатать координаты точки пересечения этих прямых, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.
Таблица - Система тестов
Номер теста | Проверяемый случай | Коэффициенты прямых | Результаты | |||||
a1 | b1 | c1 | a2 | b2 | c2 | |||
Первая прямая не существует | Это не прямая | |||||||
Вторая прямая не существует | Это не прямая | |||||||
Все коэффициенты одной или обеих прямых равны нулю | Это не прямая (прямые) | |||||||
Коэффициенты попарно равны | Прямые совпадают | |||||||
Коэффициенты попарно пропорциональны | Прямые совпадают | |||||||
Прямые параллельны | -1 | Прямые параллельны | ||||||
Прямые пересекаются | -4 | -2 | x=1.50, y=1.25 |
Program Intersection; Uses Crt; {подключение библиотеки Crt } Var a1, b1, c1, {коэффициенты уравнения первой прямой} a2, b2, c2, {коэффициенты уравнения второй прямой} x, y : Real; {координаты точки пересечения } Test, NTest : Integer;BEGIN ClrScr; {очистка экрана} Write('Введите количество тестов : '); ReadLn(NTest); For Test := 1 to NTest do {цикл по всем тестам задачи} begin Write('Тест ', Test, '. Введите a1, b1, c1 : '); ReadLn( a1, b1, c1); Write(' Введите a2, b2, c2 : '); ReadLn( a2, b2, c2); WriteLn; Write('О т в е т : '); If ( (a1=0) and (b1=0) ) or ( (a2=0) and (b2=0) ) then WriteLn( 'это не прямая (прямые). ' ) else if (a1*b2=a2*b1) and (a1*c2=a2*c1) then WriteLn( 'прямые совпадают.' ) else if a1*b2 = a2*b1 then WriteLn('прямые параллельны.') else begin x:=(c1*b2-c2*b1)/(b1*a2-b2*a1); y:=(c2*a1-c1*a2)/(b1*a2-b2*a1); WriteLn('координаты точки пересечения : x = ', x : 5 : 2 , ', y = ', y : 5 : 2); end; WriteLn end; ReadLnEND.
Результаты работы Pascal-программы:
Введите количество тестов : 7 Тест 1. Введите a1, b1, c1 : 0 0 1 <Enter> Введите a2, b2, c2 : 1 2 2 <Enter> О т в е т : это не прямая (прямые). Тест 2. Введите a1, b1, c1 : 1 2 2 <Enter> Введите a2, b2, c2 : 0 0 1 <Enter> О т в е т : это не прямая (прямые). Тест 3. Введите a1, b1, c1 : 0 0 0 <Enter> Введите a2, b2, c2 : 1 2 1 <Enter> О т в е т : это не прямая (прямые). Тест 4. Введите a1, b1, c1 : 1 2 1 <Enter> Введите a2, b2, c2 : 1 2 1 <Enter> О т в е т : прямые совпадают. Тест 5. Введите a1, b1, c1 : 1 2 1 <Enter> Введите a2, b2, c2 : 2 4 2 <Enter> О т в е т : прямые совпадают. Тест 6. Введите a1, b1, c1 : 2 3 -1 <Enter> Введите a2, b2, c2 : 4 6 1 <Enter> О т в е т : прямые параллельны. Тест 7. Введите a1, b1, c1 : 1 2 -4 <Enter> Введите a2, b2, c2 : 1 -2 1 <Enter> О т в е т : координаты точки пересечения : x = 1.50, y = 1.25 |
Пример 7. Вычисление даты следующего дня. Ввести данные о текущем дне, месяце и годе. Напечатать дату следующего дня. Если это последний день месяца, то напечатать об этом. Если это последний день года, то напечатать поздравление с наступающим годом.
Таблица - Система тестов
Номер теста | Проверяемый случай | Результат |
11 12 2009 | Завтра 12.12.2009 | |
30 12 2009 | C наступающим Новым годом! | |
31 07 2009 | Последний день месяца! |
day, month, year integer;
last : boolean; { TRUE, если текущий день последний день месяца } r :integer; { если год високосный, то остаток от деления year на 4 равен нулю }beginwrite('Введите цифрами сегодняшнюю дату (число месяц год) —> ');
readln(day,month,year);
last:=FALSE;
case month of
1,3,5,7,8,10,12 : if day=31 then last:=TRUE;
4,6,9,11 : if day=30 then last:=TRUE;
2 : if day = 28 then begin r:=year mod 4; if r <> 0 then last:=TRUE; end; end; { case } if last thenbegin writeln('Последний день месяца!'); day:=1; if month=12 then begin month:=1; year:=year + 1; writeln('C наступающим Новым годом!'); endelse month:=month + 1; endelse day:=day + 1; writeln('Завтра ',day,'.',month,'.' ,year ); readln; end.
Результаты работы Pascal-программы:
Тест 1 . Введите цифрами сегодняшнюю дату (число месяц год) —> 11 12 2009 <Enter>
Завтра 12.12.2009
Тест 2 . Введите цифрами сегодняшнюю дату (число месяц год) —> 30 12 2009 <Enter>
C наступающим Новым годом!
Тест 3 . Введите цифрами сегодняшнюю дату (число месяц год) —> 31 07 2009<Enter>
Последний день месяца!
Пример 8. Вычисление результата арифметической операции. Ввести два числа в первой строке и один из знаков +, -, *, / - во второй и вывести на экран результат соответствующего арифметического действия.
Таблица - Система тестов
Номер теста | X | Y | Проверяемый случай | Результат |
+ | ||||
- | ||||
/ | ||||
* |
Результаты работы Pascal-программы:
Тест 1 . x,y= 23 4 <Enter>
операция: +<Enter>
результат=27
Тест 2 . x,y= 12 11 <Enter>
операция: -<Enter>
результат=11
Тест 3 . x,y= 45 15 <Enter>
операция: /<Enter>
результат=3
Тест 4 . x,y= 2 33 <Enter>
операция: *<Enter>
результат=66