• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Тяжелая задача на массив

  • Автор темы Автор темы sweeney
  • Дата начала Дата начала

sweeney

Новые
Регистрация
10 Дек 2008
Сообщения
13
Реакции
0
Баллы
0
Тяжелая задача на массив

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

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

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

Что же вы до сих пор хотя бы алгоритм не написали, если знаете метод решения? Постарайтесь воздержаться от нравоучений. Ваш модератор.
 
Эм... Ну поможете сделать? Очень нужно, пожалуйста.
 
Как срочно нужно сделать? До завтра подождать может? Если никто не напишет, завтра запостю решение и этой, и второй задачи.
 
О да, спасибо)) да, до завтра было бы в самый раз)) спасибо большое))
 
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,' ');


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

readkey;
end.
 
писал на работе в блокноте

так что вероятно придется поправить синтаксис
 
все-равно спасибо)) огромное)
 
В принципе 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.
 
В очередной раз благодарю вас)) Спасибо)))
 
Назад
Сверху