uses NumLibABC;
begin
var n := ReadInteger('n=');
Println('Введите построчно элементы матрицы С');
var C := new Matrix(n, n, ReadArrReal(n * n));
Println('Введите элементы вектора a');
var a := new Vector(ReadArrReal(n));
var b := C * a;
Println('Полученный вектор b');
b.Println
end.
using System;
//6,
//28,
//496,
//8128,
//33550336
internal class Program {
private static void Main() {
var max = 0L;
var quantity = 0;
Console.WriteLine("Введите последовательность. Для окончания введите ноль");
do {
var n = long.Parse(Console.ReadLine());
if (n == 0)
break;
if (max == n)
quantity++;
else if (n > max && IsIdealNumber(n)) {
max = n;
quantity = 1;
}
} while (true);
Console.WriteLine($"max = {max}, кол-во = {quantity}");
Console.ReadKey();
}
private static bool IsIdealNumber(long number) {
var sum = 1L;
for (var i = 2L; i <= number / 2; i++) {
if (number % i != 0)
continue;
sum += i;
if (sum > number || number < 0)
break;
}
Console.WriteLine($"number = {number}, sum = {sum}");
return sum == number; //зачем выдумывать нолики и единички если давно придуманы буленовские переменные
}
}
Если я правильно понял, то
1. Вариант С++
#include <iostream>
int NOD(int var1, int var2) //Алгоритм Евклида
{
while(var1 != var2)
{
if(var1 > var2)
var1 = var1 - var2;
else var2 = var2 - var1;
}
return var1;
}
int NOK(int var1, int var2)
{
return (var1 * var2) / NOD(var1, var2);
}
int main()
{
short int
a, b, c, d,
m, n, NK;
std::cin >> a >> b >> c >> d;
NK = NOK(b, d); // избегаем не нужных вычислений
m = a * (NK / b) + c * (NK / d);
n = NOK(b, d);
std::cout << "Первая дробь: " << a << "/" << b << std::endl;
std::cout << "Вторая дробь: " << c << "/" << d << std::endl;
std::cout << std::endl << "Результат: " << m << "/" << n << std::endl;
}
2. C
#include <stdio.h>
int NOD(int var1, int var2) //Алгоритм Евклида
{
while(var1 != var2)
{
if(var1 > var2)
var1 = var1 - var2;
else var2 = var2 - var1;
}
return var1;
}
int NOK(int var1, int var2)
{
return (var1 * var2) / NOD(var1, var2);
}
int main()
{
short int
a, b, c, d,
m, n, NK;
scanf("%hi%hi%hi%hi", &a, &b, &c, &d);
NK = NOK(b, d); // избегаем не нужных вычислений
m = a * (NK / b) + c * (NK / d);
n = NOK(b, d);
printf("Первая дробь: %hi/%d\n", a, b);
printf("Вторая дробь: %hi/%d\n", c, d);
printf("Результат: %hi/%hi\n", m, n);
}
Поделитесь своими знаниями, ответьте на вопрос:
Дана матрица с(n×n) и вектор а(a1, a2, написать программу вычисления вектора b=c*a. в паскале .
const n=5;
var c:array[1..n,1..n] of integer;
a, b: array[1..n] of integer;
i, j, s: integer;
begin
Randomize;
writeln('Исходный массив С:');
for i:=1 to n do
begin
for j:=1 to n do
begin
c[i,j]:=random(10);
write(c[i,j]:4);
end;
writeln;
end;
writeln('Исходный массив a:');
for i:=1 to n do
begin
a[i]:=random(10);
write(a[i]:4);
end;
writeln;
for i:=1 to n do
begin
s:=0;
for j:=1 to n do s:=s+c[i,j]*a[j];
b[i]:=s;
end;
writeln('b=C*a');
for i:=1 to n do write(b[i]:4);
writeln;
end.
Пример:
Исходный массив С:
3 9 2 3 5
3 9 5 6 9
9 2 1 7 8
5 2 0 3 2
8 6 6 1 3
Исходный массив a:
8 6 9 1 7
b=C*a
134 192 156 69 176