Решение типичных задач на языке Pascal
Оценка 4.9

Решение типичных задач на языке Pascal

Оценка 4.9
Особые потребности
doc
информатика
7 кл—11 кл +1
28.01.2017
Решение типичных задач на языке Pascal
Решение типичных задач на языке Pascal Кривощекова Вера Анатольевна Учитель информатики МАОУ Петелинская СОШ Будет интесесно для учителей, которые приступили к изучению раздела программирование на языке Паскаль. Для начинающих учеников, которые осваивают язык программирования Паскаль. Для увлеченных людей, которые решили сами для себя освоить языки программирования
Задачи на языке Pascal с решениями.doc
Кривощекова Вера Анатольевна Учитель информатики МАОУ Петелинская СОШ Решение типичных задач на языке Pascal Геометрические задачи Задача 1 Дан круг (X0, Y0, R) и точка (X, Y), где X0, Y0, R, X, Y ­ вещественные числа. Определить, лежит ли эта точка внутри данного круга. Пример (0, 0, 1) и (0.5, 0.5) Результат: TRUE Вариант решения var X0, Y0, R, X, Y: Real; Code (Pascal): begin   ReadLn (X0, Y0, R, X, Y);   WriteLn (Sqr (X ­ X0) + Sqr (Y ­ Y0) <= Sqr (R)); end. Задача 2 Дан треугольник с вершинами (X1, Y1); (X2, Y2); (X3, Y3) и точка (X, Y). Все Xi, Yi ­  вещественные числа. Определить, лежит ли эта точка внутри данного треугольника. Пример (0, 0); (3, 0); (0, 3) и (1, 1) Результат: TRUE Вариант решения Code (Pascal): const eps = 1E­5; var X1, Y1, X2, Y2, X3, Y3, X, Y: Real;     S0, S1, S2, S3: Real; function S (X1, Y1, X2, Y2, X3, Y3: Real): Real; var a, b, c, p: Real; begin   a := Sqrt (Sqr (X1 ­ X2) + Sqr (Y1 ­ Y2));   b := Sqrt (Sqr (X1 ­ X3) + Sqr (Y1 ­ Y3));   c := Sqrt (Sqr (X3 ­ X2) + Sqr (Y3 ­ Y2));   p := 0.5 * (a + b + c);   S := Sqrt (p * (p ­ a) * (p ­ b) * (p ­ c)); end; {func S} begin   ReadLn (X1, Y1, X2, Y2, X3, Y3, X, Y); S0 := S (X1, Y1, X2, Y2, X3, Y3);   S1 := S (X, Y, X2, Y2, X3, Y3);   S2 := S (X1, Y1, X, Y, X3, Y3);   S3 := S (X1, Y1, X2, Y2, X, Y);   WriteLn (S0 + eps >= S1 + S2 + S3); end. Задача 3 Дан прямоугольник, заданный двумя противоположными вершинами (X1, Y1); (X2, Y2) и  точка (X, Y). Все Xi, Yi ­ вещественные числа. Определить, лежит ли эта точка внутри данного прямоугольника. Пример (1, 1); (7, 4) и (4, 2) Результат: TRUE Вариант решения var X1, Y1, X2, Y2, X, Y: Real; Code (Pascal): begin   ReadLn (X1, Y1, X2, Y2, X, Y);   WriteLn ((Abs (X1 ­ X2) = Abs (X1 ­ X) + Abs (X2 ­ X)) and            (Abs (Y1 ­ Y2) = Abs (Y1 ­ Y) + Abs (Y2 ­ Y))); end. Задача 1 Дано число a (0..999999999). Найти сумму цифр числа a. Пример a = 12345 Результат: 15 Вариант решения Задачи на числа Code (Pascal): var a: LongInt;     S: Byte; begin   ReadLn (a);   S := 0;   while a > 0 do   begin     Inc (S, a mod 10);     a := a div 10;   end; {while}   WriteLn (S); end. Задача 2 Дано число a (0..999999999). Вывести это число в обратном порядке. Пример a = 12345 Результат: 54321 Вариант решения Code (Pascal): var a: LongInt; begin   ReadLn (a);   repeat     Write (a mod 10);     a := a div 10;   until a = 0; end. Задача 3 Дано число a (0..999999999). Определить, является ли оно простым. Замечание: число называется простым, елси оно делится только на 1 и на самого себя. Пример a = 12345 Результат: FALSE Вариант решения Code (Pascal): var a, N: LongInt;     Prost: Boolean; begin   ReadLn (a);   Prost := True;   for N := 2 to a div 2 do     if a mod N = 0 then     begin       Prost := False;       Break;     end; {if}   WriteLn (Prost); end. Задача 4 Дано число a (0..999999999). Разложить это число на простые множители. Пример a = 12345 Результат: 3 5 823 Вариант решения Code (Pascal): var a, N: LongInt; function Prost (X: LongInt): Boolean; var N: LongInt; begin   for N := 2 to X div 2 do     if X mod N = 0 then     begin       Prost := False;       Exit;   end; {if}   Prost := True; end; {func Prost} begin   ReadLn (a);   while a > 0 do     if Prost (a) then     begin       Write (a);       Break;     end else     begin       N := 2;       while N <= a div 2 do       begin         if (a mod N = 0) and Prost (N) then         begin           Write (N, ' ');           a := a div N;           Break;         end; {if}         Inc (N);       end; {while}     end; {if} end. Задача 5 Дано число S (0..999999999), обозначающее количество секунд. Вычислить числа Hour, Minute (0..59), Second (0..59), показывающие число часов, минут и  секунд соответственно в числе S. Пример S = 12345 Результат: 3:25.45 Вариант решения Code (Pascal): var S: LongInt;     Hour, Minute, Second: Integer; begin   ReadLn (S);   Second := S mod 60;   Minute := S div 60;   Hour := Minute div 60; Minute := Minute mod 60;   WriteLn (Hour, ':', Minute, '.', Second); end. Задача 6 Дано натуральное число a (1..999999999). Представить его в виде суммы квадратов двух натуральных чисел или сообщить о  невозможности такого представления. Пример a = 29 Результат: 2, 5 Вариант решения Code (Pascal): var a, n: LongInt;     b: Real; begin   ReadLn (a);   for n := 1 to Trunc (Sqrt (a)) do   begin     b := Sqrt (a ­ Sqr (n));     if (Int (b) = b) and (b > 0) then     begin       WriteLn (n, ', ', Trunc (b));       Exit;     end; {if}   end; {for}   WriteLn ('No'); end. Задача 7 Дано число a (1..999999999). Определить, является ли оно совершенным. Замечание: натуральное число называется совершенным, если оно равно сумме всех своих  собственных делителей, включая 1. Пример a = 496 Результат: TRUE Вариант решения Code (Pascal): var a, i, S: LongInt; begin   ReadLn (a);   S := 1;   for i := 2 to a div 2 do     if a mod i = 0 then Inc (S, i);   WriteLn (S = a); end. Задача 8 Даны два натуральных числа: m, n (1..999999999), образующие дробь вида m / n. Сократить дробь, что бы числитель и знаменатель были взаимнопростые. Пример m = 256; n = 64 Результат: 4 1 Вариант решения Code (Pascal): var m, n, i: LongInt; begin   ReadLn (m, n);   i := 2;   while i <= m do   begin     if (m mod i = 0) and (n mod i = 0) then     begin       m := m div i;       n := n div i;     end; {if}     Inc (i);   end; {while}   WriteLn (m, ' ', n); end. Задачи на строки Задача 1 Дана строка S, состоящая из латинских букв и пунктуационных знаков. Преобразовать эту строку к верхнему регистру. Пример S = 'Hello, World!' Результат: HELLO, WORLD! Вариант решения Code (Pascal): var S: string;     i: Integer; begin   ReadLn (S);   for i := 1 to Length (S) do     S[i] := UpCase (S[i]);   WriteLn (S); end. Задача 2 Дана строка S, состоящая из латинских букв и пробелов. Определить количество слов в данной строке. Замечание: словом считается любая последовательность максимальной долины, состоящая из латинских букв и не содержащая пробелов. Пример S = 'Hello World' Результат: 2 Вариант решения var S: string;     i, Count, State: Integer; Code (Pascal): begin   ReadLn (S);   Count := 0;   State := 1;   for i := 1 to Length (S) do     Case State of       1: if UpCase (S[I]) in ['A'..'Z'] then          begin            Inc (Count);            State := 2;          end; {if}       2: if not (UpCase (S[I]) in ['A'..'Z']) then State := 1;     end; {case}   WriteLn (Count); end. Задача 3 Дано 10 строк, вводимых с клавиатуры. Вывести их в алфавитном порядке. Пример Marina Aleksej Sergej Ivan Peter Lubov Irina Pavel Natasha Kostya Результат: Aleksej Irina Ivan Kostya Lubov Marina Natasha Pavel Peter Sergej Вариант решения Code (Pascal): const N = 10; type TStrs = array[1..N] of string; var S: TStrs;     i: Integer; procedure Sort (var S: TStrs); var i, j: Integer;     tmp: string; begin   for i := 1 to N ­ 1 do     for j := i + 1 to N do       if S[i] > s[j] then       begin         tmp := S[i];         S[i] := S[j];         S[j] := tmp;       end; {if} end; {proc Sort} begin   for i := 1 to N do     ReadLn (S[i]);   Sort (S);   WriteLn;   for i := 1 to N do     WriteLn (S[i]); end. Задача 4 Дана строка S. Определить, является ли она полиндромом. Замечание: полиндромом называются строки, которые одинаково читаются как слева­ направо, так и справа­налево. Пример S = 'asdfgfdsa' Результат: TRUE Вариант решения Code (Pascal): var S: string;     i: Integer;     Polindr: Boolean; begin   ReadLn (S);   Polindr := True;   for i := 1 to Length (S) div 2 do     if S[i] <> S[Length(S)­i+1] then     begin       Polindr := False;       Break;     end; {if}   WriteLn (Polindr); end. Задача 5 Дана строка S, состоящая только из символов '0' или '1'. Подсчитать длинну самой длинной последовательности, состоящей только из '1'. Пример S = '111110011110110' Результат: 5 Вариант решения Code (Pascal): var S: string;     i, Len, MaxLen: Integer; begin   ReadLn (S);   MaxLen := 0;   Len := 0;   S := Concat (S, '0'); {ставим барьер}   for i := 1 to Length (S) do     if S[i] = '0' then     begin       if Len > MaxLen then MaxLen := Len;       Len := 0;     end else Inc (Len);   WriteLn (MaxLen); end. Задачи на массивы Задача 1 Дан массив A, состоящий из 100 натуральных чисел, заполненный случайным образом  (каждый элемент находится в промежутка от 1 до 1000). Отсортировать данный массив по неубыванию и вывести на экран. Вариант решения Code (Pascal): const n = 100; var A: array[1..n] of Word;     i, j, tmp: Integer; begin   Randomize;   for i := 1 to n do     A[i] := Random (1000) + 1;   for i := 1 to n ­ 1 do     for j := n downto 2 do       if A[j] < A[j­1] then       begin         tmp := A[j];         A[j] := A[j­1];         a[j­1] := tmp;       end; {if} for i := 1 to n do     Write (A[i]:2); end. Задача 2 Дан массив A, состоящий из 10 целых чисел. Вывести все элементы, значение которых превосходит среднего арифметического  элементов массива. Пример A: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Результат: 6, 7, 8, 9, 10 Вариант решения const n = 10; Code (Pascal): var A: array[1..n] of Integer;     i, Sum: Integer; begin   Sum := 0;   for i := 1 to n do   begin     Write ('A[', i, '] = ');     ReadLn (A[i]);     Inc (Sum, A[i]);   end; {for}   WriteLn;   for i := 1 to n do     if A[i] > Sum div n then WriteLn (A[i]); end. Задачи на матрицы Задача 1 Дана матрица A размерностью 3 x 3, состоящая из целых чисел. Найти разность между максимальным и минимальным элементами данной матрицы. Пример A: 12 44 37 8 25 32 19 28 41 Результат: 36 Вариант решения Code (Pascal): var A: array[1..3,1..3] of Integer;     i, j, Max, Min: Integer; begin for i := 1 to 3 do     for j := 1 to 3 do     begin       Write ('A[', i, ',', j, '] = ');       ReadLn (A[i,j]);     end; {for}   Max := A[1,1];   Min := A[1,1];   for i := 1 to 3 do     for j := 1 to 3 do     begin       if Max < A[i,j] then Max := A[i,j];       if Min > A[i,j] then Min := A[i,j];     end; {for}   WriteLn (Max ­ Min); end. Задача 2 Дана матрица A размерностью 5 x 5. Заполнить ее следующим образом: 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 и вывести на экран. Вариант решения Code (Pascal): var A: array[1..5,1..5] of Byte;     i, j: Integer; begin   for i := 1 to 5 do     for j := 1 to 5 do       A[i,j] := 1 + (i + j ­ 2) mod 5;   for i := 1 to 5 do   begin     for j := 1 to 5 do       Write (A[i,j]:2);     WriteLn;   end; {for} end. Задача 3 Дана матрица A размерностью 5 x 5. Заполнить ее следующим образом: 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 и вывести на экран. Вариант решения Code (Pascal): var A: array[1..5,1..5] of Byte;     i, j: Integer; begin   for i := 1 to 5 do     for j := 1 to 5 do       if Abs (j ­ 3) <= Abs (i ­ 3) then A[i,j] := 1                                     else A[i,j] := 0;   for i := 1 to 5 do   begin     for j := 1 to 5 do       Write (A[i,j]:2);     WriteLn;   end; {for} end. Задача 4 Дана матрица A размерностью 5 x 5. Заполнить ее следующим образом: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 и вывести на экран. Вариант решения Code (Pascal): var A: array[1..5,1..5] of Byte;     i, j: Integer; begin   for i := 1 to 5 do     for j := 1 to 5 do       if Odd (i) then A[i,j] := j + (i ­ 1) * 5                  else A[i,j] := 6 ­ j + (i ­ 1) * 5;   for i := 1 to 5 do   begin     for j := 1 to 5 do       Write (A[i,j]:3);     WriteLn;   end; {for} end. Задача 5 Дана матрица A размерностью 5 x 3, состоящая из целых чисел. Найти номер строки, в которой сумма элементов максимальна. Пример A: 1 2 3 0 0 0 5 5 5 2 8 6 2 4 3 Результат: 4 Вариант решения Code (Pascal): var A: array[1..5,1..3] of Integer;     i, j, Sum, Max, Imax: Integer; begin   for i := 1 to 5 do     for j := 1 to 3 do     begin       Write ('A[', i, ',', j, '] = ');       ReadLn (A[i,j]);     end; {for}   for i := 1 to 4 do   begin     Sum := 0;     for j := 1 to 3 do       Inc (Sum, A[i,j]);     if (Sum > Max) or (i = 1) then     begin       Imax := i;       Max := Sum;     end; {if}   end; {for}   WriteLn (Imax); end.

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal

Решение типичных задач на языке Pascal
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
28.01.2017