Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Кто может помогите!
LeneДата: Среда, 05.03.2008, 06:26 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 1
Репутация: 0
Замечания: 0%
Статус: Offline
Всего лишь 2 задачки, может покажутся легкими, но я их решить никак не могу sad
1. заменить все отрицательные элементы нулями и подсчитать сумму положительных элементов в каждом столбце матрицы А{m,n}.
2.Найти косинус угла между двумя векторами a={an} и b={bn}.

Заранее огромное спасибо!

 
SeqularДата: Среда, 05.03.2008, 07:15 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Lene,
Насчет первой задачки:
Создаем накопительную переменную, создаем вектор для хранения значений суммы по столбцам.

Code
Var summ: word;
       vek: Array[1..n] of Word;

Суммируем элементы по столбцам, заодно заменяем отрицательные элементы нулями

Code
For i := 1 to n do
      Begin
      summ := 0;
      For j := 1 to m do
           Begin
           If (a[i,j] < 0) then a[i,j] := 0
                    else summ := summ + a[i,j];
           End;
           vek[i] := summ;
      End;

Тут мы заменяем отрицательные элементы нулями, а положительные накапливаем по столбцам, потом заносм в вектор.

P.S. Если будут глючить строки/столбцы, поменять местами i и j. Среда разработки у меня далеко, пишу "в уме".


Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Среда, 05.03.2008, 07:16 | Сообщение # 3
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Смысл второй до меня пока не дошел. smile Может кто-то поймет

Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Среда, 05.03.2008, 07:24 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
1) Ну это совсем просто, как-то так:
Code
for i:=1 to m do
     begin
        k:=0;
        for j:=1 to n do
           if Matrix[i][j]<0 then
              Matrix[i][j]:=0
           else
              k:=k+Matrix[i][j];
        WriteLn('В ',i,'-том столбце cумма положительных элементов равна ',k);
     end;

2)Ещё проще:
Описание:
Code
type
     dot=record
          x,y:real;
     end;
     Vec=record
          a,b:dot;

Если не мне изменяет память, то косинус между векторами считается так(через скалярное произведение и длины):
Code
Result:=(an.dot.x*bn.dot.x+an.dot.y*bn.dot.y)/(Sqrt(an.dot.x*an.dot.x+an.dot.y*an.dot.y)*Sqrt(bn.dot.x*bn.dot.x+bn.dot.y*bn.dot.y))

Только предварительно спроецируй оба вектора на ось координат(надеюсь это проблемой не станет smile ).


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Среда, 05.03.2008, 07:28
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;