Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Номер строки с минимальным числом элементов

Автор: REC0N 3.03.2010 22:31

Дана матрица 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


Прикрепленные файлы
Прикрепленный файл  obch_prak_24.rar ( 664 байт ) Кол-во скачиваний: 160

Автор: Client 3.03.2010 22:49

Цитата
как вывести лишь минимальную строку?
Во втором массиве найди индекс минимального значения. Этот индекс будет номером нужной строки в матрице

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

Автор: REC0N 3.03.2010 23:05

Цитата(Client @ 3.03.2010 17:49) *

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

Я думаю не имеет значения какого размера матрица ... а на счет goto, каким образом проверить матрица квадратная, мне преподаватель введет другую матрицу (не квадратную) а у меня не будет проверки на квадратную матрицу и преподаватель мою прогу не примет: (

Автор: Client 3.03.2010 23:14

wrilte('Введите размер матрицы');
readln(n);
N-размер, т.е. у тебя будет матрица N*N. Что тут проверять?

Автор: REC0N 3.03.2010 23:23

Цитата(Client @ 3.03.2010 18:14) *

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

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

Подскажи как найти индекс минимального элемента (выдели код где именно искать)

Автор: Client 3.03.2010 23:38

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

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

Автор: REC0N 3.03.2010 23:46

Цитата(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 3.03.2010 23:54

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

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

Автор: REC0N 4.03.2010 0:06

Цитата(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 4.03.2010 2:45

Можете объяснить почему ми начинаем цикл с i:=2?

Автор: Client 4.03.2010 3:10

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

Автор: REC0N 4.03.2010 15:49

Цитата(Client @ 3.03.2010 22:10) *

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

СПС good.gif