Тема «Программирование линейных алгоритмов»:
Внимательно изучите программу на Паскале и ответьте письменно на во Какую задачу решает данная программа? Что вводится в данной программе?
- Если слово «равнобедренным» заменить на «равносторонним», что нужно поменять в программе?
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);
}