Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 09:35   #1
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Двумерные массивы

Здравствуйте уважаемые программисты. Не справился со следующем заданием: Дан двумерный массив. Вставьте строку из нулей перед всеми строками, первый элемент которых делится на 3. Прошу помочь если вас не затруднит! Спасибо за внимание!
Алексей1994 вне форума
Старый 03.04.2014, 10:24   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Здравствуйте. Хотелось бы увидеть ваши наработки.
ZX Spectrum-128 вне форума
Старый 03.04.2014, 11:03   #3
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию

С массивами у меня проблемы. Поэтому особых наработок нет.
var
a: array [1..m,1..n] of integer;
begin
for i:=m downto 1 do
if a[i,1] mod 3=0 then begin
for j:=m-1 downto i do a[j+1]:=a[j];
for j:=1 to n do a[i,j]:=0
end;
Алексей1994 вне форума
Старый 03.04.2014, 11:05   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ну, уже неплохо!
Давайте попробуем вместе решить проблему - как увеличить размера массива?..

подсказываю варианты (можно использовать динамические массивы (ну тут важно какой у Вас компилятор Паскаля),
а можно обеспечить изначально описание статического массива заведомо БОЛЬШЕГО размера, чем MxN

Последний раз редактировалось Serge_Bliznykov; 03.04.2014 в 11:08.
Serge_Bliznykov вне форума
Старый 03.04.2014, 11:19   #5
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Массивы

Изменил.Если конечно правильно понял. Но не работает.
Код:
var a: array[1..100, 1..100] of integer;
  i, j, n, m: integer;
begin
  read(n, m);
  for i := 1 to n do
    for j := 1 to m do
      read(a[i, j]);
  for i := 1 to n do
    if a[i, 1] mod 3 = 0 then
    begin
      for j := 1 to m do
        a[i, j] := 0;
    end;
  for i := 1 to n do begin
    writeln;
    for j := 1 to m do
      write(a[i, j]: 3);
  end;
end.
___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.04.2014 в 11:34.
Алексей1994 вне форума
Старый 03.04.2014, 11:34   #6
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию

Изменил.Если конечно правильно понял. Но не работает.
Код:
var a: array[1..100, 1..100] of integer;
  i, j, n, m: integer;
begin
  read(n, m);
  for i := 1 to n do
    for j := 1 to m do
      read(a[i, j]);
  for i := 1 to n do
    if a[i, 1] mod 3 = 0 then
    begin
      for j := 1 to m do
        a[i, j] := 0;
    end;
  for i := 1 to n do begin
    writeln;
    for j := 1 to m do
      write(a[i, j]: 3);
  end;
end.
end.

Последний раз редактировалось Serge_Bliznykov; 03.04.2014 в 11:39.
Алексей1994 вне форума
Старый 03.04.2014, 11:37   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы поняли меня правильно. Но сделали чуть-чуть не так...
Нет фактически ВСТАВКИ новой строки (с изменением количества строк N).
(кстатит, как и другие операции, которые изменяют размерность массива это лучше (хотя и не обязательно) делать с помощью обратного цикла - от последней строки к первой


попробуйте такой код:
Код:
var a: array[1..100, 1..100] of integer;
  i, j, k, n, m: integer;
begin
  read(n, m);
  for i := 1 to n do
    for j := 1 to m do
      {read(a[i, j]); } 
      a[i,j] := (i-1)*m + j; {для отладки заполним массив числами от 1 до N*M}

  WriteLn('Исходный массив: ');
  for i := 1 to n do begin
    for j := 1 to m do write(a[i, j]: 3);
    writeln;
  end;


  for i := n downto 1 do
    if a[i, 1] mod 3 = 0 then
    begin
      {сначала сдвинем все строчки от текущей на одну вниз}
      for k:=n downto i do
        for j := 1 to m do
          a[k+1, j] := a[k, j];
      inc(n); {увеличим количество строк}

      {теперь на место исходной строки (которую мы уже сместили вниз
         запишем новую строку, заполненую нулями}
      for j := 1 to m do
          a[i, j] := 0;

    end;


  WriteLn('Результирующий массив: ');
  for i := 1 to n do begin
    for j := 1 to m do write(a[i, j]: 3);
    writeln;
  end;
  Readln
end.

Последний раз редактировалось Serge_Bliznykov; 03.04.2014 в 11:50.
Serge_Bliznykov вне форума
Старый 08.04.2014, 09:32   #8
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Массивы

Спасибо вам большое за помощь!
Алексей1994 вне форума
Старый 08.04.2014, 09:33   #9
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию

Спасибо вам большое за помощь!
Алексей1994 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Кааатя Помощь студентам 5 16.01.2013 09:32
Двумерные массивы Кааатя Паскаль, Turbo Pascal, PascalABC.NET 0 15.01.2013 18:15
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51