Задан одномерный массив A(N) (N<=60). Посчитать сумму элементов находящихся между максимальным и минимальным элементами. Результат вывести на печать.
Program lll; var a:array [1..60] of integer; n,i,max,min,s:real; begin for i:=1 to 60 do begin write ('N=',i,':'); readln (a[i]); end; max:=1; min:=1; for i:=1 to 60 do begin if a [max]<a[i] then max:=i; if a [min]>a[i] then min:=i; end; if min>max then begin i:=max; max:=min; min:=i; end; for i:=min to max do S:=???????????????? writeln ('S=", s); readln; end.
Подскажите пожалуйста на месте ???? что надо написать, и скажите где ещё ошибки (если они есть). Заранее спасибо!
М
Просьба использовать теги при публикации кода! Исправлено. Lapp
Гость
10.11.2008 15:58
Не слишком ли много памяти для таких переменных n,i,max,min Не вижу инициализации S ну и должно следущее S:=S+a[i];
volvo
10.11.2008 16:15
Цитата
Не слишком ли много памяти для таких переменных n,i,max,min
Проблема не в этом, а в том, что ЭТОТ код никогда не будет компилироваться: i: Real и For i := ... - несовместимо по определению... Переменная i должна быть перечислимого типа...
Цитата
Не вижу инициализации S
Читай доки по языку, глобальная переменная инициализируется нулем, хотя закладываться на это не стОит... Сегодня она глобальная, завтра - нет, потом ищи проблему...
Гость
10.11.2008 16:34
Цитата
Проблема не в этом, а в том, что ЭТОТ код никогда не будет компилироваться: i: Real и For i := ... - несовместимо по определению... Переменная i должна быть перечислимого типа...
Это оже верно подмечено
но не согласен с
Цитата
Читай доки по языку, глобальная переменная инициализируется нулем, хотя закладываться на это не стОит... Сегодня она глобальная, завтра - нет, потом ищи проблему...
не все языки при объявлении переменной инициализируют ее нулем.
volvo
10.11.2008 20:36
Цитата
не все языки при объявлении переменной инициализируют ее нулем.
Ты знаешь, меня "все языки" в принципе не интересуют. Я не знаю их все, чтобы что-то о них говорить, да и ты тоже наверняка не знаешь... В данном случае достаточно того, что и компилятор Паскаля от фирмы Борланд, и вообще любой компилятор Паскаля, если он хочет хоть сколько-нибудь соответствовать iso7185, обнуляет глобальные переменные. А софистикой и подменой понятий ты на других форумах занимайся...
Гость
12.11.2008 1:20
Program Lob_3; Var A:array [1..60] of integer; i,max,min,s,n, imin, imax:integer; BEGIN write ('Введите число N='); readln (A[i]); for i:=1 to 5 do writeln (A[i]); max:=A[1]; imax:=1; for i:=1 to 5 do begin if A[i]>max then max:=A[i]; imax:=i end; min:=A[i]; imin:=1; for i:=1 to 5 do begin if A[i]<min then min:=A[i]; imin:=i; end; for i:=imin to imax do begin if ?????????? then S:=S+A[i] end; writeln ('S=', s); END.
.
Вот исправил, подскажите что на месте вопросов должно быть?
samec
12.11.2008 2:03
Program Lob_3; Var A:array [1..60] of integer; i,max,min,s,n, imin, imax:integer; BEGIN write ('Введите число N='); readln (A[i]); { <- просишь ввести число N - а вводишь что????} for i:=1 to 5 do {<- тут цикл, видимо должен быть не до 5 а как раз до неведённого тобою N} writeln (A[i]); {<- тут выводишь, ещё невведенные элементы массива на экран - ненадо так делать } {Не ввел элементы массива, а начинаешь среди них искать максимальный и минимальный - нехорошо.} max:=A[1]; imax:=1; for i:=1 to 5 do {<- тут цикл, видимо должен быть не до 5 а как раз до неведённого тобою N} begin if A[i]>max then max:=A[i]; imax:=i {<- таким образом ты никогда не найдешь НОМЕР максимального элемента....надо после IF использовать begin...end} end; min:=A[i]; {<- почему индекс i? а не единица????} imin:=1; for i:=1 to 5 do {<- опять цикл до пяти, а не до N} begin if A[i]<min then min:=A[i]; imin:=i; {<- писАл уже, скобки расставь операторные} end; for i:=imin to imax do begin if ?????????? then {<- а зачем тут это воообще???} S:=S+A[i] end; writeln ('S=', s); END.
форматируй текст программы - так многие ошибки гораздо легче заметить, нежели в сплошном тексте. вот
Гость
12.11.2008 3:27
ага. спасибо. замечания учёл. программа пашет! СПАСИБО!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.