Пожалуйста помогите

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Melanoma
Сообщения: 1
Зарегистрирован: 23 дек 2007, 13:49

Очень нужно решить 2 задачи в Delphi

1. В заданном массиве A1, A2, A3, ... , An произвести циклический сдвиг элементов на одну позицию вправо, т.е. преобразовать к виду А2, А3, ... , An, A1.

2. Задана матрица Am*n. Определить, есть ли в ней строки, все элементы которых равны нулю, за исключением последнего. Вывести на печать номера таких строк или информацию об отсутствии подобной строки.

Очень, ну просто очень надо, судьба зависит от этого!
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

ну, если судьба...
1. насколько я вижу, сдвиг производится ВЛЕВО (раз A2 становится на место A1)

Код: Выделить всё

 
Tmp := A[1]; {запомнили первый элемент}
for i:= 1 to N-1 do
  A[i]:=A[i+1];
A[N] := Tmp;
2)

Код: Выделить всё

const
  M = 10;
  n = 4;
var
  A : array[1..M,1..N] of integer;
  FlagIsEmpty : boolean;
  i,j : integer;
begin
  {<заполнение матрицы A данными>}
  Randomize;
  for i:=1 to M do
    for j:=1 to N do
      A[i,j] := Random(2);

  {вывести матрицу на экран}
  for i:=1 to M do 
  begin
    for j:=1 to N do 
      Write(A[i,j]:1,' ');
    WriteLn;
  end;
  WriteLn('----------------------');

  {собственно цикл проверки}
  FlagIsEmpty := false;
  for i:=1 to M do
  begin
    j:=1;
    while (A[i,j]=0) and (j<N) do inc(j); {цикл пока все нулевые}
    if (j=N) and (A[i,N]<>0) then begin
      {нашли такую строчку - все нулевые, а последний в строке - НЕ НУЛЕВОЙ}
      FlagIsEmpty := true;
      WriteLn('Искомая строка: ',i:1)
    end;
  end;
  if Not FlagIsEmpty then
    Writeln('к сожалению, в матрице нет таких строк.');
end.
только учтите, что вероятность такого совпадения небольшая
поэтому я сделал случайные числа 0 и 1 и матрицу с короткими строчками, чтобы повысить вероятность выпадения подобной строки.
В вашем случае, наверное. лучше матрицу заполнять не случайным образом, а вводить пользователю с клавиатуры....
Ответить