Применение алгоритмов при решении программных задач

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 10.04.2015
Размер файла 719,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Самостоятельная работа 1. Линейные алгоритмы, условия, циклы

1. Даны две переменные вещественного типа A и B. Перераспределить значения в данных переменных так, чтобы A оказалась меньшее из значений, в B - больше

Код:

var

a, b, p: real;

begin

write('Введите значения A и B через пробел: ');

readln(a,b);

if a > b then

begin

p:=a;

a:=b;

b:=p;

end;

writeln('A = ', a, '; B = ', b);

end.

Блок-схема

2. Даны числа x, y, x1, y1, x2, y2. Проверить истинность высказывания: «Точка с координатами (x,y) лежит внутри прямоугольника, левая верхняя вершина которого находится в точке (x1,y1), правая нижняя вершина - в точке (x2,y2)»

Код:

Var

x,y,x1,y1,x2,y2: integer;

Begin

Write('x: ');

Readln(x);

Write('y: ');

Readln(y);

Write('x1: ');

Readln(x1);

Write('y1: ');

Readln(y1);

Write('x2: ');

Readln(x2);

Write('y2: ');

Readln(y2);

If (x>x1) and (x<x2) and

(y<y1) and (y>y2) then

Writeln('Верно') else

Writeln('Не верно');

End.

Блок-схема

3. Написать программу, вычисляющую произведение первых n нечетных натуральных чисел

Код:

var

k, i, s, n: integer;

begin

k:=3; s:=1; i:=1;

writeln('Введите n:');

readln(n);

repeat

s:=s*k; i:=i+1; k:=k+2;

until

i=n;

writeln('произведение первых n нечётных натуральных чисел: ', s);

end.

Блок-схема

4. С клавиатуры вводится последовательность чисел до тех пор, пока не задается ноль. Вывести на экран те из них, которые попадут в интервал [ a,b]

Код:

Var

a,b,c: char;

S: string;

Begin

repeat

c:=readkey;

if c in ['1'..'9'] then

Begin

S:=S+c;

Write(c);

End;

until c='0';

Writeln('0');

Write('a= ');

Repeat

a:=readkey;

Until (a in ['0'..'9']);

Writeln(a);

Write('b= ');

Repeat

b:=readkey;

Until (b in ['0'..'9']);

Writeln(b);

Write('Result: ');

While S<>'' do

Begin

If (S[1]>=a)and(S[1]<=b) then

Write(S[1]);

delete(S,1,1);

End;

Writeln;

End.

Блок-схема:

5. Дано натуральное число N. Получить число P, содержащее в своей записи цифры числа N, записанные в обратном порядке. 234->432

Код

Var

N, P: Longint;

Begin

Write('N= ');

Readln(N);

P:=0;

Repeat

P:=(P+(N mod 10))*10;

N:=N div 10;

Until N=0;

P:=P div 10;

Writeln('P= ',P);

End.

Блок-схема

6. Дано целое число N>1. Вывести наибольшее из целых чисел K, для которых сумма 1+2+3…+K меньше или равна N, и саму эту сумму

Код:

Var

N, K, Summ: integer;

Begin

Write('N= ');

Readln(N);

K:=0;

Summ:=0;

Repeat

Inc(K);

Inc(Summ,K);

Until Summ+K>N;

Writeln('K= ',K);

Writeln('Summ= ',Summ);

End.

Блок-схема

Самостоятельная работа 2. Массивы, строки, множества, подпрограммы, файлы

1. Дан массив вещественных чисел. Указать позицию последнего экстремального элемента (т.е. минимального или максимального)

Код:

var

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

max, min, n, i, maxInd, minInd:integer;

begin

write('n=');

readln (n);

for i:= 1 to n do begin

read(a[i]);

write(a[i],' ');

end;

maxInd:= 0;

minInd:= 0;

max:= a[1];

min:= a[1];

for i:=1 to n do begin

if a[i] > max then begin

max:= a[i];

maxInd:= I;

end;

if a[i] < min then begin

min:= a[i];

