Ответ:
Объяснение:
#include <iostream>
using namespace std;
void cycle_for() {
int sum = 0;
for (int i = 0; i <= 80; i++) if (i % 4 == 0) sum += i;
cout << "Cycle for: " << sum << endl;
}
void cycle_while() {
int i = 0, sum = 0;
while (i <= 80) {
if (i % 4 == 0) sum += i;
i++;
}
cout << "Cycle while: " << sum << endl;
}
void cycle_do_while() {
int i = 0, sum = 0;
do {
if (i % 4 == 0) sum += i;
i++;
} while (i <= 81);
cout << "Cycle do while: " << sum;
}
int main() {
cycle_for();
cycle_while();
cycle_do_while();
}
Непростая задача...
const
n = 16;
type
R = record
v: integer;
p: integer
end;
mR = array[1..n] of R;
function SummOfDigits(n: integer): integer;
{ Сумма цифр в трехзначном числе }
begin
SummOfDigits := (n div 100) + ((n mod 100) div 10) + (n mod 10)
end;
procedure Swp(var a, b: R);
{ Меняет местами элементы a и b }
var
t: R;
begin
t.v := a.v; t.p := a.p;
a.v := b.v; a.p := b.p;
b.v := t.v; b.p := t.p
end;
procedure Shell(var a: mR; n: integer);
{ сортировка методом Шелла }
var
i, j, step: integer;
begin
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i].v > a[i + step].v then Swp(a[i], a[i + step]);
i := i + step
end
end;
step := step div 2
end
end;
var
a: array[1..n] of integer;
b: mR;
i: integer;
begin
Randomize;
Writeln('*** Исходные элементы массива ***');
for i := 1 to n do
begin
a[i] := Random(900) + 100;
b[i].v := SummOfDigits(a[i]);
b[i].p := i;
Write(a[i]:4)
end;
Writeln;
Shell(b, n);
Writeln('*** Упорядоченные по возрастанию суммы цифр элементы массива ***');
for i := 1 to n do
begin
Write(a[b[i].p]:4)
end;
Writeln
end.
Тестовое решение:
*** Исходные элементы массива ***
862 244 599 379 595 840 551 151 614 383 185 893 131 172 139 256
*** Упорядоченные по возрастанию суммы цифр элементы массива ***
131 151 244 172 551 614 840 139 256 185 383 862 595 379 893 599
Вызов G(5)+F(5)
Вход G(5), вызов F(4)+2G(4)
Вход F(4), вызов 2F(3)-G(3)
Вход F(3), вызов 2F(2)-G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(3), вызов F(2)+2G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(4), вызов F(3)+2G(3)
Вход F(3), вызов 2F(2)-G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(3), вызов F(2)+2G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход F(5), вызов 2F(4)-G(4)
Вход F(4), вызов 2F(3)-G(3)
Вход F(3), вызов 2F(2)-G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(3), вызов F(2)+2G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(4), вызов F(3)+2G(3)
Вход F(3), вызов 2F(2)-G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(3), вызов F(2)+2G(2)
Вход F(2), вызов 2F(1)-G(1)
Вход F(1), результат 1
Вход G(1), результат 1
Вход G(2), вызов F(1)+2G(1)
Вход F(1), результат 1
Вход G(1), результат 1
-14
C#. Пример работы на изображении.
using System;
public class Test
{
public static void Main()
{
int N;
try {
Console.Write("Введите натуральное N > 100.\nN = ");
N = int.Parse(Console.ReadLine());
} catch {
Console.WriteLine("Ошибка ввода.");
return;
}
if(N <= 100) {
Console.WriteLine("Ошибка ввода.");
return;
}
int S = 0;
while(N > 0){
S += N % 10;
N = N / 10;
}
Console.WriteLine("Сумма цифр в числе N = {0}", S);
}
}