Результат работы программы




 

Решение задачи

 

Постановка задачи

Дан одномерный массив целых чисел произвольной длины. Заполните массив случайными числами до 100. Используя, оператор выбора, создайте меню, в котором при нажатии на клавишу производятся следующие действия:

1 - вычислить среднее геометрическое четных элементов массива;

2 - найти количество делителей максимального числа;

3 - вставить в массив два элемента с данными значениями: первый после минимального элемента, второй - перед минимальным элементом.


Таблица идентификаторов

 

Переменные Тип Значение
  a array Заполнение одномерного массива
  Max integer Максимальный элемент
  Min integer Минимальный элемент
  i integer Параметр цикла
  N integer Размерность массива
  k integer Количество делителей
  m integer Выбор действия
  s Real среднее геометрическое четных элементов массива
  v, c integer два элемента вставляемые в массив
  k1 integer Номер позиции перед (после) которой вставляем элемент
  f integer Количество элементов, которые делятся на 2 без остатка
  d integer Произведение всех элементов, которые делятся на 2 без остатка

 
 

3.7.3 Блок-схема

 
 

3.7.4 Программа

uses crt;

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

n, i,m,min,max,k,f,d,k1,c,v: integer;

S: real;

begin

clrscr;

randomize;

writeln ('введите разм. массива');

readln (n);

for i: =1 to n do

begin

a [i]: =random (101);

write (a [i]: 3);

end;

writeln;

writeln ('введите номер операции программы');

writeln ('1-вычислить среднее гео-ое четных эл. мас');

writeln ('2-найти ко-во делителей max числа');

writeln ('3-вставить в массив: 1-ый после min эл,2-ой перед min эл');

readln (m);

case m of

1: begin f: =0;

for i: =1 to n do

begin

if a [i] mod 2=0 then f: =f+1

end; writeln (f);

d: =1; s: =0;

for i: =1 to n do

begin

if a [i] mod 2=0 then d: =d*a [i];

end;

writeln (d);

if d=0 then s: =0 else s: =exp (1/f * ln (d));

writeln ('ср. геом=',S: 3: 3);

readln;

end;

2: begin

max: =a [1];

for i: =1 to n do

if a [i] >max then begin max: =a [i];

end;

for i: =1 to max do

if max mod i=0 then k: =k+1;

writeln ('ко-во делителей max числа',k);

readln;

end;

3: begin

writeln ('введите 2 числа');

readln (v,c);

min: =a [1];

k1: =1;

for i: =1 to n do

if a [i] <min then begin min: =a [i]; k1: =i; end;

writeln;

for i: =n downto k1 do

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

a [k1]: =v;

for i: =n+1 downto k1+1 do

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

a [k1+2]: =c;

for i: =1 to n+2 do

write (a [i]: 3);

readln;

end;

end;

end.

Результат работы программы

 


Решение задачи

 

Постановка задачи

Дан массив записей, содержащий сведения о расписании поездов: направление; фамилия, имя, отчество машиниста; время отправления поезда. Необходимо осуществить:

1. заполнение массива данными;

2. поиск поездов по фамилии, имени, отчеству машиниста;

3. редактирование времени отправления поезда;

4. удаление поездов по полю "Направление";

5. сортировку по полю "Направление".

Таблица идентификаторов

 

Переменные Тип Значение
  A array Заполнение массива
  N integer Количество поездов
  Nap string Поле направления
  fio String Поле фамилии имя отчества
  vy String Поле время отправления
  i, j integer Параметры цикла
  q integer Выбор действия
  s1 string Новое время
  x Rs Дополнительная переменная для сортировки
  s String Время
  w String Фамилия, Имя, Отчество машиниста
  r String Направление поезда, которое удаляем
  k Integer Номер удаляемой записи
  f integer флажок

Блок-схема

 
 


Программа

type RS=Record

Nap: string [40];

fio: string [40];

vy: string [10];

end;

var a: array [1..50] of RS;

n, i,j,q,k,f: integer; s,s1,w,r: string; x: RS;

begin

Writeln ('введите kol poezdov');

readln (n);

for i: =1 to n do

begin

writeln ('введите Направление',' ', i,' ','поезда');

readln (a [i]. Nap);

writeln ('введите Ф. И.О. ',' ', i,' ','машиниста');

readln (a [i]. fio);

writeln ('введите время',' ', i,' ','отправления');

readln (a [i]. vy);

end;

writeln ('введите номер операции программы');

writeln ('1-поиск поездов по фамилии, имени, отчеству машиниста');

writeln ('2-редактирование времени отправления поезда');

writeln ('3-удаление поездов по полю <Направление>');

writeln ('4-сортировку по полю <Направление>');

readln (q);

case q of

1: begin

writeln ('ведите Ф. И.О. машиниста ');

readln (w);

f: =0;

for i: =1 to n do

begin

if a [i]. fio=w then begin

writeln ('Направление ',a [i]. Nap,' ','время ',a [i]. vy);

f: =1; end;

if f=0 then writeln ('таких нет');

end; end;

2: begin

writeln ('введите время которое вы хотите поменять');

readln (s);

writeln ('введите время на которое вы хотите поменять');

readln (s1);

for i: =1 to n do begin

if a [i]. vy=s then a [i]. vy: =s1;

end;

for i: =1 to n do

begin

writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);

writeln ('время ',a [i]. vy);

writeln;

end; end;

3: begin

writeln ('введите Направление поезда, которое вы хотите удалить');

readln (r);

for i: =1 to n do begin

if a [i]. Nap=r then

k: =i;

for i: =1 to n do

if i<>k then

writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);

writeln ('время ',a [i]. vy);

end;

end;

4: begin

for i: =1 to n-1 do

for j: =1 to n do

if a [i]. Nap>a [j]. Nap then

begin

x: =a [i];

a [i]: =a [j];

a [j]: =x;

end;

for i: =1 to n do

begin

writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);

writeln ('время ',a [i]. vy);

end;

end;

end;

readln;

end.




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-01-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: