Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2015, 23:47   #1
DoktorXX
Новичок
Джуниор
 
Регистрация: 28.12.2015
Сообщений: 2
По умолчанию Переписать подпрограмму (Free PAscal)

подпрограмма в данный момент написанна как процедура, ее над изменить что бы она выполняла следующее-->Среди чисел заданной строки таблицы найти такое, которое принадлежит наибольшему количеству столбцов таблицы
Код:
uses crt;
{$R-}
type
TElem=single;
TArr=array[1..1] of TElem;
PArr=^TArr;
TMas=array[1..1] of PArr;
PMas=^TMas;
FSingle=file of single;
TTen=1..10;
var
a: PMas; //a-динамический массив
width, height, res, i, j,flag: integer;//width-колличество строчек, height-колличество столбцов
p1,p2: TTen;
inp, oup: FSingle;
err: boolean;
need1, need2: longint;
filename: string;
asd:telem;
function BoolTest(const value: boolean): string;
const Values: array[boolean] of string = ('Нет', 'Да');
begin
BoolTest := Values[value];
end;
procedure Proced(var a:PMas;width,height:integer;var res:integer;var ce:boolean);
{процедура определяет значение и положение в таблице элемента, для которого сумма элементов,
лежащих не выше и не левее его, максимальна. 
входные параметры: а-указатель на таблицу (по ссылке), width,heidht-фактические размеры таблицы (по значению), 
выходные параметры: res-элемент, для которого сумма эллементов, лежащих не выше и не левее его, максимальна. 
  ce-false,если ошибка, true,если всё правильно}
var i,j,k:integer;bool:boolean;
begin
if (width<0) or (height<0) or (a=nil) then ce:=false
else begin
res:=0;
for j:=1 to height do begin
bool:=true;
for i:=1 to width-1 do begin
for k:=i+1 to width do begin
if a^[i]^[j]=a^[k]^[j] then bool:=false
end ;
end;
if bool then inc(res);
end;
ce:=true;
end;
end;
...Остальной код программы....
и вызов процедуры 

7:begin
clrscr;
writeln('7.Выполнение подпрограммы');
if flag<>2 then writeln('Таблица не создана. Невозможно выполнить подпрограмму')
else begin
Proced(a, width, height,res,err);
writeln('Правильно ли выполнилась программа? ',BoolTest(err));
writeln('Ответ: ', res);
end;
writeln;
writeln('Для возврата в главное меню нажмите ENTER');
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.12.2015 в 01:09.
DoktorXX вне форума Ответить с цитированием
Старый 30.12.2015, 10:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
наибольшему количеству столбцов таблицы
В рамках конкретной строки или всей матрицы?
И что делать, если таких чисел несколько?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив из N целых положительных чисел. Определить наименьшую цифру у каждого числа. через подпрограмму ( Free Pascal ) Алексей НТ Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2012 19:19
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Pascal, задача на подпрограмму. Elusive Devil Помощь студентам 2 03.05.2009 21:15