1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Для матрицы А (4 строки , 5 столбцов) определить сумму элементов строки, содержащей минимальный элемент матрицы. Для определения номера строки, содержащей минимальный элемент, использовать функцию
program matrisa; var a:array[1..4,1..5] of Integer; i,j:Byte; sum,min,Nstr:integer; begin for i:=1 to 4 do for j:=1 to 5 do begin Write(i,j,': '); readln(a[i,j]); min:=a[1,1]; if min>a[i,j] then min:=a[i,j]; end; Write(min); readln; end; end.
Помогите у меня тродность в написание функции если кто знает напишите алгоритм и желательно решение и ещё буду очень признателен если дадите ссылку где можно почитать про функции а то на сайте я прочёл и не очень хорошо понял
Алгоритм... Самое простое - пишем функцию, находящую минимум в заданной строке:
Function min_row(n: integer): integer; var i, min: integer; begin min := a[1]; for i := 2 to 5 do if min > a[i] then min := a[i]; min_row := min end;
и потом в цикле ее вызываем для каждой строки, и запоминаем промежуточный минимум и номер строки, в котором этот минимум встретился. Как только цикл закончится - по уже известному номеру строки находим сумму ее элементов.
program matrisa; var a:array[1..4,1..5] of Integer; i,j:Byte; sum,min:integer; function min_row: integer; var n:byte; begin min := a[1,1]; for i:= 1 to 4 do for j:= 1 to 5 do if min > a[i,j] then begin min := a[i,j]; n:=i; for j:=1 to 5 do min_row:=min_row+a[n,j] ; end; end; begin for i:=1 to 4 do for j:=1 to 5 do begin Write(i,j,': '); readln(a[i,j]); end; sum := min_row; WriteLn(sum); readln; end.
Shaman, я же привел готовую функцию, зачем понадобилось ее исправлять?
var a:array[1..4,1..5] of Integer;
Function min_row(n: integer): integer; var i, min: integer; begin min := a[1]; for i := 2 to 5 do if min > a[i] then min := a[i]; min_row := min end;
var i, min, min_row, curr_min: integer; begin min := maxint; { значение, заведомо большее любого другого } for i := 1 to 4 do begin curr_min := min_row(i); if min > curr_min then begin { запоминаем минимум и строку, в которой его нашли } min := curr_min; min_row := i; end; end;
sum := 0; { суммируем значения только из одной строки... Из той, где найден минимум } for i := 1 to 5 do s := s + a[min_row, i]; writeln('sum = ', sum) end.
Как я понял это ответ на мою задачу?? что то он не пашет у меня не одномерный массив а двух мерный и он выдаёт ошибку Type mismatch и указывает где это в функции и поэтому мне приходиться исправлять
var a:array[1..4,1..5] of Integer;
Function min_row(n: integer): integer; var i, min,j: integer; begin min := a[1,1]; for i := 1 to 4 do for j:=1 to 5 do if min > a[i,j] then min := a[i,j]; min_row := min end;
Дальше ошибка в разделе переменных над переменной min_row Duplicate indentifier(min_row) приходиться её убирать или менять название вообщем вот что у меня получилось но опять он не хочет сумму считать
program primer; var a: array[1..4,1..5] of Integer; i,min,j,sum,minrow,curr_min: integer; Function min_row(n:integer): integer; var i,j,min: integer; begin min:=a[1,1]; for i:=1 to 4 do for j:=1 to 5 do if min>a[i,j] then min:=a[i,j]; min_row:=min end; begin for i:=1 to 4 do for j:=1 to 5 do begin Write(i,j,': '); readln; end; min:=maxint; for i:=1 to 4 do begin curr_min:= min_row(i); if min>curr_min then begin min:=curr_min; minrow:=i; end; end; sum:=0; for i:=1 to 5 do sum:=sum+a[minrow,i]; writeln('sum= ',sum); readln end.
Ещё вопрос что это за n?? номер строки?? Как я понимаю нам надо сначало найти минимальный элемент и запомнить его номер i и потом приравнять его к n а когда ищим сумму
что то он не пашет у меня не одномерный массив а двух мерный и он выдаёт ошибку Type mismatch и указывает где это в функции и поэтому мне приходиться исправлять
То, что Вам приходится исправлять - а написать самому не хочется? Так пишите...
Цитата(Shaman @ 5.05.05 12:34)
Дальше ошибка в разделе переменных над переменной min_row Duplicate indentifier(min_row) приходиться её убирать или менять название
Всё !! Теперь мы меняемся ролями. Теперь Вы будете писАть программы, а я - искать в них ошибки.
1. Функция min_row в Вашем исполнении потеряла смысл. Ей все равно, передам я 1 или 2 или 3 - она ВСЕГДА будет делать одно и то же. Исправляйте.
2. Объясните смысл этой конструкции:
for i:=1 to 4 do for j:=1 to 5 do begin Write(i,j,': '); readln; end;
Я смысла в ней не вижу.
3. Программа не написана "под ключ" (кстати, и не БУДЕТ написана - учитесь шаманить самостоятельно) - поэтому для того, чтобы она заработала нужно еще и ввести данные.
program matrisa; var a:array[1..4,1..5] of Integer; i,j,n:Byte; sum,min:integer; begin for i:=1 to 4 do for j:=1 to 5 do begin Write(i,j,': '); readln(a[i,j]); end; min := a[1,1]; for i:= 1 to 4 do for j:= 1 to 5 do if min > a[i,j] then begin min := a[i,j]; n:=i; end; for j:=1 to 5 do sum:=sum+a[n,j]; Write('Min element:',min); writeln('Summa:',sum); readln end.
Может я что то нетак спрашиваю я вот напсал программу без функции мне эту программу надо с функцией сделать а то что вы предлагаете я не очень хорошо понимаю и не надо писать иди учи теория я прочитал про функции наверно больше чем про остальные разделы
не народ вообще странный я где нибудь писал что матрицу мне надо заполнять случайными числами??? я вообще просил либо алгоритм либо решение(полное) но так как я понял решения мне не дадут то я прошу хотябы алгоритм или решение задачи любой на матрицы с функцией тока чтоб решение было полное и сама задача (и конечно лучше бы чтоб каждое действие описывалось) или может кто нить подскажет где её взять