minInd:= I

end;

end;

writeln;

if maxInd > minInd then //индекс какого экстремального значения больше, тот и выводится на экран

writeln('index (max) = ', maxInd)

else

writeln('index (min) = ', minInd);

end.

Блок-схема

2. Дан массив из N целых чисел. Сформировать массив M, в который поместить сначала все нулевые элементы исходного массива, затем - отрицательные элементы, затем положительные элементы

Код:

uses crt;

const n=10;

var a,b:array[1..n]of integer;

i,k:integer;

begin

clrscr;

write('-> ');

for i:=1 to n do read(a[i]);

readln;

k:=0;

for i:=1 to n do if a[i]>0 then

begin

inc(k);

b[k]:=a[i];

end;

for i:=1 to n do if a[i]<0 then

begin

inc(k);

b[k]:=a[i];

end;

for i:=1 to n do if a[i]=0 then

begin

inc(k);

b[k]:=a[i];

end;

for i:=1 to n do write(b[i],' ');

readln;

end.

Блок-схема

3. Дан массив A из N целых чисел. Осуществить циклический сдвиг элементов массива вправо на одну позицию. При этом A1 перейдет в A2, A2 в A3 и т.д. An перейдет в A1

Код:

uses

crt;

var

a:array [1..100] of integer;

i,n,temp:integer;

begin

randomize;

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

readln(n);

writeln('Исходный массив: ');

for i:=1 to n do

begin

a[i]:=random(10)-5;

write(a[i],' ');

end;

writeln;

writeln('Массив после сдвига элементов на одну позицию: ');

temp:=a[n];

for i:=n downto 2 do

a[i]:=a[i-1];

a[1]:=temp;

for i:=1 to n do

write(a[i],' ');

readln;

end.

Блок-схема

алгоритм массив матрица

4. Дана целочисленная матрица A размерности 5x5. Вывести ее элементы из каждого столбца в обратном порядке

Код:

type

matrix = array[1..5,1..5] of integer;

var a:matrix;

k:integer;

begin

for var i:=1 to 5 do

for var j:=1 to 5 do

a[i,j]:=random(10);

writeln('Дана целочисленная матрица');

for var i:=1 to 5 do

begin

for var j:=1 to 5 do

write(a[i,j],' ');

writeln;

end;

writeln('Вывести элемент из каждого столбца в обратном порядке');

writeln;

for var j:=1 to 5 do

begin

k:=5;

write(j,' столбец ');

while not(k=0) do

begin

write(a[k,j],' ');

k:=k-1;

end;

writeln;

end;

end.

Блок-схема

5. Даны непустые строки S1 и S2. Определить количество вхождений строки S2 в строку S1

Код:

program instring;

var s1, s2: string;

i: integer;

begin

write('s1 = ');

readln(s1);

write('s2 = ');

readln(s2);

i:= 0;

while pos(s2, s1) > 0 do

begin

delete(s1, 1, pos(s2, s1) + length(s2));

i:= i + 1

end;

writeln('Count of join s2 in s1: ', i);

readln

end.

Блок-схема

6. Описать функцию SumRange(A,B) целого типа, находящую сумму всех целых чисел от А до В включительно (A и B - целые). Если А >В, то функция возвращает ноль. С помощью этой функции найти суммы чисел от А до В и от В до С, если даны числа А, В,С

Код

function SumRange(A, B: integer): integer;

var i, t: integer;

begin

t:= 0;

if A > B then SumRange:= 0 else

begin

for i:= A to B do t:= t + i;

SumRange:= t

end

end;

var a, b, c: integer;

begin

write('введите a, b, c: ');

readln(a, b, c);

writeln('сумма чисел от a до b: ', SumRange(a, b));

writeln('сумма чисел от b до c: ', SumRange(b, c))

end.

Блок-схема

7. Сформировать файл, содержащий сведения об n работниках предприятия. Должны учитываться следующие сведения: ФИО, стаж работы, профессия. Вывести фамилии людей определенной профессии с опытом работы не менее X лет (профессия и минимальный стаж вводятся с клавиатуры)

