1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Добрый вечер, у меня возник вот какой вопрос. Нужно написать процедуру, которая среди чисел заданной строки таблицы находит такое, которое принадлежит наибольшему количеству столбцов таблицы. Все это делается с помощью двухмерного массива. Так как я в программировании полный профан, удалось мне написать только чтобы одно число из заданой строки принадлежало наибольшему кол-ву столбцов но и там у меня есть какая то ошибка, либо там написан бред. Другая половина процедуры, где из заданной строки будет более одного числа встречаться одинаковое кол-во раз у меня не выполнена. Рассчитываю на чью-нибудь помощь.
procedure processing(var p,v,t: single; q:PMatr); var n,m,k,i,j,x,y: single; begin for k:=1 to y do begin p:q^[t]^[1]; for j:=1 to y do while i<=x do begin if p=q^[i]^[j] then begin v:=v+1; i:=x; i:=i+1; end; for j:=1 to y do while i<=x do begin if n:=q^[i]^[j] then begin n:=q^[i]^[j]; m:=m+1; i:=x i:=i+1; end; end; end;
Для обычной статической матрицы решение может быть таким:
type tmatrix = array[1 .. 4, 1 .. 5] of real;
procedure processing(numrow: integer; q:tmatrix; rows, cols: integer; var number: real);
function Exists(row: integer; value: real): Boolean; const Eps = 0.0001; // Чтобы правильно сравнивать вещественные числа var i: Integer; begin Exists := True; for i := 1 to rows do if Abs(value - q[i, row]) < Eps then exit; Exists := False; end;
var i, j, Cnt, maxCnt: integer; maxVal: Real; begin maxCnt := 0; for i := 1 to cols do begin Cnt := 0; for j := 1 to cols do if Exists(j, q[1, i]) then Inc(Cnt);
if Cnt > maxCnt then begin number := q[1, i]; maxCnt := Cnt; end; end; end;
var value: real; begin processing(1, a, 4, 5, value); writeln(value:0 :0); end.
, для динамической - попробуй реализовать самостоятельно (только разберись в коде, а не просто копируй его). Что не получится - пиши, подскажем...
P.S. Всем супероптимизаторам: не надо супероптимизировать. Оптимизировать будете СВОЙ код у себя на машине для своих личных нужд. Чужой оставьте в покое. Это понятно? Ибо все ваши супероптимизации - пшик, в лучшем случае не вредящий, в худшем - замедляющий программу. Компилятор без вас разберется, что и как делать для конкретного процессора, указанного в настройках.