Помощь - Поиск - Пользователи - Календарь
Полная версия: Номер строки с минимальным числом элементов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
REC0N
Дана матрица NxN.
Помогите вывести номер строки с минимальным число элементов что равны заданному (заданое число вводит пользователь)
Итак, у меня выводит n строк и количество элементов и напротив каждой строки, как вывести лишь минимальную строку?
Вот что наработал:

program matryca;
uses crt;
const nmax=1000;
label 25;

var Matr:array[1..nmax,1..nmax] of integer;
Vec:array[1..nmax] of integer;
n,m,i,j,k,l,min : integer;

begin
25:
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then begin writeln('Матрица должна быть квадратная! ! !');goto 25; end;


// Ввод матрицы

writeln(' ');
writeln(' -------------------- ');
writeln(' Ввод матрицы ');
writeln(' -------------------- ');
writeln(' ');

for i:=1 to n do
for j:=1 to m do begin

write ('Введите элемент матрицы A(',i,';',j,'):');
readln (Matr[i,j]);
end;

// Вывод матрицы

for i:=1 to n do begin
write('(',i,'-я строка) ');
for j:=1 to m do
write(Matr[i,j],' ');
writeln;
end;

// Введення числа


write('Введите число: ');
read(k);

for i:=1 to n do begin vec[i]:=0;
for j:=1 to m do begin

if k=matr[i,j] then vec[i]:=vec[i]+1
end;


end;

for i:=1 to n do begin
write('Количество введенных пользователем символов в ', i,'-й строчке: ', vec [i]);
writeln;
end;

end.

P.S:Делал на PascalABC
dry.gif dry.gif dry.gif
Client
Цитата
как вывести лишь минимальную строку?
Во втором массиве найди индекс минимального значения. Этот индекс будет номером нужной строки в матрице

Добавлено через 4 мин.
а зачем тебе матрица 1000*1000 элементов? Если матрица квадратная, зачем вводить кол-во строк и столбцов? И лучше убрать goto...
REC0N
Цитата(Client @ 3.03.2010 17:49) *

а зачем тебе матрица 1000*1000 элементов? Если матрица квадратная, зачем вводить кол-во строк и столбцов? И лучше убрать goto...

Я думаю не имеет значения какого размера матрица ... а на счет goto, каким образом проверить матрица квадратная, мне преподаватель введет другую матрицу (не квадратную) а у меня не будет проверки на квадратную матрицу и преподаватель мою прогу не примет: (
Client
wrilte('Введите размер матрицы');
readln(n);
N-размер, т.е. у тебя будет матрица N*N. Что тут проверять?
REC0N
Цитата(Client @ 3.03.2010 18:14) *

N-размер, т.е. у тебя будет матрица N*N. Что тут проверять?

Немогу с тобой несогласитса, но у меня такой преподаватель что он скажет что за хрень и т.д. ,сделай проверку на то что матрица действительно квадратная
Так било в 1-м семестре mega_chok.gif mega_chok.gif

Подскажи как найти индекс минимального элемента (выдели код где именно искать)
Client
min:=1;
for i:=2 to n do if vec[i]<vec[min] then min:=i;

В min будет нужный индекс
REC0N
Цитата(Client @ 3.03.2010 18:38) *

min:=1;
for i:=2 to n do if vec[i]<vec[min] then min:=i;

В min будет нужный индекс

Спасибо помог smile.gif smile.gif smile.gif good.gif good.gif good.gif
volvo
Цитата
а на счет goto, каким образом проверить матрица квадратная
Легко:

repeat
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then writeln('Матрица должна быть квадратная! ! !');
until m = n;
GoTo выбросилось.
REC0N
Цитата(volvo @ 3.03.2010 18:54) *

Легко:

repeat
write ('Введите количество строк в матрице:');
readln (m);
write ('Введите количество столбцов в матрице:');
readln (n);
if m<>n then writeln('Матрица должна быть квадратная! ! !');
until m = n;
GoTo выбросилось.

Спасибо good.gif good.gif good.gif
REC0N
Можете объяснить почему ми начинаем цикл с i:=2?
Client
экономим 1 итерацию - зачем сравнивать первый элемент с самим собой smile.gif
REC0N
Цитата(Client @ 3.03.2010 22:10) *

экономим 1 итерацию - зачем сравнивать первый элемент с самим собой smile.gif

СПС good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.