Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 26.02.2012, 19:30   #1 (permalink)
ayPinki
Member
 
Регистрация: 27.11.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Двумерный массив. Числовой файл

1. Ввести целочисленный двумерный массив , вывести его. Найти сумму положительных угловых элементов. Найденной суммой заменить строку содержащую минимальный элемент и столбец, содержащий максимальный элемент.
2. Задан числовой файл . Найти сумму компонент, стоящих между минимальной и максимальной. Заменить этой суммой все элементы из которых она сформирована (элементы между максимумом и минимумом). Файл вывести как до, так и после преобразования.

^ вот 2 задачи.

сначала давайте разберемся с первой. вот что я нацарапал :
program laba1;
const Creep=20;
var
z,i,j,k, sum,Imin,Jmax,IndexI,Indexj,n,m: integer;
A:array[1..Creep,1..Creep] of integer;
b:array[1..500] of integer;
begin
cls;
sum:=0;
z:=0;
writeln('vvedite 4erez _ N(kolvo strok) and M(kilvo stolbcov)=');
readln(n,m);
writeLn('Вводим элементы массива A:');
for i:=1 to N do
for j:=1 to M do
begin
write('A[',i,',',j,']=');
readLn(A[i,j]);
end;

for i:=1 to N do
for j:=1 to M do
if a[i,j]<imin then
begin
imin:=a[i,j];IndexI:=i;
end;
writeln('строка в которой миним элемет ',IndexI);


for i:=1 to N do
for j:=1 to M do
if a[i,j]>jmax then
begin
jmax:=a[i,j];Indexj:=j;
end;
writeln('столбец в которой максимальный элемет ',Indexj);


b[1]:=a[1,1];
b[2]:=a[1,m];
b[3]:=a[n,1];
b[4]:=a[n,m];

for i:=1 to z do
begin
writeln(b[i]:3);
end;

for i:=1 to z do
if b[i]>0 then begin
sum:=sum + b[i];
end;
writeln('summa=', sum);
end.

не могу найти где скрывается косяк, корректно ли идёт присвоение элементам массива b крайних элементов массива a ( и правильно ли они указаны), правильно ли найдены мин/макс...
в общем помогите достроить программу плиз.

и подскажите начало второй.
ayPinki вне форума   Ответить с цитированием

Старый 26.02.2012, 19:30
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Попробуйте обратиться за помощью к этим темам

В Паскале двумерный массив
Двумерный массив
Двумерный массив. Задача
Фортран, двумерный массив
Паскаль, двумерный массив
Паскаль, двумерный массив. Задача.

Старый 26.02.2012, 22:27   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ayPinki Посмотреть сообщение
в общем помогите достроить программу плиз.
Извольте. Вот чего я у Вас совсем не понял, так это на кой пёс занадобился 500-элементный массив B а также что такое z и чему оно равно (хотя по-моему, числу углов, т.е. 4). Кроме того, следует задавать исходные значения при поисках максимумов и минимумов.
И еще один совет на будущее. Хоть для транслятора это и не важно, но уж если Вы обозначаете, к примеру, число строк и столбцов большими буквами M и N, то так их и ведите до конца, а не вперемешку то большие, то малые. Это дисциплинирует и существенно повышает читабельность программы.
Код:
const
 Creep=20;
var
 i,j,k, sum,Imin,Jmax,IndexI,Indexj,N,M: integer;
 A:array[1..Creep,1..Creep] of integer;
 b:array[1..4] of integer;

begin
 sum:=0;
 writeln('vvedite 4erez _ N(kolvo strok) and M(kolvo stolbcov):');
 readln(N,M);
 writeLn('vvodim elementi massiva A:');
 for i:=1 to N do
  for j:=1 to M do
   begin
    write('A[',i,',',j,']= ');
    readLn(A[i,j]);
   end;
 writeln;
 for i:=1 to N do
  begin
   for j:=1 to M do
    write(A[i,j]:4);
   writeln;
  end;
 imin:=A[1,1];
 IndexI:=1;
 for i:=1 to N do
  for j:=1 to M do
   if a[i,j]<imin then
    begin
     imin:=a[i,j];
     IndexI:=i;
    end;
 writeln('Stroka, v kotoroi minimalnii element - ',IndexI);
 jmax:=A[1,1];
 IndexJ:=1;
 for i:=1 to N do
  for j:=1 to M do
   if a[i,j]>jmax then
    begin
     jmax:=a[i,j];
     Indexj:=j;
    end;
 writeln('Stolbets, v kotorom maximalnii element - ',Indexj);


 b[1]:=a[1,1];
 b[2]:=a[1,M];
 b[3]:=a[N,1];
 b[4]:=a[N,M];

 sum:=0;
 for i:=1 to 4 do
  if b[i]>0 then
   sum:=sum+b[i];

 for j:=1 to M do
  A[IndexI,j]:=sum;
 for i:=1 to N do
  A[i,IndexJ]:=sum;

 writeln;
 for i:=1 to N do
  begin
   for j:=1 to M do
    write(A[i,j]:4);
   writeln;
  end;
 readln;
end.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.02.2012, 19:29   #3 (permalink)
ayPinki
Member
 
Регистрация: 27.11.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

код писался прямо на лабе... по этому так не аккуратно.
да 4 - это углы.
спс,чуть позже выложу свои варианты ещё 3 задач, подкорректируйте
ayPinki вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:29.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.