русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Решение задач на языке программирования Паскаль


Дата добавления: 2015-07-23; просмотров: 1035; Нарушение авторских прав


 

ПРИМЕР 1. Найти произведение десяти произвольных чисел. Числа вводить по очереди в переменную X (среди вводимых чисел нулевых нет) .

Пояснение. P – переменная для хранения произведения, до цикла ей присваивается значение 1; I – параметр цикла.

Программа

program Zadacha;

var P, X:real; I:integer;

begin

P:=1;

for I:=1 tо 10 do begin

write(‘Введите число: ’); read(X);

P:=P*X;

end;

write(‘Произведение равно ‘, P);

end.

ПРИМЕР 2. Цифры вводимого числа N выдать в обратном порядке.

Пояснение. В данной программе используется цикл с постусловием, т.е. как только целая часть при делении числа на 10 станет равна 0, программа прекращает свою работу.

Программа.

program Zadacha;

var

N, K, I : integer;

begin

write (‘введите число ’);

readln (N);

repeat

K:=N mod 10;

write (K);

N:=N div 10;

until N=0;

end.

ПРИМЕР 3. Задано N троек произвольных положительных чисел A, B, C. Вводя их по очереди и интерпретируя как длины сторон треугольника, определить, сколько троек может быть использовано для построения треугольника. (Числа A, B, C при вводе располагать в порядке возрастания ).

Пояснение. Три произвольных положительных числа могут трактоваться как стороны треугольника тогда и только тогда, когда сумма любых двух сторон будет больше третьей (неравенство треугольника). В нашем случае, когда ,достаточно проверить, чтобы самое большое число C было меньше суммы двух других, т.е. А + В. Переменная N задает количество троек чисел; в переменной K накапливается количество троек чисел, удовлетворяющих заданному условию, I-параметр цикла, изменяющийся от 1 до N с шагом 1.

Программа.

program Zadacha;

var

N, K : integer; A, B, C : real;

begin

write( ‘Введите количество троек чисел ’);

readln(N);

K := 0;

for I:=1 to N do



begin

write (‘ Введите A, B, C’); readln(A, B, C);

if C < A + B then K:= K + 1;

end;

write(‘K= ‘, K);

end.

 

ПРИМЕР 4.Дан массив А размером N . Требуется удалить K–й элемент из массива.

Пояснение. Удалить элемент, расположенный на K–м месте в массиве, можно, сдвинув весь “хвост” массива, начиная с (K +1) -го элемента, на одну позицию влево, т.е. выполняя операции для I=K, ...,N-1.

Программа.

program Zadacha;

var

N, K, I :iInteger;

A : array [1..100 ] of real;

begin

{Ввод элементов массива}

write ( ‘ введите количество элементов массива’);

readln(N);

write (‘введите номер элемента для удаления’);

readln (K);

{Ввод исходного массива}

for I := 1 tо N do read(A [I]);

{удаление K-того элемента}

for I := K tо N -1 do A[ I ] := A [I + 1];

{вывод полученного массива}

for I := 1 tо N-1 do write (A [I],’ ’);

end.

 

ПРИМЕР 5. Дан массив А размером N. Требуется удалить элементы из массива равные вводимому Х.

Пояснение. Сравнивая элементы массива с заданным значением Х, в случае если элемент равен Х, удаляем элемент, сдвинув весь «хвост» массива, начиная с номера найденного элемента, на одну позицию влево, т.е. выполняя операции для I=K, ...,N-1. Проверку продолжаем до тех пор, пока не просмотрим все элементы массива.

Программа.

program Zadacha;

var

N, Х, I, I1 : integer;

A : array [1..100 ] Of Real;

begin

{Ввод элементов массива}

write ( ‘ введите количество элементов массива’);

readln(N);

write (‘введите значение элемента для удаления’);

readln (Х);

{Ввод исходного массива}

for I := 1 tо N do read(A [I] );

{удаление элемента равного Х}

I:=1;

while I<= N do

begin

if A[I] = X then

begin

for I1:= I tо N -1 do A[ I1 ] := A [I1 + 1];

N:=N-1;

end

else I:=I+1;

end;

{вывод полученного массива}

for I := 1 tо N do write (A [I],’ ’);

end.

ПРИМЕР 6. Дан массив A размером N. Определить среднее значение элементов массива. Найти далее номер элемента массива, наиболее близкого к среднему значению.

Пояснение. Расстояние между двумя числами a и b определяется как модуль разности между ними | a – b |. Поэтому для определения элемента, наиболее близкого к среднему значению, необходимо рассматривать модули разностей между элементами массива и средним арифметическим и определять номер элемента массива, для которого этот модуль минимален.

