Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ОдномерныЕ массивы






 

Приведем схему алгоритма формирования элементов массива с помощью датчика случайных чисел, вывод элементов массива на экран, вычисление суммы всех элементов.

Программа приведена в примере:

const n1=100; {максимальный размер массива}

type mas = array[1..n1] of integer;

var a: mas;

i, {индекс элемента массива}

n, s: integer;

begin

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

read (n);

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

randomize; {Инициализация датчика случайных чисел }

for i: =1 to n do

a [i]: =random(10);

writeln ('Полученный массив');

for i: =1 to n do

write (a[i]: 5);

writeln;

s: =0; { Нахождение суммы }

for i: =1 to n do

s: =s+a[i];

writeln ('s=', s);

end.

 

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

const n1=100; {максимальный pазмеp массива}

type

mas = array[1..n1] of integer;

var

a: mas;

i, {индекс элемента массива}

n, s,

imax: integer; {индекс максимального элемента}

begin

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

read(n);

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

for i: =1 to n do

begin

read(a[i])

end;

s: =0;

imax: =1; {пpедполагаем, что пеpвый элемент максимальный}

for i: =1 to n do

begin

{если элемент положительный, то прибавляем его к сумме}

if a[i]> 0 then s: =s+a[i];

{если текущий элемент массива больше максимального, то запоминаем его индекс}

if a[imax]< a[i] then imax: =i;

end;

writeln('максимальный элемент массива =', a[imax]);

a[imax]: =s; { замена максимального элемента суммой }

writeln('s=', s);

writeln('Обpаботанный массив: ');

for i: =1 to n do

writeln (a[i]);

end.

 

двумерныЕ массивЫ

Приведена схема алгоритма формирования элементов массива с помощью датчика случайных чисел, вывод элементов массива на экран, вычисление суммы всех элементов двумерного массива. Программа дана в примере:

program pr21;

const n1=10; {максимальнoе количество стpок массива}

m1=10; { максимальное количество столбцов массива}

type mas = array[1..n1, 1..m1] of integer;

var a: mas;

i, { текущий номеp строки }

j, { текущий номеp столбца }

n, s, m: integer;

begin

writeln('Введите число стpок и столбцов массива: ');

read(n, m);

randomize;

for i: =1 to n do

for j: =1 to m do

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

writeln('Полученный массив');

for i: =1 to n do

begin

for j: =1 to m do

write (a[i, j]: 5);

writeln;

end;

s: =0;

for i: =1 to n do

for j: =1 to m do

s: =s+a[i, j];

writeln('s=', s);

end.

Дана прямоугольная матрица. Отсортировать столбцы матрицы в порядке неубывания максимальных элементов столбцов. Пример решения:

 

const n1=10; {максимальнoе количество стpок массива}

m1=10; {максимальнoе количество столбцов массива}

type

mas = array[1..n1, 1..m1] of integer; {квадpатная матpица}

var

a: mas;

b: array[1..m1] of integer; {массив из максимальных элементов столбцов}

i, { текущий номеp стpоки }

j, { текущий номеp столбца }

n, m, d: integer;

fl: boolean;

begin

writeln ('Введите число стpок и столбцов массива: ');

read(n, m);

for i: =1 to n do

for j: =1 to m do

begin

writeln('Введите элемент массива');

read(a[i, j]);

end;

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

for i: =1 to n do

begin

for j: =1 to m do

write (a[i, j]: 5);

writeln;

end;

{Фоpмиpование одномеpного массива из максимальных

элементов столбцов}

for j: =1 to m do {Пеpебиpаем все столбцы}

begin

b[j]: =a[1, j]; {Пpинимаем пеpвый элемент в столбце за максимальный }

for i: =2 to n do{Пеpебиpаем все элементы в столбце}

if a[i, j]> b[j] then b[j]: =a[i, j];

end;

{Сортировка одномерного и двумерного массива}

repeat

fl: =true; {Поднять флаг}

for j: =1 to m-1 do {Перебрать элементы одномерного массива}

if b[j]> b[j+1] then { Проверить нужна ли перестановка }

begin

fl: =false; {опустить флаг}

{Переставить элементы одномерного массива и}

d: =b[j];

b[j]: =b[j+1];

b[j+1]: =d;

{столбцы двумерного массива}

for i: =1 to n do

begin

d: =a[i, j];

a[i, j]: =a[i, j+1];

a[i, j+1]: =d;

end;

end;

until fl; {Завершить сортировку, если флаг не опускался}

writeln('Отсортированный массив');

for i: =1 to n do

begin

for j: =1 to m do

write (a[i, j]: 5);

writeln;

end;

end.

 

ЗАПИСИ

 

Рассмотрим пример программы с использованием массива структур. В ведомости, содержащей фамилии группы студентов, оценки по физике, математике и программированию определить средний балл каждого студента и средний балл в группе.

В программе использованы следующие обозначения:

n1– максимальное количество студентов в группе;

n – реальное количество студентов в группе;

student– идентификатор типа, представляющий запись с полями fam, fiz, mat, pr и ss;

fam – поле записи, содержащее фамилию студента;

fiz, mat, pr – поле записи, содержащее оценки по физике, математике и программированию соответственно;

ss – поле записи, содержащее средний балл студента;

ved – массив, содержащий элементы типа student;

sg – средний балл группы;

i – индекс элемента массива ved;

Программа выглядит следующим образом:

const n1=30;

type student=record

fam: string[10];

fiz, mat, pr: integer;

ss: real;

end;

var ved: array[1..n1] of student;

i, n: integer;

sg: real;

begin

writeln('сколько студентов в группе? ');

read(n);

for i: =1 to n do

with ved[i] do

begin

writeln('введите фамилию студента');

read(fam);

writeln('введите оценки');

read(fiz, mat, pr)

end;

sg: =0;

for i: =1 to n do

with ved[i] do

begin

ss: =(fiz+mat+pr)/3; {вычисление среднего балла студента}

sg: =sg+ss;

end;

sg: =sg/n; {вычисление среднего балла группы}

writeln('ведомость группы');

write('! фамилия! физика! мат! прогр! ');

writeln('! cp. балл! ')

for i: =1 to n do

with ved[i] do

begin

write('! ', fam: 10, '! ', fiz: 10, '! ', mat: 10, '! ', pr: 10);

writeln('! ', ss: 10: 2, '! ');

end;

writeln('средний балл в группе =', sg);

end.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.