01.11.2009, 14:36 | #1 (permalink) |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Паскаль. Обработка таблицы
Задание: Найти минимальный среди максимальных элементов столбцов таблицы. Требуется написать подпрограмму обработки прямоугольной таблицы вещественных чисел. Подпрограмма должна реализовывать вычислительный алгоритм, который получает саму таблицу и ее размеры (т.е. количество строк и столбцов) в качестве входных параметров, а в качестве выходного параметра – результат вычислений. Кроме того, должна быть написана программа, которая позволяет создать таблицу заказанных пользователем размеров, вызвать подпрограмму обработки и вывести на экран результат вычислений. Вот требования: 1. Таблица хранится в виде двумерного статического массива достаточно больших размеров. Определен тип «таблица» (это нужно для того, чтобы передать таблицу в подпрограмму). Максимальные индексы массива, используемые при описа-нии типа, хранятся в виде констант. 2. Основная подпрограмма не содержит операций ввода-вывода. Параметры подпрограммы: таблица (по ссылке), факти-ческие размеры таблицы (по значению), основной результат – по ссылке. Подпрограмма содержит описание спецификации (в виде комментария под заголовком). 3. Работа тестирующей программы организована в виде простейшего меню, позволяющего создавать таблицу, выпол-нять ее обработку, показывать результат и заканчивать работу. 4. Фактические размеры таблицы указываются пользователем. Заполнение таблицы осуществляется двумя способами (по выбору пользователя) с клавиатуры (простейший последовательный ввод элементов) и случайным образом. 5. Алгоритм реализован без создания вспомогательной таблицы (при необходимости можно пользоваться вспомогатель-ным одномерным массивом). Буду очень благодарна за помощь |
01.11.2009, 14:36 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Кто то уже создавал подобные темы на этом форуме Добавление таблицы на сайт с SMC Joomla Связать 2 Excel таблицы в Wordе Паскаль. Обработка натурального числа Обработка матриц. Паскаль |
01.11.2009, 15:53 | #3 (permalink) |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Самое главное забыла.. Паскаль.
Начало я написала. 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.а дальше как? Последний раз редактировалось Montespan; 01.11.2009 в 19:05 |
01.11.2009, 20:42 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
А дальше (и вообще всё вместе) например, так:
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 и обратно. Если надо, можете восстановить русские надписи. |
02.11.2009, 18:05 | #5 (permalink) |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S, огромное Вам спасибо!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
15.11.2009, 15:16 | #6 (permalink) | |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S,
Цитата:
Заранее спасибо! |
|
15.11.2009, 15:30 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Можно. Это, как бы сказать, чистой воды эстетство. Просто предпочитаю для параметров процедуры и глобальных переменных программы использовать разные идентификаторы. IMHO дисциплинирует и повышает читабельность. Потому и добавил "ti" - сокращение от имени процедуры "Table_Inp".
|
16.11.2009, 16:56 | #8 (permalink) |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Разобралась, спасибо большое. Не могли бы вы помочь выполнить еще несколько требований к этой же программе?
1. В подпрограмме выполняется проверка входных параметров на допустимость. Подпрограмма возвращает код завер-шения по ссылке или в качестве значения функции, который показывает, правильно ли выполнилась подпрограмма. 2. Возможность заполнения таблицы из типизированного (или нетипизированного) файла с проверкой корректности имени файла и его содержимого. При этом размеры таблицы хранятся в начале того же файла. 3. Делается проверка корректности ввода чисел, т.е. защита от ввода вместо чисел посторонних символов. 4. Таблица реализована как двумерный динамический массив с использованием механизма указателей. |
16.11.2009, 21:15 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
17.11.2009, 17:52 | #10 (permalink) |
Member
Регистрация: 01.11.2009
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S, нужно до воскресенья. Спасибо большое!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|