Контрольная работа №1. Контрольная работа 1 По дисциплине Информатике2 Вариант6 Студент гр з362П54
Скачать 296.16 Kb.
|
Федеральное государственное бюджетное образовательное учреждение высшего образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники. (ПрЭ) КОНТРОЛЬНАЯ РАБОТА №1 По дисциплине Информатике-2 Вариант№ 6
Томск 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> |