Помощь - Поиск - Пользователи - Календарь
Полная версия: Номер строки с минимальным числом элементов
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.