11
АЛГОРИТМИЗАЦИЯ АЛГОРИТМИЗАЦИЯ и и ПРОГРАММИРОВАНИЕ ПРОГРАММИРОВАНИЕ ЗАДАНИЕ «С»

задания с олейник

Embed Size (px)

Citation preview

Page 1: задания с олейник

АЛГОРИТМИЗАЦИЯАЛГОРИТМИЗАЦИЯии

ПРОГРАММИРОВАНИЕПРОГРАММИРОВАНИЕ

ЗАДАНИЕ «С»

Page 2: задания с олейник

Задачи для самостоятельного программирования (код элемента 2.8.3)

Примеры возможных задач (список не является исчерпывающим):

1. Формирование и печать исходного массива (sh-1, sh_2, sh_3).

2. Проверка упорядоченности массива (pr_2).

3. Слияние двух упорядоченных массивов (pr_3).

4. Сортировка (pr_4).

5. Поиск заданной подстроки (скажем, «abc» в последовательности символов

(pr_5).

6. Поиск корня делением отрезка пополам (pr_6).

7. Поиск наименьшего делителя целого числа (pr_7).

8. Разложение целого числа на множители (простейший алгоритм) (pr_8).

9. Умножение двух многочленов (pr_9).

Программы находятся в папке rab_1

Page 3: задания с олейник

Формирование и печать исходного массива с помощью генератора случайных чисел

Формирование одномерного массива

program sh_1;uses crt;const n=10; d=21;var a:array [1..n] of integer;i:integer;beginclrscr;{Формирование и печать одномерного массива}randomize;for i:=1 to n do begin a[i]:=-(d div 2)+random(d); write(a[i]:3); end; writeln;{Обработка одномерного массива}readln;end.

Формирование двумерного массива

program sh_2;uses crt;const n=6; m=3; d=21;var a:array [1..n,1..m] of integer;i,j:integer;beginclrscr;{Формирование и печать двумерного массива}randomize;for i:=1 to m dobeginfor j:=1 to n do begin a[i,j]:=-(d div 2)+random(d); write(a[i,j]:4); end; writeln;end;{Обработка двумерного массива}readln;end.

Page 4: задания с олейник

Проверка упорядоченности массива

program pr_2; uses crt; const n=5; var a:array [1..n] of integer; i,f:integer; begin clrscr; for i:=1 to n-1 do read(a[i]); readln(a[n]); clrscr; for i:=1 to n do write(a[i]:3); writeln; {Проверка упорядоченности массива по возрастанию его элементов} f:=0; for i:=1 to n-1 do if a[i]>a[i+1] then f:=1; if f=0 then writeln('Массив упорядочен') else writeln('Массив не упорядочен'); writeln(i); readln; end.

Page 5: задания с олейник

Слияние массивов «а» и «b» в массив «с»

program pr_3; uses crt; label m1, m2,m3, m4; const n=5; m=4; var a: array [1..n] of integer; b: array [1..m] of integer; c: array [1..100] of integer; i,j,k:integer; begin clrscr; writeln ('Формирование массива а и b'); for i:=1 to n-1 do read(a[i]); readln(a[n]); for i:=1 to m-1 do read(b[i]); readln(b[m]); clrscr; writeln('Печать массивов а и b'); for i:=1 to n do write(a[i]:3); writeln; for j:=1 to m do write(b[j]:3); writeln; {Слияние массивов а и b в массив с} i:=1; j:=1; k:=1; m3: if a[i]<=b[j] then begin m1: c[k]:=a[i]; i:=i+1; k:=k+1; endelse begin m2: c[k]:=b[j]; j:=j+1; k:=k+1; end; if i<=n then begin if i<=m then goto m3 else goto m1; endelse begin if j<=m then goto m2 else goto m4; end; m4: writeln('Песать массива с'); for i:=1 to n+m do write(c[i]:3); writeln; readln; end.

i 1 2 3 4 5а 3 7 8 10 15j 1 2 3 4b 4 6 8 16k 1 2 3 4 5 6 7 8 9c 3 4 6 7 8 8 10 15 16

Page 6: задания с олейник

Сортировка «Пузырёк»

program pr_4;uses crt;label m1;const n=10; d=21;var a:array [1..n] of integer;i,k,r,f:integer;beginclrscr;{Формирование и печать исходного массива}randomize;for i:=1 to n do begin a[i]:=-10+random(d); write(a[i]:4); end; writeln;{Сортировка массива по возрастанию}m1: f:=0;for i:=1 to n-1 doif a[i]>a[i+1] then begin r:=a[i]; a[i]:=a[i+1]; a[i+1]:=r; f:=1; end;if f<>0 then goto m1;{Печать отсортированного массива}for i:=1 to n dowrite(a[i]:4);readln;end.

Page 7: задания с олейник

Отыскание корня уравнения 2x-cos(x)=0 делением отрезка пополам

x -4 -3,5 -3 -2,5 -2 -1,5 -1 -0,5 0 0,5 1 1,5 2 2,5 3 3,5 4

y -7,35 -6,06 -5,01 -4,20 -3,58 -3,07 -2,54 -1,88 -1,00 0,12 1,46 2,93 4,42 5,80 6,99 7,94 8,65

Page 8: задания с олейник

program pr_6;uses crt;label m1;var c,e,a,b:real;function zf(var x:real):real;beginzf:=2*x-cos(x);end;beginclrscr;readln(a,b,e);{Проверка наличия корня на интервале [a,b]}if (zf(a)*zf(b))>0 then begin writeln('Нет корней'); goto m1; end;{Проверка, являются ли границы интервала корнем}if zf(a)=0.0 then begin writeln(a:6:2); goto m1; end;if zf(b)=0.0 then begin writeln(b:6:2); goto m1; end;{Деление отрезка и исключение половины, не содержащей корни}repeatc:=(a+b)/2;if zf(a)*zf(c)<0.0 then b:=c else a:=c;until abs(a-b)<e;writeln('Корень=',(a+b)/2:6:2);m1: readln;end.

Тестовый набор данных: a b e-4 4 0.0001Корень=0.45

Page 9: задания с олейник

Поиск наименьшего делителя целого числа

program pr7;var a,i:integer;begin{Поиск наименьшего делителя целого числа}readln(a);for i:=2 to a dobegin if a mod i=0 then begin writeln(i); i:=a; end;end;readln;end.

Разложение целого числа на множители

program pr8;uses crt;var a,i:integer;beginclrscr;{Разложение целого числа на множители}readln(a);for i:=2 to a-1 dobegin if a mod i=0 then writeln(i:3); end;readln;End.

Поиск заданной подстрокиprogram pr_5;var a:string; k,i,dl:integer;begin k:=0;writeln(‘ Введите строку символов');readln(a);dl:=lenght(a);for i:=1 to dl-2 do if copy(a,i,3)='abc‘ then k:=k+1;writeln(k);readln;end.

program sh_3; const n=5; var a:array [1..n] of integer; i:integer; begin for i:=1 to n-1 do read(a[i]); readln(a[n]); {Обработка массива} readln; end.

Ввод массива с клавиатуры

Чтобы правильно работала в конце программы конструкция readln

Page 10: задания с олейник

Умножение двух многочленовprogram pr_9;uses crt;var a:array [0..100] of integer;x,y:real; i,j,n,m,k,f:integer;beginclrscr;writeln('Введите степени многочленов m и n');readln(m,n);writeln('Введите коэффициенты 1-го многочлена');for i:=m downto 1 doread(a[i]);readln(a[0]);writeln('Умножение двух многочленов');for i:=n+m downto m dobegin writeln('Введите один коэффициент 2-го многочлена'); readln(k); for j:=m downto 1 do {begin} a[j+m+1]:=a[j]*k+a[j+m]; {end;} a[m+1]:=a[0]*k;{Печать коэффициентов произведения двух многочленов} writeln('a(',i,')=',a[m+m+1]);end;for i:=m-1 downto 0 dowriteln('a(',i,')=',a[i+m+1]);readln;end.

Тестовый набор данных:

(5X2 + 3X – 4) (x2 + 2) =

5X4 + 3X3 + 6X2 + 6X - 8

0 1 2 3 4 5

-4 3 5 0 0 0

-4 3 5 10 -4 3 0-8 6 6 2

Page 11: задания с олейник

Компьютер-Наставник. Подготовка к ЕГЭ

Для того чтобы программа работала в полном режиме, необходимо при запуске ввести пароль. Пароль находится на главной странице нашего сайта www.school-tests.ru и обновляется ежедневно. При открытии программы необходимо подключение к интернет. После проверки программой пароля от интернета можно отключиться. Для работы программы подключение к Интернет не нужно. "Компьютер-Наставник. Подготовка к ЕГЭ" - это программа, которая уже помогла 2 поколениям учеников сдать Единый государственный экзамен.Её структура интуитивно понятна.Программа имеет 2 режима:Режим обучения иРежим контроля

Режим обучения предназначен для самостоятельной подготовки к ЕГЭ. Ученик сам выбирает тему и сложность(А1, А2 и т.п. в соответствии с форматом ЕГЭ), а программа генерирует задачи в соответствии с этим выбором. Каждый раз задачи РАЗНЫЕ! Это значит, что задач по выбранной Вами теме точно хватит, чтобы Вы научились их решать!Когда Вы выберете ответ (или введёте его, если это подразумевается в задании), программа сообщит, правильный ли он. Если Вы не уверены в ответе, всегда можно посмотреть путь решения данной задачи с ответом или помощь в виде справочного материала по решению данного класса задач. В любой момент можно распечатать задания на принтере или сохранить их, сделать перерыв, а потом вернуться к сохраненному. Ведется статистика верно и неверно решенных задач. Режим контроля является имитацией Единого государственного экзамена. Система генерирует задачи по всем темам в соответствии с форматом ЕГЭ, и выделяет время для их решения. Решать можно в любом порядке, как и на ЕГЭ. Ведется подсчет набранных баллов. Каждый раз, когда Вы выбираете Режим контроля, задачи будут разные!