Паскаль
1)Как вы думаете при выполнении программы обязательно заполнять все ячейки данными. почему?
2) если ячейка не заполнена то какое значение в ней находится?
3) может ли реальное количество элементов в массиве модет быть меньше чем указано при описании. почему? а может быть меньше? почему?
Проблема в строке 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.
// 1/R = 1/r1 + 1/r2
// 1/R = (r2+r1)/(r2*r1)
// R = r2*r1 / (r2 + r1)
//Закон Ома для участка цепи:
// I = U/R
var
r1,r2,u : integer;
R,I : real;
begin
writeln ('Введите значения сопротивления (r1 r2)');
readln (r1,r2);
writeln ('Укажите напряжение на концах цепи (u)');
readln (u);
R := r2*r1 / (r2 + r1);
I := U/R;
//Фактически можно не использовать переменную R
//А вставить выражение сразу
// I := U/( r2*r1 / (r2 + r1) );
writeln ('Сила тока на участке = ',I);
end.