Дан одномерный массив X(N)
Помогите пожалуйста решить задачу в Pascal ABC!
Дан одномерный массив X(N) .Найти наибольший элемент (MAX), Преобразовать исходный массив таким образом ,чтобы все элементы по модулю не равные (MAX) заменились нулями,остальные единицами. Решение через randomize почему-то оказалось не верным. Программа написанная ниже тоже оказалась не верной. Помогите сделать пытаюсь сдать задачу не первый раз и всё время не принимают. program p1; var x:array[1..100] of integer; max,i,n:integer; begin write('Введите количество элементов='); readln(n); writeln('Исходный массив'); randomize; for i:=1 to n do begin x[i]:=random(101)-50; write(x[i]:3); if (x[i]>=max) then max:=x[i]; end; writeln; writeln('Новый массив'); for i:=1 to n do begin if (abs(x[i])=max) and (x[i]<>max) then x[i]:=1; if (x[i]<>max) and (abs(x[i])<>max) then x[i]:=0; write(x[i]:3); end; readln end. |
Мне кажется, Вы тут чего-то накрутили лишнего:
if (abs(x[i])=max) and (x[i]<>max) then x[i]:=1; if (x[i]<>max) and (abs(x[i])<>max) then x[i]:=0; Попробуйте вместо этого так: if abs(x[i])=max then x[i]:=1 else x[i]:=0; И потом - раз речь идет о модулях, то лучше позволить элементам массива принимать не только положительные, но и отрицательные значения, для чего строку x[i]:=random(101)-50; заменить, например, на x[i]:=50-random(101); и изменить формат вывода чисел с 3 на 4. Но, правда, в этом случае придется явно задать исходное значение max, поставив после randomize; строку max:=-60; Впрочем, сейчас проверю. Ну да, всё правильно, проверено. Правда, не на АВС (этой дряни я у себя на компе не потерплю), а на Free, но работает: Код:
program p1; |
Часовой пояс GMT +4, время: 00:28. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.