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

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

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

 
 Ответить  Открыть новую тему 
> нахождение минимального элемента матрицы в виде функции
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


9. Сформировать двумерный массив Z размером 3 x 11 с помощью генератора случайных чисел и вывести элементы массива на экран и в файл. Вычислить сумму положительных элементов строки, в которой находится минимальный элемент матрицы Z (оформить нахождение минимального элемента в виде функции). Вывести на экран и в файл полученную сумму и номер строки
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


матрицу сформировала, как минимум находить знаю, не могу вспомнить как функцию применять и оформлять
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


function get_min : integer;  
begin
//тут поиск мин числа
get_min := минимум ;
end;

begin
//...
min := get_min;
// и дальше что надо
end.

Если в функции искать само значение, то можно сразу вычислить сумму положительных элементов строки.
А можно вернуть номер строки мин элемента в матрцие, и по уже известному номеру, посчитать что надо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


вот так я вижу программу, только по-прежнему не могу понять как пользоваться функцией((
извините за неправильное оформление, прочитала правила, но не совсем получается строго им следовать)

Добавлено через 4 мин.
program kontrolnaya;
const N1=5;N2=11;
var i,j,c,sum:integer;
mas:array[1..N1,1..N2]of integer;
f:text;

function get_min:integer;
begin
min:=mas[1,1];
for i:=1 to N1 do
for j:=1 to N2 do
if mas[i,j]<min then
begin
get_min:=mas[i,j];
c:=i;
end;
end;

begin
randomize;
assign (f,'matrica.txt');
rewrite(f);
for i:=1 to N1 do
begin
for j:=1 to N2 do
begin
mas[i,j]:=random(201)-100;
write (mas[i,j]:5);
write(f,mas[i,j]:5);
end;
writeln;
writeln(f);
end;

// не знаю как вызвать номер строки где находится минимум, потом считаю сумму//

sum:=0;
i:=//номер строки//
for j:=1 to N2 do
sum:=sum+mas[i,j];
close(f);
read(mas[i,j],sum);
end.



Прикрепленные файлы
Прикрепленный файл  progr.txt ( 716 байт ) Кол-во скачиваний: 269
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


ulika, оформить функцию несложно, но с точки зрения ПРОГРАММИРОВАНИЯ не вполне ясно, какие параметры тебе нужно передать в эту функцию. По идее, нужно передавать матрицу, но тогда возникает вопрос о ее размерности и о том, знаешь ли ты об открытых массивах. Прояснишь?

Если не передавать массив, то все предельно просто. Примерно так:
function MinRow: integer;  // исправлено
var
i,j,x,y: integer;
begin
x:=1;
y:=1;
for i:=1 to N1 do for j:=1 to N2 do if mas[i,j]<mas[x,y] then begin
x:=i;
y:=j
end;
MinRow:=x
end;


Потом делаешь:
i:= MinRow; //номер строки//

И все )).

Цитата(ulika @ 19.04.2010 20:31) *
прочитала правила, но не совсем получается строго им следовать)
А с чем конкретно проблема? blink.gif

Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


массив закрытый, 3 строки и 11 столбцов. а можно из первого варианта функции выудить элемент и номер строки?
по оформлению - у меня таб вон как далеко переводит курсор к примеру.

Сообщение отредактировано: ulika -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ulika @ 19.04.2010 21:36) *
массив закрытый,
Массив - не дверь, закрытым не бывает )). Открытый масси - это способ передачи var-параметров, когда заранее не знаешь размера массива.

Цитата
а можно из первого варианта функции выудить элемент и номер строки?
Боючь, что нет. Там у тебя стоит присвоение минимума самой функции, что в корне неверно в данном случае (поскольку функция должна возвращать номер строки с минимумом). А если это исправлять - как раз и получится, что я написал (кстати, я там пропустил тип функции - исправлю).

Цитата
по оформлению - у меня таб вон как далеко переводит курсор к примеру.
А ты не пользуйся табами вообще. Это атавизм. Они тебе много крови попортят.. )) Когда-то они экономили место (на дискете 180КБ)), а сейчас что экономить? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


спасибо))
все понятно)
не буду передавать матрицу в массив. а про закрытый я на форуме прочитала просто что открытый - это с нуля нумерация, вот и решила что закрытый это с единицы. lol.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ulika @ 19.04.2010 22:11) *
прочитала просто что открытый - это с нуля нумерация, вот и решила что закрытый это с единицы. lol.gif
smile.gif ясно, я не врубился сразу )). Да, у открытых действительно нумерация с нуля, но это побочный эффект, а не признак )).

На всяк случай: вот так можно избежать привязки к только одному массиву (что делает использование функции бессмысленным):
var
mas: array[1..N1,1..N2]of integer; // два массива
mas2: array[1..M1,1..M2]of integer; // разных

...

function MinRow(a: array of integer; m,n: integer): integer; //размер массива не объявлен (открытый массив)
var
i,j,x,y: integer;
begin
x:=0;
y:=0;
for i:=0 to m-1 do for j:=0 to n-1 do begin if a[i*n+j]<a[x*n+y] then begin //пересчитываем индекс
x:=i;
y:=j
end;
MinRow:=x+1
end;

...

i:= MinRow(mas,N1,N2); //нажодим строку с минимумом в mas
j:= MinRow(mas2,M1,M2); //нажодим строку с минимумом в mas2
...


В таком виде функцию можно применять к разным массивам любой размерности.

P.S.
Исправил..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


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





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


 
program kontrolnaya;
uses crt;
const N1=3;N2=11;
var
i,j,sum:integer;
mas:array[1..N1,1..N2]of integer;
f:text;

function MinRow: integer; {функция нахождения номера строки с минимальным
var элементом матрицы}
i,j,x,y: integer;
begin
x:=1;
y:=1;
for i:=1 to N1 do
for j:=1 to N2 do
if mas[i,j]<mas[x,y] then
begin
x:=i;
y:=j
end;
MinRow:=x;
end;

begin
clrscr;
randomize;
assign (f,'matrica.txt');
rewrite(f);
writeln(‘isxodnaya matrica’);

for i:=1 to N1 do { формируем двумерный массив 3 x 11 с помощью генератора
begin случайных чисел }
for j:=1 to N2 do
begin
mas[i,j]:=random(201)-100;
write (mas[i,j]:5); { вывод элементов массива на экран и в файл}
write(f,mas[i,j]:5);
end;
writeln;
writeln(f);
end;

i:= MinRow; {вызов функции}
sum:=0;

for j:=1 to N2 do {нахождение суммы}
sum:=sum+mas[i,j];

writeln (‘summa=’,sum:5); { Вывод на экран и в файл полученную сумму и номер строки}
writeln(f,sum:5);
write (‘nomer stroki’,i:2);
write (f,i:2);

close(f);
readln;
end.

.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


ulika, ты через что копировала прогу? через Word? smile.gif Посмотри, что стало с кавычками. Исправь, пожалуйста..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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