Помогите понять цикл тут.
Вот задача: Дан массив чисел. Расставить их по убыванию.
Вот решение, но я не понимаю алгоритм.
Вот
FOR J := 1 TO N-1 DO
BEGIN
NEW := MAS[N];
К := N;
Что значит FOR J := 1 TO N-1 DO ?
А что значит NEW := MAS[N] и К := N;
Кто объяснит эту часть кода?
Вот весь код.
1. CONST M = 100;
2. VAR MAS : ARRAY[1..M] OF INTEGER;
3. I, J, K, NEW, N : INTEGER;
4. BEGIN
5. WRITE('BBЕДИTE РАЗМЕР МАССИВА N = ');
6. READLN(N);
7. WRITELN('BBЕДИTE N,' ЭЛЕМЕНТОВ МАССИВА');
8. FOR I := 1 TO N DO
9. READ(MAS[I]);
10.WRITELN;
11.FOR J := 1 TO N-1 DO
12.BEGIN
13.NEW := MAS[N];
14.К := N;
15.FOR I := N DOWNTO 1 DO
16.IF MAS[I]>NEW THEN
17.BEGIN
18.К := I;
19.NEW := MAS[I]
20.END;
21.MAS[K] := MAS[1];
22.MAS[1] := NEW;
23.FOR I := 1 TO N DO
24.WRITE(MAS[I] : 4);
25.WRITELN
26.END
Если ты спрашиваешь, что такое FOR, значит ты вообще не читал учебник. Хочешь, чтобы его тебе здесь пересказывали???
И могу тебя обрадовать: это не решение. Представленный код работает абсолютно неправильно.
for i := 1 to n-1 do begin
k := i;
for j := i + 1 to n do if mas[j] > max[k] then k := j;
if k <> i then begin
tmp := mas[i];
mas[i] := mas[k];
mas[k] := tmp
end
end
чет сложный алгоритм, ещё капсом да без отступов...
обычную пузырьковую сортировку написать не судьба?
FOR J := 1 TO N-1 DO
Присвоение переменной J значение 1, и совершать этот цикл, пока J не будет равен n-1, при каждом цикле J увеличивается на 1.
NEW := MAS[N]
Присвоение переменной NEW значение N элемента массива MAS
К := N
Присвоить значение N переменной K
Это называется сортировка вставками.
Вот ваш код с исправлениями (чтобы работал на самом деле) и исчерпывающими комментариями.
http://pastebin.com/cw0nCzxN
Самое важное исправление:
В каждом проходе цикла надо складывать найденный элемент не в первую ячейку, а в j-ю, иначе работать не будет.
На будущее:
1) Вот так надо форматировать код. Намного удобнее читать, не так ли?
2) Абстрактный массив стоит обзывать a или arr (от слова array, а не от слова massiv). Вы же не по-русски пишете, а латиницей, и ваш транслит выглядит убого. Если так вас научил ваш учитель программирования - он не прав.