IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> Матрицы
сообщение
Сообщение #1


Гость






Для матрицы А (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.



Помогите у меня тродность в написание функции если кто знает напишите алгоритм и желательно решение
и ещё буду очень признателен если дадите ссылку где можно почитать про функции а то на сайте я прочёл и не очень хорошо понял

Тегами пользуемся для исходников...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Алгоритм... Самое простое - пишем функцию, находящую минимум в заданной строке:
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;

и потом в цикле ее вызываем для каждой строки, и запоминаем промежуточный минимум и номер строки, в котором этот минимум встретился. Как только цикл закончится - по уже известному номеру строки находим сумму ее элементов.

А насчет процедур и функций можно прочитать здесь: Руководство по языку B.Pascal 7 & Objects/LR (процедуры и функции)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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.



у меня не получаеться где тут ошибка??
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Shaman, я же привел готовую функцию, зачем понадобилось ее исправлять? blink.gif
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.


Все-таки, прочтите теорию...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Как я понял это ответ на мою задачу??
что то он не пашет у меня не одномерный массив а двух мерный и он выдаёт ошибку 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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ещё вопрос что это за n?? номер строки??
Как я понимаю нам надо сначало найти минимальный элемент и запомнить его номер i и потом приравнять его к n а когда ищим сумму

sum:=0;
for j:=1 to 5 do sum:=sum+a[n,j];

 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(Shaman @ 5.05.05 12:34)
что то он не пашет у меня не одномерный массив а двух мерный и он выдаёт ошибку Type mismatch и указывает где это в функции и поэтому мне приходиться исправлять

angry.gif То, что Вам приходится исправлять - а написать самому не хочется? Так пишите...

Цитата(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. Программа не написана "под ключ" (кстати, и не БУДЕТ написана - учитесь шаманить самостоятельно) - поэтому для того, чтобы она заработала нужно еще и ввести данные.

Учите теорию.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость







for i:=1 to 4 do for j:=1 to 5 do begin
Write(i,j,': '); readln; end;


Матрицу я как заполнять буду??
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость







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.


Может я что то нетак спрашиваю я вот напсал программу без функции мне эту программу надо с функцией сделать а то что вы предлагаете я не очень хорошо понимаю и не надо писать иди учи теория я прочитал про функции наверно больше чем про остальные разделы
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Гм...
Цитата
... и не надо писать иди учи теория я прочитал про функции наверно больше чем про остальные разделы

Наверно тогда бы ваша программа была бы создана с использованием функций!

А матрицу можно заполнять случайными числами. Сгенерировать их позволит функция random


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






не народ вообще странный я где нибудь писал что матрицу мне надо заполнять случайными числами??? я вообще просил либо алгоритм либо решение(полное) но так как я понял решения мне не дадут то я прошу хотябы алгоритм или решение задачи любой на матрицы с функцией тока чтоб решение было полное и сама задача (и конечно лучше бы чтоб каждое действие описывалось) или может кто нить подскажет где её взять
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Цитата
for i:=1 to 4 do for j:=1 to 5 do begin
Write(i,j,': '); readln; end;

Матрицу я как заполнять буду??


Молча!! :D

Вообще-то для того, чтобы её заполнить, надо в неё хоть что-нибудь записать.
Например,
Код
readln(a[i,j])
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Там есть все! И ввод, и вывод матриц.
FAQ: Массивы. Матрицы. Типичные задачи.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
и не надо писать иди учи теория я прочитал про функции наверно больше чем про остальные разделы
Без теории здесь по-любому не обойтись, так что перечитать придется.

Цитата(shaman @ 5.05.05 21:56)
как я понял решения мне не дадут

Правильно понял...


Тема закрыта в связи с нежеланием автора думать самостоятельно
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 1:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name