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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 19:00   #1
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
Сообщение Pascal поменять значение элемента двухмерного массива A(N,N) на сумму окружающих элементов.

Задание:
Цитата:
Составьте программу , меняющую значение элемента двухмерного массива A(N,N) на сумму окружающих элементов.
Мой код:

Код:
Uses crt;
Var a,b:array [1..100,1..100] of integer;
    i,j,n:integer;
Begin
ClrScr;
    write ('Задайте размер матрицы: ');
    readln(n);
    writeln ('Введите элементы матрицы:');
    
    for i:=1 to n do
    for j:=1 to n do
      begin
        write ('a[',i,',',j,']= ');
        readln(a[i,j]);
      end;
    
    writeln;
    writeln('Исходная матрица:');
    writeln;
    for i:=1 to n do
    	begin
      for j:=1 to n do
       			write(a[i,j]:3);
      			writeln;
    	end;
    
    for i:=1 to n do
    for j:=1 to n do
      if j=1 then b[i,j]:=a[i,j+1];
      if j=n then b[i,j]:=a[i,j-1]
      else b[i,j]:=a[i,j-1]+a[i,j+1];
      
    writeln;
    writeln('Новая матрица:');
    writeln;
    for i:=1 to n do
    	begin
      for j:=1 to n do
       			write(b[i,j]:3);
      			writeln;
    	end;
Readln
End.
Почему то при выводе появляются нулевые элементы. Что не так?
mrRastom вне форума Ответить с цитированием
Старый 04.04.2011, 19:15   #2
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
По умолчанию

и правильно ли я понял задание? Или элемент должен указываться, и меняться должен именно он, а не все элементы в матрице на сумму окружающих.
mrRastom вне форума Ответить с цитированием
Старый 06.04.2011, 01:09   #3
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
По умолчанию

неужели ни у кого нет ни каких идей где может быть ошибка? Я до сих пор не нашел(
mrRastom вне форума Ответить с цитированием
Старый 06.04.2011, 02:40   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Понял ваше задание :
необходимо на основе одной матрицы создать вторую, с измененными элементами, при этом значения элементов первой матрицы не изменяются:
Код:
const msize = 100;
var a,b:array [1..msize,1..msize] of integer;
    i,j,n:integer;
begin
     write ('Set size of matrix: ');
     readln(n);
     randomize;
     if n>msize then
     begin
          writeln('Size of matrix is very big...');
          writeln('Press enter to exit');
          readln;
          halt;
     end;
     writeln('Random matrix:');
     for i:=1 to n do
     begin
          for j:=1 to n do
          begin
               a[i,j] := random(9);
               write(a[i,j]:3);
          end;
          writeln;
     end;

     if n>1 then
        for i:=1 to n do
        for j:=1 to n do
        begin
             if i=1 then b[i,j]:=b[i,j]+a[i+1,j] else
             if i=n then b[i,j]:=b[i,j]+a[i-1,j] else
             b[i,j]:=b[i,j]+a[i+1,j]+a[i-1,j];

             if j=1 then b[i,j]:=b[i,j]+a[i,j+1] else
             if j=n then b[i,j]:=b[i,j]+a[i,j-1] else
             b[i,j]:=b[i,j]+a[i,j+1]+a[i,j-1];

             if (i=1) and (j=1) then b[i,j]:=b[i,j]+a[i+1,j+1] else
             if (i=1) and (j=n) then b[i,j]:=b[i,j]+a[i+1,j-1] else
             if (i=n) and (j=1) then b[i,j]:=b[i,j]+a[i-1,j+1] else
             if (i=n) and (j=n) then b[i,j]:=b[i,j]+a[i-1,j-1] else
             if i=1 then b[i,j]:=b[i,j]+a[i+1,j-1]+a[i+1,j+1] else
             if i=n then b[i,j]:=b[i,j]+a[i-1,j-1]+a[i-1,j+1] else
             if j=1 then b[i,j]:=b[i,j]+a[i+1,j+1]+a[i-1,j+1] else
             if j=n then b[i,j]:=b[i,j]+a[i+1,j-1]+a[i-1,j-1] else
             b[i,j]:=b[i,j]+a[i+1,j+1]+a[i+1,j-1]+a[i-1,j+1]+a[i-1,j-1];
        end
     else b:=a;
     writeln;
     writeln('Changed matrix:');
     writeln;
     for i:=1 to n do
   	 begin
          for j:=1 to n do
              write(b[i,j]:3);
          writeln;
     end;
     writeln;
     writeln('Press enter to exit');
     Readln;
end.
ПС: у вас ошибка в том, что вы суммируете значения только в строках, при этом забыв о значениях в столбцах и по диагонали.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.

Последний раз редактировалось Sparkman; 06.04.2011 в 03:35.
Sparkman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок схема:Составьте программу подсчета числа отрицательных элементов двухмерного массива А (N,M),кратны3 sa-dmit Паскаль, Turbo Pascal, PascalABC.NET 2 24.06.2010 21:40
сумму элементов массива, расположенных после последнего элемента, равного нулю. R@Ziel Помощь студентам 2 17.12.2009 23:44
Необходимо определить максимальное значение, хранимое в 2-х массивах и указать сумму элементов массива Игорь777 Помощь студентам 1 29.03.2009 21:14
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16