Напечатать координаты точки пересечения этих прямых, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.

 

Таблица - Система тестов

Номер теста Проверяемый случай Коэффициенты прямых Результаты
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 Последний день месяца!
Program primer_data;var
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 Проверяемый случай Результат
+
-
/
*
Program Calc; var operation : Char; {Знак операции} х, у, z : Real; {Операнды и результат} stop : Boolean; {Признак ошибочной операции и останова} begin stop := false; repeat WriteLn; {Пустая строка-разделитель} Write('x,y= ' ) ; ReadLn(x,y); Write('операция: ') ; ReadLn(operation); case operation of ' + ' : z : = x + y;' - ' : z : = x - y;' * ' : z : = x * y;' / ' : z : = x / y;else stop := true;end; if not stop then WriteLn('результат=',z) until stop end.

Результаты работы 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