Код:

program p14_07;

type

tperson=record

name:string[50];

year:word;

speciality:string[50];

end;

var

person:tperson;

data: file of tperson;

speciality:string[50];

stage:word;

c,i:byte;

begin

writeln('Укажите режим работы:');

writeln(#9,'1-ввод данных в файл');

writeln(#9,'2-вывод данных из файла');

readln(c);

assign(data, 'p14_07.dat');

case c of

1:begin

writeln('Для прекращения ввода данных укажите пустую фамилию или специальность...');

rewrite(data);

repeat

person.name:=''; person.year:=0;person.speciality:='';

writeln('---------------------------------------');

write(' Укажите ФИО работника: '); readln(person.name);

if person.name='' then break;

write(' Укажите год приема на работу: ');readln(person.year);

write(' Укажите специальность: ');readln(person.speciality);

if (person.name<>'') and (person.speciality<>'') then

begin

write(data,person);

i:=i+1;

end;{/if}

until (person.name = '') or (person.speciality = '');

writeln('В файл сохранено ',i,' записей о сотрудниках.');

close(data);

end;{/case-1}

2:begin

reset(data);

write('Укажите специальность:');readln(speciality);

write('Укажите минимальный стаж работы:');readln(stage);

while not eof(data) do

begin

read(data, person);

if (person.speciality = speciality) and ((2015-person.year) > stage) then

begin

i:=i+1;

writeln(i,'. ', person.name);

end;

end;{while}

if (i = 0) then writeln('Данные, подходящие под указанные критерии, не найдены.');

close(data);

end;{/case-2}

end;{/case}

end.

8. Сформировать отдельный модуль, содержащий описание функции Quarter(x,y) целого типа, определяющей номер координатной четверти, в которой находится точка с ненулевыми координатами. Подключить данный модуль, с помощью его функции Quarter определить четверти для пяти точек

Код

program p14_08;

uses u14_08;

var

i:byte;

x,y:integer;

begin

for i:=1 to 5 do

begin

writeln('Укажите координаты ',i,'и точки (x,y): ');readln(x,y);

if quarter(x,y)>0 then writeln('Указанная точка расположена в ',quarter(x,y),'и координат четверти.')

else writeln('ТОчка расположена НА КООРДИНАТАХ ОСИ.');

end;

end.

Блок-схема

Код

unit u14_08;

interface

function quarter(x,y: integer):byte;

implementation

function quarter(x,y: integer):byte;

begin

if (x=0) or (y=0) then

begin

{частный случай точка на координатной оси}

quarter:=0;

exit;

end;

if x > 0 then

begin

if y > 0 then quarter:=1

else quarter:=4;

end

else

begin

if y > 0 then quarter:=2

else quarter:=3;

end;

end;{function}

end.

Блок-схема

Размещено на Allbest.ru


Подобные документы

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

    лабораторная работа [12,8 K], добавлен 09.01.2011

  • Расчет корня нелинейного уравнения методом касательных, методом простой итерации, с использованием циклических ссылок, с помощью средств подбора параметра. Формирование на экране произвольного массива (матрицы) чисел и вычисление его элементов по строкам.

    контрольная работа [329,3 K], добавлен 25.02.2011

  • Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.

    лабораторная работа [259,3 K], добавлен 14.05.2011

  • Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.

    практическая работа [146,3 K], добавлен 23.01.2015

  • Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.

    лабораторная работа [12,8 K], добавлен 02.12.2014

  • Суммирование элементов столбцов заданной матрицы и получение результатов в одномерных массивах с помощью задания формулы и создания макросов. Нормирование вектора и нахождение его длины, объявление массива, указание его размерности, вывод формы.

    контрольная работа [460,5 K], добавлен 18.01.2011

  • Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.

    лабораторная работа [946,5 K], добавлен 23.11.2014

  • Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.

    контрольная работа [1,3 M], добавлен 20.12.2012

  • Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.

    лабораторная работа [1,3 M], добавлен 23.11.2014

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.