Проблема в строке c:= (b*b*b); Ты ищешь сумму кубов, а для 4-значных чисел нужно искать сумму 4-х степеней. Нужно проверять число а: если от 100 до 999, то выполняем c:= (b*b*b); а если от 1000 до 9999, то выполняем c:= (b*b*b*b);
Код ниже работает и выдаёт результат: число Армстронга ==> 153 число Армстронга ==> 370 число Армстронга ==> 371 число Армстронга ==> 407 число Армстронга ==> 1634 число Армстронга ==> 8208 число Армстронга ==> 9474
var a,b,c,d,a2:integer; begin for a:=100 to 9999 do begin d:=0; a2:=a; while (a2 <> 0) do begin b:= a2 mod 10; a2:= a2 div 10; if a<1000 then c:= (b*b*b) else c:= (b*b*b*b); d:= d+c; end; if (a = d) then writeln('число Армстронга ==> ', a); end; end.
В первой задаче находятся все 4-значные числа, а не только симметричные. Паскаль АВС.
Program Ilgiz98; var i: integer; begin writeln('*** Alphaeus is thinking... ***'); writeln('*** OK ***'); writeln('Программа находит 4-значные числа, которые делятся на 27'); writeln('Список таких чисел:'); for i:=1000 to 9999 do if (i mod 27)=0 then writeln(i); end.
Program Ilgiz98; var mass: array [1..20] of integer; i, k, n: integer; begin writeln('*** Alphaeus is thinking... ***'); writeln('*** OK ***'); writeln('Среди элементов массива программа находит числа, которые больше заданного числа N и одновременно кратны 5'); write('Введите число N '); readln (n); writeln('*** Вычисляю... ***'); k:=0; writeln('Массив чисел:'); for i:=1 to 20 do begin mass[i]:=random(1000)-500; writeln(mass[i]); if (mass[i]>n) and ((mass[i] mod 5)=0) then k:=k+1; end; writeln(); writeln('Всего найдено ',k,' таких чисел'); end.
Відповідь:
Пояснення:
#include <iostream>
using namespace std;
int main() {
int z = 5;
int n;
cin >> n;
int x[n];
for (int i = 0; i < n; i++){
cin >> x[i];
}
for (int i = 0; i < n ; i++)
{
if (x[i] < z)
x[i] = z;
cout << x[i]<<' ';
}
return 0;
}