Файл: Контрольная работа 1 По дисциплине Информатике2 Вариант6 Студент гр. (номер группы).docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 16

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Федеральное государственное бюджетное образовательное

учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра промышленной электроники.

(ПрЭ)


КОНТРОЛЬНАЯ РАБОТА №1
По дисциплине Информатике-2

Вариант№ 6





Выполнил:

Студент гр.

(номер группы)

_______________ / /

(подпись) И. О. Фамилия

«_г.

(дата)



Проверил:

______________________________

(должность, ученая степень, звание)

______________ /____________________/

(подпись) И. О. Фамилия

«____»_______________20____г.

(дата)

Томск 2022

Задание №1

Определить, пересекаются ли параболы у = аx2+bx+c и
у = dx2+mx+n. Если пересекаются, то найти точку пересечения.

Решение:

Чтобы определить пересекаются ли параболы, надо найти хотя бы 1 общую точку.

Y1 =a*x^2 + b*x + c – уравнение первой параболы

Y2=d*x^2 + m*x + n – уравнение второй параболы

Y1=Y2





решив это квадратное уравнение можно найти общие точки



Если D < 0, то общих точек у парабол нет.

Если D = 0, то параболы имеют 1 общую точку.

Если D > 0, то параболы имеют 2 общие точки.




При a=d будет деление на ноль, что невозможно.

Затем подставить значение (х) в одно из уравнений для нахождения (y)



Теперь можно составить алгоритм решения задачи.

Алгоритм:



Описание структуры программы:

Для решения задачи необходимы шесть переменных: a, b, c, d, m, n. Переменные вещественного типа.
Для очистки экрана используется специальная процедура
ClrScr из модуля CRT

Код программы:
Program z001;
Uses CRT;
Var a,b,c,d,m,n,x,x1,x2,y,y1.y2,di: real;

Begin

Clr Scr;

Writeln(‘Введите переменные a,b,c,d,m,n, через пробел:’);

Readln(a,b,c,d,m,n);

If a=b then

Begin

Writeln(‘Неправильный ввод a,b’);

Readln;

End;

di=sqr(b-m)-4*(a-d)*(c-n);

if di<0 then

begin

writeln(‘Нет точек пересечения’);

end;

if di>0 then

begin

writeln(‘Имеют две точки пересечения’);

x1:=(-(b-m)+sqrt(di))/(2*(a-d));

y1:=a*x1*x1+b*x1+c;

writeln(‘x1=’, x1:0:3, ‘y1=’, y1:0:3);

x2:=(-(b-m)-sqrt(di))/(2*(a-d));

y2:=a*x2*x2+b*x2+c;

writeln(‘x2=’, x2:0:3,’y2=’, y2:0:3);

end;

if di=0 then

begin

writeln(‘Имеют одну точку пересечения’);

x:=-(b-m)/(2*(a-d));

y:=a*x*x+b*x+c;

writeln(‘x=’, x:0:3, ‘y=’, y:0:3);

end;

readln;

end.
Результат работы программы:

Для тестирования программы использовалось четыре варианта набора переменных.





Задание №2.

Эту задачу необходимо решить три раза с использованием
трех видов цикла: FOR, WHILE и REPEAT.
В выводах обязательно сравнить все три цикла и определить, какой именно наилучшим образом подходит для решения этой задачи и почему

Вводится последовательность из N произвольных чисел.

Найти среднее значение положительных элементов последовательности.

2.1Решение:

Введение последовательности ограничим введением числа «0». Используем оператора REPEAT.

Алгоритм:



Описание структуры программы:
Для решения задачи необходимо минимум одно положительное число вещественного типа.
Для очистки экрана используется специальная процедура
ClrScr из модуля CRT.

Код программы:

Program z0021

Uses Crt;

Var x,sr: real; k:byte;

Begin

ClrScr;

Writeln(‘Окончание ввода”0” ’);

K:=0; sr:=0;

Repeat

Write(‘Число=’); readln(x);

If x>0 then

begin

inc(k);

sr:=sr+x;

end;

until x=0;

if k>0 then writeln(‘среднее арифметическое введенных чисел=’,sr/k:0:3)

else writeln(‘Нету положительных’);

readln;

end.

Результаты работы программы:

Для тестирования программы использовалось два варианта набора чисел.





2.2Решение:

Введение последовательности ограничим введением числа «0». Используем оператора WHILE.

