Более изящное решение :)
Проблема в строке 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.
Program psck;
vara,b: integer;p,s: real;
begin
read(a,b); //стороны треугольника s:=a*b/2; p:=a+b+sqrt(a*a+b*b); writeln('Периметр - ',p); write('Площадь - ',s); end.
Сначала вводится N(кол-во эл-в в массиве), потом сам массив a.
Потом вводится M и массив b.
Программа выводит перевернутые массивы a и b
Если будут вопросы пиши к комментариям.
#include <bits/stdc++.h>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> a(N);
for (int i = 0; i < N; i++)
cin >> a[i];
int M;
cin >> M;
vector<int> b(M);
for (int i = 0; i < M; i++)
cin >> b[i];
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < N; i++)
cout << a[i] << ' ';
cout << endl;
for (int i = 0; i < M; i++)
cout << b[i] << ' ';
}
Вариант с вводом элементов:
Program prog;
uses crt;
var a: array [0..999] of integer;
i, k, n: integer;
begin
clrscr;
write('Размер массива n = ');
readln(n);
writeln;
for i:=1 to n do
begin
write('a[',i,'] = ');
readln (a[i]);
end;
for i:=1 to n do
if a[i] mod 2 = 0 then k:=k+1;
writeln;
writeln('Количество четных чисел k = ', k);
end.
Вариант с рандомными элементами:
Program prog;
uses crt;
var a: array [0..999] of integer;
i, k, n: integer;
begin
clrscr;
randomize;
write('Размер массива n = ');
readln(n);
writeln;
for i:=1 to n do
begin
a[i]:=random(100)-50;
writeln('a[',i,'] = ',a[i]);
end;
for i:=1 to n do
if a[i] mod 2 = 0 then k:=k+1;
writeln;
writeln('Количество четных чисел k =' , k);
end.