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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2008, 21:34   #1
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Радость вечные массивы в Паскале

2 задачи.надо на завтра.просто не успеваю.буду всем благодарна запомощь.буду кратка:
№1
Заполнить матрицу случайными числами (от 0 до 99). Отобразить матрицу симметрично относительно главной диагонали
№2
Даны матрицы А и В размером (10х10) и вектор Z (10). Вычислить С: C= [A * MAX B+ BT]2 * Z MIN. Предусмотреть чтение данных из файла и запись результатов в файл. Нахождение обратной матрицы, транспонирование матрицы, сложение, вычитание, умножение матриц, умножение матрицы на число, определение max и min значений, ввод и вывод матриц и вектора оформить в виде подпрограмм.
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 21.01.2008, 23:19   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Задача №1.
Код:
program zerkalo;
uses crt;
var n,i,j:integer;
    a,b:array[1..20,1..20] of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(100);
        write(a[i,j]:3);
      end;
  writeln;
  end;
readln;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        b[i,j]:=a[j,i];
        write(b[i,j]:3);
      end;
  writeln;
  end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 22.01.2008, 06:56   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Задача 1 решается без всяких дополнительных массивов
и в 2 раза быстрее
Вот решение:
Код:
  for i:=1 to n-1 do
    for j:=i+1 to n do
      begin
        t:=a[i,j];
        a[i,j]:=a[j,i];
        a[j,i]:=t;
      end;
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 22.01.2008, 09:22   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

То что нет дополнительного массива, это плюс, но код увеличивается ровно на один цикл, т.к. вам еще вывести на экран надо, а уменя только два цикла.
puporev вне форума Ответить с цитированием
Старый 22.01.2008, 12:15   #5
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Радость

спасибо Пупорев, можно еще одну?
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 22.01.2008, 12:39   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вторую задачу быстро не сделать, надо математику учить.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста сделать в паскале граф и массивы neomaximus Помощь студентам 9 13.06.2008 10:38
Массивы Студентка@ Помощь студентам 2 03.05.2008 14:32
массивы _Solomon_ Помощь студентам 2 08.06.2007 16:25