Алгоритм:



Описание структуры программы:
Для решения задачи необходимо минимум одно положительное число вещественного типа.
Для очистки экрана используется специальная процедура
ClrScr из модуля CRT.

Код программы:

Program z0022

Uses Crt;

Var x,sr: real; k:byte;

Begin

ClrScr;

Writeln(‘Окончание ввода”0” ’);

K:=0; sr:=0;

Write(‘Число=’); readln(x);

While x<>0 do

begin

while x>0 do

begin

inc(k);

sr:=sr+x;

write(‘Число=’); readln(x);


end;

write(‘Число=’); readln(x);

end;

if k>0 then writeln(‘среднее арифметическое введенных чисел=’,sr/k:0:3)

else writeln(‘Нету положительных’);

readln;

end.

Результаты работы программы:

Для тестирования программы использовалось два варианта набора чисел.





2.3Решение:

Введение последовательности ограничием введением числа чисел. Используем оператора FOR.

Алгоритм:



Описание структуры программы:
Для решения задачи необходимо минимум одно положительное число вещественного типа.
Для очистки экрана используется специальная процедура
ClrScr из модуля CRT.

Код программы:

Program z0023

Uses Crt;

Var x,sr: real; i,n:integer; k:byte;

Begin

ClrScr;

Writeln(‘Число вводимых чисел= ’); readln(n);

k:=0; sr:=0;

For i:=0 to n-1 do

begin

If x>0 then

inc(k);

if x>0 then

sr:=sr+x;

Write(‘Число=’); readln(x);

end;

if k>0 then writeln(‘среднее арифметическое введенных чисел=’,sr/k:0:3)

else writeln(‘Нету положительных’);

readln;

end.

Результаты работы программы:

Для тестирования программы использовалось два варианта набора чисел.





Вывод:

Для решения данной задачи больше подходит цикл REPEAT. Поскольку количество циклов нам заранее не известно, что является необходимым условием для использования цикла
FOR. А так же на каждой итерации циклы FOR и WHILE выполняют только по одному оператору. В отличие от них, цикл REPEAT позволяет выполнить сразу несколько операторов, что в данных условиях более удобно.

Задание №3.

В файле хранятся действительные числа. Необходимо
определить (без использования массивов) максимальное число,
минимальное число и их среднее арифметическое.

Решение:

Для набора чисел используем генератор случайных чисел с задаваемым пределом количества этих чисел и создадим файл.

Алгоритм:



Код программы:

Program z_03

Uses Crt;

Var f: file of real; i,k,kol: integer; x,max,min,sr:real;

Begin

randomize;

writeln('Введите количество чисел');

readln(kol);

assign(f,'z003.txt');

rewrite(f);

for i:=1 to kol do

begin

x:=random(kol);

write(f,x);

end;

close(f);

reset(f);

read(f,x);

max:=x;

min:=x;

while not eof(f) do

begin

read(f,x);

write(x:0:2,' ');

 if x>max then

 max:=x;

 if x
 min:=x;

 sr:=sr+x;

 end;

 close(f);

 writeln;

 writeln('Максимум: ',max:0:1);

 writeln('Минимум: ',min:0:1);

 writeln('Среднее арифметическое:',sr/kol:0:3);

 readln;

end.

Результаты работы программы:

Для тестирования программы использовалось два варианта набора по 100 и по 150 чисел.





ЛИТЕРАТУРА
1. Острейковский В. А. Информатика : учебник для вузов /
В. А. Острейковский. — М. : Высш. шк., 1999.
2. Вирт Н. Алгоритмы и структуры данных / Н. Вирт. —
М. : Мир, 1989.
3. Епанешников А. М. Программирование в среде Turbo
Pascal 7.0 / А. М. Епанешников, В. А. Епанешников. — 3-е изд.,
стер. — М. : ДИАЛОГ-МИФИ, 1996.
4. Культин Н .Б. Turbo Pascal в задачах и примерах / Н. Б.
Культин. — СПб. : БХВ-Петербург, 2000.
5. Немнюгин С. А. Turbo Pascal / С. А. Немнюгин. — СПб. :
Питер, 2000.
6. Шпак Ю. А. Turbo Pascal 7.0 на примерах / Ю. А. Шпак ; под
ред. Ю. С. Ковтанюка. — Киев : Юниор, 2003.0>