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


Ответ
 
Опции темы Опции просмотра
Старый 11.12.2008, 01:13   #1 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Тяжелая задача на массив

Помогите сделать.. Пожалуйста)))))

Для заданной матрицы размером 8 на 8 найти такие k,
что k-я строка матрицы совпадает с k-м столбцом
( оформить в виде процедуры ).
Найти сумму эл-тов в тех строках, которые содержат хотя бы
один отрицательный эл-т ( оформить в виде функции );
sweeney вне форума   Ответить с цитированием

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

Эти топики очень похожи на ваш и помогут вам разобраться

Экзаменационная задача на массив
Двумерный массив. Задача
Массив
Задача в Делфи на работу с таблицами. Двумерный массив
Паскаль, двумерный массив. Задача.

Старый 11.12.2008, 04:28   #2 (permalink)
Darkcosinus
Member
 
Регистрация: 25.04.2008
Сообщений: 238
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Задача простейшая. Советую - лучше научиться. Потом в жизни пригодится. У нас в универе с программированием на паскале разобрался даже человек, у которого никогда не было компьютера до поступления.

Паскаль вспоминать не хочу, могу только алгоритм подсказать, если нужны знания, а не решения.

Что же вы до сих пор хотя бы алгоритм не написали, если знаете метод решения? Постарайтесь воздержаться от нравоучений. Ваш модератор.
Darkcosinus вне форума   Ответить с цитированием
Старый 12.12.2008, 21:35   #3 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Эм... Ну поможете сделать? Очень нужно, пожалуйста.
sweeney вне форума   Ответить с цитированием
Старый 12.12.2008, 22:02   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Как срочно нужно сделать? До завтра подождать может? Если никто не напишет, завтра запостю решение и этой, и второй задачи.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 13.12.2008, 01:07   #5 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

О да, спасибо)) да, до завтра было бы в самый раз)) спасибо большое))
sweeney вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.12.2008, 19:08   #6 (permalink)
bubuka
Member
 
Аватар для bubuka
 
Регистрация: 23.01.2008
Сообщений: 1,110
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 141
По умолчанию

program p1;

uses crt;

type
mas:array [1..8,1..8] of integer;
mk:array [1..8] of integ;

var
mat:mas;
mask:mk;
i,j,kol:integer;

procedure piskK(a:mas; b:mk; k:integer);
var
j,i, fl:integer;

begin
k:=0;

for i:=1 to 8 do
begin
fl=1;
for j:=1 to 8 do
if a[i,j] <> a[j,i] then fl=0;
if fl=1 then begin k:=k+1; b[k]:=i; end;
end;

end;

sum(a:mas);

var
summa, summaStr, i,j,fl:integer;
begin
summa:=0;

for i:=1 to 8 do
begin
fl:=0;
summaStr:=0;
for j:=1 to 8 do
begin
if a[i,j]<0 then fl:=0;
summaStr:=summaStr+a[i,j];
end;
if fl=1 then summa:=summa+summaStr;
end;

sum:=summa;

end;



begin
clrscr;

writeln('vvod massiva');
for i:=1 to 8 do
for j:=1 tp 8 do
begin
write('mat[',i,',',j,']= '); readln(mat[i,j]);
end;

kol:=0;
poiskK(mat:mas; mask:mk;kol:integer);

writeln('Vyvod k');
for i:=1 to kol do
write(mask[i],' ');


writeln;
writeln('Summa ravna', sum(mat:mas);

readkey;
end.
bubuka вне форума   Ответить с цитированием
Старый 13.12.2008, 19:09   #7 (permalink)
bubuka
Member
 
Аватар для bubuka
 
Регистрация: 23.01.2008
Сообщений: 1,110
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 141
По умолчанию

писал на работе в блокноте

так что вероятно придется поправить синтаксис
bubuka вне форума   Ответить с цитированием
Старый 14.12.2008, 04:19   #8 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

все-равно спасибо)) огромное)
sweeney вне форума   Ответить с цитированием
Старый 15.12.2008, 12:57   #9 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

В принципе bubuka уже сделал, но все равно вот второй вариант решения
Код:
program massiv3;
uses crt;
label inp1;
var n,k,i,j: integer;
    sum: integer;
    a: array[1..8,1..8] of integer;
    s: array[1..8] of integer;

{функция суммы элементов строки массива}
function summa (b: integer):integer;
var s1:integer;
begin
s1:=0;
for n:=1 to 8 do
s1:=s1+a[b,n];
summa:=s1;
end;

{процедура поиска совпадений строк и столбцов}
procedure search;
begin
for i:=1 to 8 do
for j:=1 to 8 do
if a[i,j]=a[j,i] then s[i]:=s[i]+1;
{вывод результатов поиска}
for i:=1 to 8 do
if s[i]=8 then begin n:=n+1; writeln('Совпадают ',i,' строка и ',i,' столбец.'); end;
if n=0 then writeln('Совпадений строк и столбцов не найдено.');
end;

{основная программа}
begin
randomize;
clrscr;
{выбор источника значений массива}
inp1: writeln('Выберите способ заполнения массива (1 - вручную, 2 - псевдослучайные значения)');
readln(k);
case k of
{заполнение массива вручную}
1: begin
   for i:=1 to 8 do
   for j:=1 to 8 do
   begin
   writeln('Введите [',i,';',j,'] элемент массива');
   read(a[i,j]);
   end;
   end; {1}
{заполнение массива псевдослучайными значениями}
2: begin
   for i:=1 to 8 do
   for j:=1 to 8 do
   begin
   a[i,j]:=trunc(random*10);
   if trunc(random*2)=1 then a[i,j]:=a[i,j]*(-1);
   end;
   end; {2}
else goto inp1;
end; {case}
writeln('Массив заполнен значениями:');

{вывод массива на экран}
writeln;
for i:=1 to 8 do
begin
 for j:=1 to 8 do
 begin
  write(a[i,j]:2,' ');
 end;{j}
 writeln;
end;{i}
writeln;

{поиск максимального по модулю элемента массива при помощи процедуры search}
search;
writeln;

{сумма элементов в строках с отрицательным элементом}
for i:=1 to 8 do
begin
 for j:=1 to 8 do
 begin
  if a[i,j]<0 then
              begin
               sum:=summa(i);
               writeln('Сумма элементов в ',i,' строке равна ',sum);
               break;
              end;
 end; {j}
end; {i}

readln(i);
end.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 15.12.2008, 21:44   #10 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В очередной раз благодарю вас)) Спасибо)))
sweeney вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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