• Вариант 3

    а) Даны две произвольные матрицы: А разм. 4х4, В разм. 3х3. Элементы главной диагонали в каждой матрице заменить элементами побочной

    диагонали и элементы побочной заменить элементами главной. Составить процедуру.

    question img

Ответы 7

  • Вы сказали, молодец, теперь знаю.
    • Автор:

      ariesspfh
    • 6 лет назад
    • 0
  • Просто Atan (x) есть практически в любом языке, так что мой способ более универсален.
  • Да-да, а при программировании задач надо тоже пользоваться только теми конструкциями, которые есть практически в любом языке. Запретить пользовательские типы, записи, структуры, классы - использовать только одномерные массивы. Никаких циклов - GOTO <метка> и IF <условие> GOTO <метка>. Ввод и вывод простейший - никаких там форматов. Программа написанная на одном языке должна без переделок идти на любом другом!
  • Не передергивайте. Я так сделал, потому что он не указал язык. То есть сделал так, чтобы человек мог решить задачу на любом языке.
    • Автор:

      boy
    • 6 лет назад
    • 0
  • Это как раз то же самое. Если написать алгоритм в терминах "присваивание - переход - развилка по условию" - тоже можно на любом языке запрограммировать.
  • a) Алгоритм такой:Ввод начальных матриц A(4; 4); B(3; 3)Цикл по i от 1 до 4 для матрицы A(4; 4)Вызов процедуры замены элементов матрицы с параметром i.Конец циклаЦикл по i от 1 до 3 для матрицы B(3; 3)Вызов процедуры замены элементов матрицы с параметром i.Конец циклаВывод обоих матрицКонец основной программыПроцедура замены для матрицы M(k; k)Ввод номера текущей строки nQ = M(n; n)M(n; n) = M(n; k-n+1)M(n; k-n+1) = Q// Здесь i - это текущая строка, k - количество строк в матрице. //Конец процедуры.b) Алгоритм такой:Ввод начальных векторов G = (g1; g2; g3; g4); D = (d1; d2; d3; d4)Вызов процедуры вычисления длины вектора S1 = P(|G|)Вызов процедуры вычисления длины вектора S2 = P(|D|)S = (S1 + S2)/2Вывод результата SКонец основной программыПроцедура вычисления длины вектора A(a1; a2; a3; a4)P = sqrt(a1^2 + a2^2 + a3^2 + a4^2)Конец процедурыc) Алгоритм такой:c = 1,23Цикл по а от 2 до 8 // так удобнее, чем цикл от 0,2 до 0,8 с шагом 0,1 //x = COS ( (0.1*a + c)/3.178)y = 0.7*COS (0.1*a - 1.27)x1 = Arcsin(x)y1 = Arcsin(y)xy1 = Arcsin(x + y)// Здесь Arcsin (t) - это пользовательская функция, которую мы сами определяем в отдельной процедуре. //z = x1 = y1 + LOG (ABS (xy1))Вывод очередного значения zКонец цикла по аКонец основной программыПроцедура вычисления Arcsin (t)// Дальше сложность, потому что в языках программирования очень редко встречается функция arcsin(x), обычно только sin(x), cos(x), atan(x). //// Поэтому вспоминаем тригонометрию. arcsin t = arctg ( t/√(1-t^2) )Arcsin (t) = ATAN (t / SQRT (1 - t*t))Конец процедуры
    • Автор:

      tootsz7rb
    • 6 лет назад
    • 0
  • PascalABC.NET 3.2, сборка 1504 от 09.07.2017Внимание! Если программа не работает, обновите версию!Задание а)procedure DiagExchange<T>(a:array[,] of T);begin  var n:=a.ColCount;  for var i:=0 to a.RowCount-1 do    Swap(a[i,i],a[i,n-i-1])end;begin  var a:=MatrRandom(4,4,-50,50);  a.Println(4); Writeln(4*a.ColCount*'-');  DiagExchange(a);  a.Println(4); Writeln(4*a.ColCount*'-');  Randomize;  var b:=MatrGen(3,3,(i,j)->Random(-50,50)/10);  b.Println(5,1); Writeln(5*b.ColCount*'-');  DiagExchange(b);  b.Println(5,1); Writeln(5*b.ColCount*'-')end.Пример  37  21   5 -42  44   0  48  48  14 -26  37  36  -8  43 -43 -24---------------- -42  21   5  37  44  48   0  48  14  37 -26  36 -24  43 -43  -8---------------- -2.7 -1.0  2.3  0.0 -3.5 -0.2 -3.6 -5.0  1.2---------------  2.3 -1.0 -2.7  0.0 -3.5 -0.2  1.2 -5.0 -3.6---------------Задание б)function VLength(Self:array of real):real; extensionmethod;begin  Result:=Sqrt(Self.Select(x->x*x).Sum)end;    begin  var G:=Arr(1.6,2.8,4.9,-6.7); G.Println;  var D:=Arr(8.4,1.0,2.6,4.8); D.Println;  Writeln('Полусумма длин равна ',(G.VLength+D.VLength)/2)end.Результат1.6 2.8 4.9 -6.78.4 1 2.6 4.8Полусумма длин равна 9.48641255163993Задание в)begin  var c:=1.23;  Writeln(' a       x          y          z');  for var i:=2 to 8 do begin    var a:=i/10;    var x:=cos((a+c)/3.178);     var y:=0.7*cos(a-1.27);    var z:=ArcSin(x)+ArcSin(y)+Ln(Abs(ArcSin(x+y)));    Writeln(a:3:1,x:11:8,y:11:8,z:11:8)    endend.Результат a       x          y          z0.2 0.90046079 0.33608696        NaN0.3 0.88633142 0.39570967        NaN0.4 0.87132454 0.45137858        NaN0.5 0.85545501 0.50253747        NaN0.6 0.83873853 0.54867517        NaN0.7 0.82119166 0.58933068        NaN0.8 0.80283178 0.62409780        NaNВ задании в) данные подобраны некорректно: x+y>1, поэтому аргумент арксинуса в формуле для z принимает недопустимое значение.
    • Автор:

      tanner57
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years