Составить вектор из номеров строк матрицы, где содержатся только числа с одинаковой разрядностью — Pascal(Паскаль)

program k4;
uses
  crt;
var
  i,j,k,n,c,m,p,max:integer;
  a:array [1..100, 1..100] of integer;
  b: array[1..100] of integer;
  f:boolean;
{функция определения разряда}
function Raz(c:integer):integer;
var
  temp,k:integer;{тут лучше объявлять для процедуры\функции свои переменные, так будет правильнее}
begin
  temp:=c;{<<во первых надо заносить во временную переменную так как числа могут еще пригодиться нужно запомнить это как привило, либо если они нигде больше не используются указывать как выходной параметр функции}
  k:=0;
  while temp<>0 do{заменил цикл, потому как тот был неверно построе, а здесь больше подойдет while со своим "пока"}
  begin
    temp:=temp div 10;
    inc(k);{тут заменил k:=k+1 так более правильно}
  end;
  Raz:=k{тут еше я убрал с цикла присвоение функции, потому как функции должно что то присваиваться только один раз}
end;
{основная программа}
begin
  writeln('Задайте количество строк...');
  readln(n);
  writeln('Задайте количество столбцов...');
  readln(m);{не хватает ввода размера матрицы, нельзя читать её не указывая размер}
  writeln('Задайте матрицу размером ',n,'x',m,'...');{и больше пишите строк оформления, не стисняйтесь, зато не запутаетесь в своём коде, а то без них каша получается}
  for i:=1 to n do
    for j:=1 to m do
    begin
      write('Элемент a[',i,',',j,']:');
      readln(a[i,j])
    end;
  p:=0;{это будет счетчик количества строк в которых все эл-ты одного разряда}
  for i:=1 to n do{будем "бежать" по матрице вдоль строк}
  begin
    k:=Raz(a[i,1]);{запоминаем размерность первого элементы каждой строки}
    f:=true;{предположим что строка у вся из элементов одного разряда}
    for j:=2 to m do{начинаем со второго так как первый мы уже запомнили}
      if Raz(a[i,j])<>k then{если разряды разные}
        f:=false;{тогда наше предположение оказалось неверным и мы меняем флажок}
    if f then{если все осталось так как мы и предполагали}
    begin
      inc(p);{тогда заносим данную строку в массив}
      b[p]:=i
    end;
  end;
  if p=0 then{ну а дальше я думаю комментить уже нечего, просто выводим массив}
    write('Таких строк нет!')
  else
  begin
    writeln('Массив:');
    write('[ ');
    for i:=1 to p do
      write(b[i],' ');
    writeln(']')
  end;
readln;
end.

Leave a Comment

67 − 65 =