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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2009, 01:18   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию Преобразование матриц

народ подскажите что неправильно

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

Код:
program lab_1;
uses crt;

const n=8;
type
 matr = array[1..n,1..n] of integer;
 matrtr = array[1..n,1..n] of integer;
 
{формирование матрицы}
procedure formir(var a:matr;k:integer);
var
 i,j:integer;
begin
 randomize; {включаем генератор случайных чисел}
 for i:=1 to k do {генерируем матрицу}
  for j:=1 to k do
   a[i,j]:=Random(20)-10;
end;

{вывод матрицы}
procedure vivod(a:matr;k:integer);
var
 i,j:integer;
begin
 for i:=1 to k do
  begin
   for j:=1 to k do
    write(a[i,j]:4);
   writeln;
  end;
end;

procedure trans(var a:matr;b:matrtr);
var
i,j,k,p:integer;
begin
p:=0;k:=0;
for i := 1 To n do
for j := 1 To n do
a[i,j] :=b[j,i];
for i:=1 to n do begin
    for j:=1 to n do
        if  (a[i,j]=a[j,i]) then inc(p);
 if p=n then inc(k);
end;
writeln('количество k-ых строк матрицы, которые совпадает с k-м столбцом = ', k);
end;

function kolvo(a:matr):integer;
var
 i,j,s:integer;
begin
s:=0;
for i:=1 to n do
 for j:=1 to n do
        if (a[i,j]<0) then
           for j:=1 to n do
               s:=s+a[i,j];
writeln('Сумма элементов строки содержащей хотя бы один отрицательный элемент = ',s);
end;
var
 a:matr;
 b:matrtr;
 i:integer;
begin
 clrscr;
 formir(a,n);
 writeln('Квадратная матрица: ');
 vivod(a,n);
 trans(a,b);
 kolvo(a);
end.
Ответы выдаёт неправильные.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось bpystep; 23.03.2009 в 12:00.
bpystep вне форума Ответить с цитированием
Старый 23.03.2009, 09:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Для заданной матрицы размером 8 на 8 найти такие k,
что k-я строка матрицы совпадает с k-м столбцом
Хм. Я лично так это вижу:
Код:
procedure trans(var a:matr;b:matrtr);
var
i,j,k,p:integer;
begin
p:=0;
for i:=1 to n do
    for j:=1 to n do
        if  (a[i,j]=a[j,i]) then inc(p);
writeln('количество k-ых строк матрицы, которые совпадает с k-м столбцом = ', p);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2009, 11:12   #3
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Я тоже так пытался делать, но ответ паскаль выдаёт всегда разный, и даже если нет одинаковых строк со столбцами, паскаль выдал мне ответ 10. хотя максимум сколько он может выдать, это 8, по логике то вещей.

З.Ы. со вторым пунктом я разобрался
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 23.03.2009, 11:40   #4
razzmatazz
Новичок
Джуниор
 
Регистрация: 21.03.2009
Сообщений: 2
По умолчанию

Цитата:
if (a[i,j]=a[j,i]) then inc(p);
как я понял вы тут считаете кол-во одинаковых элементов, причем тут количество k-ых строк матрицы, которые совпадает с k-м столбцом. Надо делать если все 8 элементов совпадают то inc(k) и тогда его выводить.
razzmatazz вне форума Ответить с цитированием
Старый 23.03.2009, 11:42   #5
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

я понял твою идею, но как её реализовать?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 23.03.2009, 11:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Немного подправил:
Код:
procedure trans(var a:matr;b:matrtr);
var
i,j,k,p:integer;
begin
p:=0;k:=0;
for i := 1 To n do
for j := 1 To n do
a[i,j] :=b[j,i];
for i:=1 to n do begin
    for j:=1 to n do
        if  (a[i,j]=a[j,i]) then inc(p);
 if p=n then inc(k);
end;
writeln('количество k-ых строк матрицы, которые совпадает с k-м столбцом = ', k);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2009, 12:00   #7
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Спасибо огромное товарисчи выше представленый код поправлен
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 23.03.2009, 12:41   #8
vector
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 13
По умолчанию

Мне кажется должно быть так (не компилировал ):
Код:
procedure trans(a:matr);
var
i,j,k,p:integer;
begin
k:=0;
for i:=1 to n do begin
  p := 0;
  for j:=1 to n do
    if  (a[i,j]=a[j,i]) then inc(p);
  if p=n then inc(k);
end;
writeln('количество k-ых строк матрицы, которые совпадает с k-м столбцом = ', k);
end;

function kolvo(a:matr):integer;
var
 i,j,s,t,k:integer;
begin
s:=0;
for i:=1 to n do begin
  t:=0; k:=0;
  for j:=1 to n do begin
    t:=t+a[i,j];
    if a[i,j] < 0 then inc(k);
  end;
  if k>0 then
    s:=s+t;
end;
writeln('Сумма элементов строки содержащей хотя бы один отрицательный элемент = ',s);
end;
Делаю домашние задания, курсовые студентам и школьникам.
email: solverr@mail.ru
ICQ: 472337610
vector вне форума Ответить с цитированием
Старый 23.03.2009, 12:54   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Мне кажется должно быть так
Согласен, провтыкал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
транспонирование матриц kate158 Общие вопросы Delphi 7 21.12.2008 16:39
объединение матриц eHappy Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2008 00:36
Решение матриц DJ DIMON Паскаль, Turbo Pascal, PascalABC.NET 1 08.12.2008 13:07