Программа.

program Zadacha;

Var

I, N, K : integer;

M, S : real;

A : array[ 1..100 ] of real;

begin

write( ‘Введите количество элементов ’ );

readln (N);

write ( ‘Введите элементы массива’);

for I := 1 tо N do readln (A [ I ]);

{Нахождение суммы элементов}

S := 0;

for I := 1 tо N do S := S + A [ I ];

S := S/N; {Определение среднего арифметического}

K := 1; M := abs (A [ 1 ] - S);

for I := 2 tо N do

if M > abs (A [ I ] - S) then begin

M := abs( A [ I ] - S);

K := I;

end;

write (‘ номер элемента равен ‘, K);

end.

 

ПРИМЕР 7. Дан целочисленный массив A размером MxN. Составить программу сортировки элементов каждого столбца в порядке возрастания.

Пояснение. Сравнивая два элемента заданного J столбца, в зависимости от результата сравнения меняем элементы в столбце местами или оставляем все без изменения.

Программа.

program Zadacha;

var

A : array[1..10,1..10] of integer;

I, M, N, J, I1, T: integer;

begin

read (M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

for J:=1 to N do read(A[I,J]);

end;

writeln;

{ перестановка элементов столбца массива A}

for J:=1 to N do

begin

for I:=1 to M-1 do

begin

for I1:=I+1 to M do

iF A[I1,J]<A[I,J] then

begin

T:=A[I,J];

A[I,J]:=A[I1,J];

A[I1,J]:=T;

end;

end;

end; { Печать преобразованного массива}

for I:=1 to M do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

 

ПРИМЕР 8. Дан целочисленный массив A размером MxN. Составить программу перестановки строк в данном массиве в порядке убывания произведений элементов в каждой строке.

Пояснение. Высчитывая произведения двух строк и сравнивая их между собой, в зависимости от результата сравнения либо меняем строки массива A, либо оставляем все без изменения.

Программа.

program Zadacha;

var

A : array[1..10,1..10] of integer;

I, J, M, N, I1, T, PI, PI1 : integer;

begin

read(M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

for J:=1 to N do read(A[I,J]);

end;

{ перестановка строк массива A}

for I:=1 to M-1 do

begin

for I1:=I+1 to M do

begin

PI:=1; PI1:=1;

for J:=1 to N do

begin

PI:=PI*A[I,J];

PI1:=PI1*A[I1,J];

end;

if PI<PI1 then

begin

for J:=1 to N do

begin

T:=A[I,J];

A[I,J]:=A[I1,J];

A[I1,J]:=T;

end;

end;

end;

end; { Печать преобразованного массива}

for I:=1 to M do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

 

ПРИМЕР 9. Определить, имеются ли в массиве А[5,4] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.

Пояснение. Сортируем элементы столбцов. Сравнивая элементы в столбцах, в случае если количество одинаковых элементов совпадает с количеством элементов в столбце выдаем номера этих столбцов на печать и изменяем флажок S. Если флажок свое значение не поменял значит, столбцов с одинаковыми элементами нет о чем выдается сообщение.

Программа.

program Zadacha;

var

A : array[1..5,1..4] of integer;

I, J, I1, N, S, T, : integer;

begin

{Ввод массива A}

for I:=1 to 5 do

begin

for J:=1 to 4 do read(A[I,J]);

end;

{ сортировка элементов столбца массива A}

for J:=1 to 4 do

begin

for I:=1 to 4 do

begin

for I1:=I+1 to 5 do

if A[I1,J]I<A[I,J] then

begin

T:=A[I,J];

A[I,J]:=A[I1,J];

A[I1,J]:=T;

end;

end;

end;

{Проверяем имеются ли столбцы с одинаковыми элементами }

S:=0;

for J:=1 to 3 do

begin

for J1:=J+1 to 4 do

begin

N:=0;

for I:=1 to 5 do if A[I,J]=A[I,J1] then N:=N+1;

if N=5 then

begin

S:=1;

writeln (‘одинаковые столбцы’, J:3,J1:3);

end;

end;

end;

if S=0 then writeln(‘одинаковых столбцов нет’);

end.

 

ПРИМЕР. 10. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже главной диагонали с элементами, расположенными выше главной диагонали в зеркальном отображении относительно главной диагонали.

Пояснение. Определяем участок сектора, расположенный ниже главной диагонали и меняем элементы местами.

Программа 7.34.

program Zadacha;

var

A : array[1..100,1..100] of integer;

I, M, N, J, T : integer;

begin

read(M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

for J:=1 to N do read(A[I,J]);

end;

{ перестановка элементов массива A}

for I:=2 to N do

begin

for J:=1 to I-1 do

begin

T:=A[I,J];

A[I,J]:=A[J,I];

A[J,I]:=T;

end;

end;

{ Печать преобразованного массива}

for I:=1 to M do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

 

ПРИМЕР. 11. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже побочной диагонали с элементами, расположенными выше побочной диагонали в зеркальном отображении относительно побочной диагонали.

Пояснение. Определяем сектор элементов, расположенных выше побочной диагонали и, используя закономерности изменений номера столбца и номера строки, меняем элементы местами.

Программа.

program Zadacha;

var

A : array[1..100,1..100] of integer;

I, M, N, J, T : integer;

begin

read(M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

For J:=1 To N Do read(A[I,J]);

end;

{ перестановка элементов массива A}

for I:=1 to N-1 do

begin

for J:=1 to N-I do

begin

T:=A[I,J];

A[I,J]:=A[N-J+1,N-I+1];

A[N-J+1,N-I+1]:=T;

end;

end;

{ Печать преобразованного массива}

for I:=1 To M Do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

ПРИМЕР. 12. В тексте заменить все буквы “A” на буквы “B”.

Программа

program Zadacha;

var

ST : string;

I : integer;

begin

write (‘Введите текст’);

readln (ST);

{ Замена букв ‘A’ на буквы ‘B’}

for I:=1 to length(ST) do If ST[I] = ‘A’ then ST[I] := ‘B’;

writeln (‘Вывод полученного текста:’); Write(ST);

end.

ПРИМЕР. 13. Если в заданном тексте между словами встречается более одного пробела, убрать лишние.

Пояснение. Определяем номер позиции, с которой в тексте стоит два пробела. Удаляем один из них и повторяем действие, пока между словами не останется по одному пробелу.

Программа.

program Zadacha;

var

ST : String;

N : byte;

begin

write (‘Введите текст’); readln (ST);

{ Удаление лишних пробелов}

N:=Pos(‘ ‘,ST);

while N <> 0 Do

begin

delete(ST, N, 1);

N:=pos(‘ ‘,ST);

end;

writeln (‘Вывод полученного текста:’); Write(ST);

end.

 

ПРИМЕР. 14. Найти N первых простых чисел (решение может быть дано с использованием объектно-ориентированного программирования).

Пояснение. Практически любую задачу, которую возможно реализовать стандартными методами, можно решить, используя принципы объектно-ориентированного программирования, хотя его преимущество в полной мере можно оценить только при разработке программных систем большого объема.

При решении задач с помощью концепции объектно-ориентированного программирования необходимо провести исследование предметной области, в данном случае это будет область целых чисел. Так как мы будем исследовать числа, то в роли основного объекта будет выступать объект «число», в котором определим методы внесения значений в поле объекта и метод, определяющий является ли число простым. То есть вначале программист описывает все свойства и задает все методы объекта, а только затем приступает к разработке основного текста программы, манипулируя уже созданными компонентами. Это одно из основных отличий принципов разработки программ в структурном и объектно-ориентированном программировании.

Программа

type number = object

X: word;

procedure Get(cur_x: word);

function Simple: boolean;

end;

procedure Number.Get;

begin

X := cur_x;

end;

function Number.Simple: boolean;

war i, kol: word;

begin

Kol:=0;

for i:=2 to (X div 2) do if (X mod i=0) then inc(kol);

if kol=0 then simple := true else simple := false;

end;

var num: number;

Count, n: byte;

Cur_n:word;

begin

write(‘ Введите количество ’);

readLn(n);

Count:=0;

Cur_n:=2;

while Count<=n do begin

Num.Get(Cur_x);

If Num.Simple then begin Inc(Count);write(Num.X:4);

End;

end;

end.

 

При решении задач, использующих принципы ООП, текст основной программы обычно получается не очень большим, так как все основные алгоритмы принято включать в методы заданных объектов, которые могут объединяться в более общие. Тем самым создается развернутая иерархическая структура, которая является более легкой для отладки программы и понимания принципов ее работы. При решении нашей задачи мы все же не полностью придерживались концепции ООП, так как она предполагает использование переменных только объектного типа данных. Если в нашем случае мы будем придерживаться строгой концепции, то текст программы значительно возрастет, поэтому при решении задач, в частности, на языке программирования Паскаль очень часто приходится сочетать объектные и стандартные типы данных.

ПРИЛОЖЕНИЕ 2

 

Варианты заданий для самостоятельной работы

 



<== предыдущая лекция | следующая лекция ==>
ЗАКЛЮЧЕНИЕ | Вычисление значений выражений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.147 сек.