Паскаль. Обработка таблицы
Помогите, пожалуйста, написать следующую программу..
Задание: Найти минимальный среди максимальных элементов столбцов таблицы. Требуется написать подпрограмму обработки прямоугольной таблицы вещественных чисел. Подпрограмма должна реализовывать вычислительный алгоритм, который получает саму таблицу и ее размеры (т.е. количество строк и столбцов) в качестве входных параметров, а в качестве выходного параметра – результат вычислений. Кроме того, должна быть написана программа, которая позволяет создать таблицу заказанных пользователем размеров, вызвать подпрограмму обработки и вывести на экран результат вычислений. Вот требования: 1. Таблица хранится в виде двумерного статического массива достаточно больших размеров. Определен тип «таблица» (это нужно для того, чтобы передать таблицу в подпрограмму). Максимальные индексы массива, используемые при описа-нии типа, хранятся в виде констант. 2. Основная подпрограмма не содержит операций ввода-вывода. Параметры подпрограммы: таблица (по ссылке), факти-ческие размеры таблицы (по значению), основной результат – по ссылке. Подпрограмма содержит описание спецификации (в виде комментария под заголовком). 3. Работа тестирующей программы организована в виде простейшего меню, позволяющего создавать таблицу, выпол-нять ее обработку, показывать результат и заканчивать работу. 4. Фактические размеры таблицы указываются пользователем. Заполнение таблицы осуществляется двумя способами (по выбору пользователя) с клавиатуры (простейший последовательный ввод элементов) и случайным образом. 5. Алгоритм реализован без создания вспомогательной таблицы (при необходимости можно пользоваться вспомогатель-ным одномерным массивом). Буду очень благодарна за помощь |
Цитата:
|
Самое главное забыла.. Паскаль.
Начало я написала. program tablica; uses crt; const max_s= 50; max_d= 50; k=100; var a:array[1..max_d,1..max_s] of integer; d, s, i, j, z: integer; begin d:=-1; s:=-1; repeat clrscr; writeln ('Введите длину таблицы. Максимальное значение ' ,max_d); read (d) until (d>=1) and (d<= max_d); {clrscr; } repeat clrscr; writeln ('Введите ширину таблицы. Максимальное значение ' ,max_s); read (s) until (s>=1) and (s<= max_s); repeat clrscr; writeln ('Выберете способ ввода значений таблицы'); writeln ('1- если хотите выполнить ввод с клавиатуры'); writeln ('2- для случайного вводa'); readln (z); until (z=1) or (z=2); if z=1 then begin for i:=1 to d do begin for j:=1 to s do begin writeln('Введите значение ячейки таблицы a[',i,',',j,']'); readln (a[i,j]); end; end; end; if z=2 then begin randomize; for i:=1 to d do for j:=1 to s do a[i,j]:=random (k); writeln (a[i,j]); end; clrscr; for i:=1 to d do begin for j:=1 to s do write(a[i,j],' '); writeln; end; readln; end.а дальше как? |
Цитата:
program tablica; uses crt; const max_s= 50; max_d= 50; k=99; TYPE AR=array[1..max_d,1..max_s] of integer; var a:AR; MVcol:ARRAY[1..max_s] of integer; d, s, i, j, Min_Max: integer; PROCEDURE Table_Inp(Dti,Sti:INTEGER; VAR Ati:AR); VAR i,j,z:INTEGER; BEGIN repeat clrscr; writeln ('Choose the method of table infilling'); writeln ('1- from keyboard'); writeln ('2- random values'); readln (z); until (z=1) or (z=2); if z=1 then begin for i:=1 to Dti do begin for j:=1 to Sti do begin write('Enter the value a[',i,',',j,'] '); readln (Ati[i,j]); end; end; end; if z=2 then begin randomize; for i:=1 to Dti do for j:=1 to Sti do Ati[i,j]:=random (k); end; clrscr; for i:=1 to Dti do begin for j:=1 to Sti do write(Ati[i,j]:3); writeln; end; readln; END; {Table_Inp} begin d:=-1; s:=-1; repeat clrscr; write('Enter the table length. Maximum value is ' ,max_d,' '); readln(d) until (d>=1) and (d<= max_d); {clrscr; } repeat clrscr; write('Enter the table width. Maximum value is ' ,max_s,' '); readln(s) until (s>=1) and (s<= max_s); Table_Inp(d,s,a); FOR j:=1 TO s DO begin MVcol[j]:=a[1,j]; FOR i:=2 TO d DO IF a[i,j]>MVcol[j] THEN MVcol[j]:=a[i,j]; end; Min_Max:=MVcol[1]; FOR i:=2 TO s DO IF Min_Max>MVcol[i] THEN Min_Max:=MVcol[i]; Writeln('Minimum value is ',Min_Max); ReadLn; end. Пояснение. Надписи заменены английскими, чтобы избежать проблем с кодировками кириллицы при переходе WINDOWS-DOS и обратно. Если надо, можете восстановить русские надписи. |
Vladimir_S, огромное Вам спасибо!
|
Vladimir_S,
Цитата:
Заранее спасибо! |
Цитата:
|
Разобралась, спасибо большое. Не могли бы вы помочь выполнить еще несколько требований к этой же программе?
1. В подпрограмме выполняется проверка входных параметров на допустимость. Подпрограмма возвращает код завер-шения по ссылке или в качестве значения функции, который показывает, правильно ли выполнилась подпрограмма. 2. Возможность заполнения таблицы из типизированного (или нетипизированного) файла с проверкой корректности имени файла и его содержимого. При этом размеры таблицы хранятся в начале того же файла. 3. Делается проверка корректности ввода чисел, т.е. защита от ввода вместо чисел посторонних символов. 4. Таблица реализована как двумерный динамический массив с использованием механизма указателей. |
Цитата:
|
Vladimir_S, нужно до воскресенья. Спасибо большое!
|
Часовой пояс GMT +4, время: 07:39. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.