Другие языки программирования и технологии

что делает это программа

Program n1; Uses Crt; Var a,b:array[1..5] of byte; n,i,k,j,d:integer; begin Clrscr; write('‚ўҐ¤ЁвҐ ЇпвЁ§­ з­®Ґ зЁб«®: '); readln(n); a[5]:=n mod 10; a[4]:=n div 10 mod 10; a[3]:=n div 100 mod 100 mod 10; a[2]:=n div 1000 mod 1000 mod 100 mod 10; a[1]:=n div 10000 mod 10000 mod 1000 mod 100 mod 10; writeln('ђҐ§г«мв в ЇҐаҐбв ­®ўЄЁ:'); for d:=1 to 4 do begin write(d,') '); for i:=1 to 5 do begin if i<5 then b:=a[i+1]; if i=5 then b:=a[1]; end; for j:=1 to 5 do begin write(b[j]); a[j]:=b[j]; end; writeln; end; write('„«п ўл室  ­ ¦¬ЁвҐ Enter'); readln; end.
Alexei Santarov
Alexei Santarov
169
Язык Паскаль

readln(n); - считывает число целое (должно быть пятизначным, ина программа не имеет смысла)

a[5]:=n mod 10;
a[4]:=n div 10 mod 10;
a[3]:=n div 100 mod 100 mod 10;
a[2]:=n div 1000 mod 1000 mod 100 mod 10;
a[1]:=n div 10000 mod 10000 mod 1000 mod 100 mod 10;
Запиывает в ячейки массива цифры этого числа
Но код избыточный
a[5]:=n mod 10;
a[4]:=n div 10 mod 10;
a[3]:=n div 100 mod 10;
a[2]:=n div 1000 mod 10;
a[1]:=n div 10000 mod 10;
Делало бы тоже самое.

То есть если мы имеем число 12345
То будет массив (1,2,3,4,5)

for d:=1 to 4 do begin
write(d,') ');
for i:=1 to 5 do begin
if i<5 then b:=a[i+1];
if i=5 then b:=a[1];
end;
for j:=1 to 5 do begin
write(b[j]);
a[j]:=b[j];
end;
Эта часть сдвигает элементы массива и выводит их на экран 4 раза
Подробнее:
write(d,') '); выводит 1)

for i:=1 to 5 do begin
if i<5 then b:=a[i+1];
if i=5 then b:=a[1];
end;

записывает в массив b элементы массива a сдвинув на 1 по кругу (тоже можно оптимизировать)
Если было (1,2,3,4,5) то в b будет (2,3,4,5,1)

for j:=1 to 5 do begin
write(b[j]);
a[j]:=b[j];
end;
Одновременно выводит на экран элементы массива b и заполняет массив a такими же элементами (со сдвигом)

В результате на экране должно быть (при условии что в качестве исходных данных было бы число 12345)
1)23451
2)34512
3)45123
4)51234
СИ
Серёга Ивахненко
1 849
Лучший ответ
самое важное - она не работает
Программа по идее должна последнюю цифру числа ставить на 1 место.
Т. е. если на вход будет введено число 12345, то получится 23451.
Но если подать 123, то будет выведено 01230.
Что не есть правильно!
И ещё если на вход подать 98765, то программа завершится аварийно, т. к. n - Integer.
Проще было бы написать вот такую программу:
var S : String; C : Char;
begin
Write('Введите натуральное число: '); ReadLn(S);
C := S[1]; Delete(S, 1, 1); S := S + C;
WriteLn(S);
end.
Гаргоэль не учёл одну особенность: максимальное значение типа Integer = 32767
Иван Дроздов
Иван Дроздов
67 359
Формируется массив a[ i ], затем его элементы передают массиву b[ i ] и выводят на экран.
Ты где берешь такие коды? Запусти этот код в Паскале и увидишь, что она делает. Только так сможешь чему-то научиться.
BK
Batyr Klychev
29 246
если не ошибаюсь, она выводит число по цифрам на экран Например, введено число 58966, на экране будет 5 8 9 6 6, ну вобщем давно я этим не занимался...
задачи решает, паскаль по-моему
Школа №40
Школа №40
466
Вроде паскаль, а что делает он.... хз...
МN
Максим Nn
122