Помогите пожалуйста!!!!
|
|
помогите решить задачу... Условие: в массиве В из 30 элементов определить диапазон значений элементов массива ( разность между максимальным и минимальным элементами). напишите пож. код задачи, за ранее благодарен)
|
|
|
массив одномерный? и по подробней напиши о диапазоне.
|
|
|
Quote (viper-klas) и по подробней напиши о диапазоне.
Что тут не понятного? Нужно вывести на вывод расстояние между максимальным и минимальным элементами. Вот код:
var a:array[1..30]of integer; i,q,w,p,pm:integer; begin p:=32000; for i:=1 to 30 do begin read(a[i]); if a[i]>pm then begin pm:=a[i];q:=i;end; if a[i]<p then begin p:=a[i];w:=i;end; end; if q>w then writeln(q-w) else writeln(w-q); end.
"Спасибо" принимается повышением репутации ( Зелёный плюсик:) ). Спасибо
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Quote (Berestovskiy) var a:array[1..30]of integer; i,q,w,p,pm:integer; begin p:=32000; for i:=1 to 30 do begin read(a[i]); if a[i]>pm then begin pm:=a[i];q:=i;end; if a[i]<p then begin p:=a[i];w:=i;end; end; if q>w then writeln(q-w) else writeln(w-q); end. Намного лучше будет p:=a[1]; pm:=a[1]; Зачем запоминать q и w? Выводить надо не q-w, а pm-p
№ 4 | Автор: AID |
2011-07-10, 20:41
|
Репутация: [ + 9 ]
|
|
№ 4 | Автор: AID |
2011-07-10, 20:41
|
Репутация: [ + 9 ]
|
|
|
Quote (AID) Выводить надо не q-w, а pm-p
Если так, то будет выводить максимальный элемент минус минимальный т.е. ответ будет не правильным..т.к. нам нужно вывести диапазон:)
Quote (AID) Намного лучше будет p:=a[1]; pm:=a[1]; А это для чего?
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
№ 5 | Автор: Berestovskiy |
2011-07-12, 15:33 | Изменено: Berestovskiy - Вт, 2011-07-12, 15:33
|
Репутация: [ + 211 ]
|
|
|
Quote (Berestovskiy) А это для чего? не помню как в паскале, но ты компили свой код? мне кажется что он будет давать ерор в a[i]>pm, так как pm ранее не задано и это плохо. а p:=32000; тоже не шик. если все значения будут 32000+? тогда твой код даст ошибку. Quote (Berestovskiy) Если так, то будет выводить максимальный элемент минус минимальный т.е. ответ будет не правильным..т.к. нам нужно вывести диапазон:) zheka просит от максимального отнимать минимальный(pm-p)? Так как говорит AID.
Меня все время преследуют умные мысли... но я быстрее!!!
|
|
|
Quote (guru) не помню как в паскале, но ты компили свой код? я сам себе ходячий компилятор, передал уйму задач и уже знаю где и что как будет работать))
Quote (guru) мне кажется что он будет давать ерор в a[i]>pm, так как pm ранее не задано и это плохо. изначально пм=0, ну можно было бы присвоить изначально -32000 с копейками..
Quote (guru) тоже не шик. если все значения будут 32000+? тогда твой код даст ошибку. просто я не помню максимальное ограничение типа integer ))
Quote (guru) определить диапазон значений элементов массива прочитай ещё раз, я на этом сайте уже делал эту задачу другому пользователю, просто Жека не толково условие написал
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Quote (Berestovskiy) просто я не помню максимальное ограничение типа integer )) знать конечно нужно но необязательно - есть такая штука как high() и low() - при определенном извращение они вернут максимальное и минимальное значение типа. Quote (Berestovskiy) изначально пм=0, изначально пм не 0, вернее возможно ноль а возможно -5698 или 16589, а может и ноль - переменная не инициализированная переменная по умолчанию должна принимать пустое значение - в паскале этим значением может оказаться и 0 и любая белеберда выпавшая из памяти Quote (Berestovskiy) ну можно было бы присвоить изначально -32000 с копейками.. это некорректная ерунда - работай с теми данными которые у тебя есть, что тебе мешает во временную переменную записать не 32000 а первое значение массива, которое будет первичным значением максимум и минимума и уже от него ты ищешь остальные, а так задавая хардом значение ты ограничиваешь себя в диапазоне поиска - в твоем случае значения больше 32000 как сказал guru не буду учитываться, и это было бы даже если бы указал макс значение интегер.
If you can't make it GOOD make it LOOK GOOD. B.Gates
|
|
|
Quote (DoVe) знать конечно нужно но необязательно - есть такая штука как high() и low() - при определенном извращение они вернут максимальное и минимальное значение типа.
не слышал о таком в паскале:) Quote (DoVe) изначально пм не 0, вернее возможно ноль а возможно -5698 или 16589, а может и ноль - переменная не инициализированная переменная по умолчанию должна принимать пустое значение - в паскале этим значением может оказаться и 0 и любая белеберда выпавшая из памяти
Если мне не отказывает память - то всегда ноль выдавало, и благодаря контестерам и прочим я в этом убедился
Quote (DoVe) это некорректная ерунда - работай с теми данными которые у тебя есть, что тебе мешает во временную переменную записать не 32000 а первое значение массива, которое будет первичным значением максимум и минимума и уже от него ты ищешь остальные, а так задавая хардом значение ты ограничиваешь себя в диапазоне поиска - в твоем случае значения больше 32000 как сказал guru не буду учитываться, и это было бы даже если бы указал макс значение интегер.
тогда пришлось было бы делать два цикла, в первом считать все числа, после присвоить pm:=a[1]; и после сделать опять цикл на проверку..
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Quote (Berestovskiy) Если мне не отказывает память - то всегда ноль выдавало, и благодаря контестерам и прочим я в этом убедился это зависит от того какой адресс в памяти будет под переменную выделено, если пустое - то наверное 0, если нет - то наверное не ноль. старые данные из памяти не выгружаются(точнее не все программы ее выгружают) а удаляются только к ним адреса(или что-то в этом роде).
И на конец народная мудрость: "7 раз проверь - 1 раз отрежь"! Quote (Berestovskiy) я сам себе ходячий компилятор, передал уйму задач и уже знаю где и что как будет работать))
Меня все время преследуют умные мысли... но я быстрее!!!
|
|
|
Quote (guru) если пустое - то наверное 0, если нет - то наверное не ноль.
железная логика)))
Quote (guru) "7 раз проверь - 1 раз отрежь"!
7 раз отмерь, вообщето)))
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Quote (Berestovskiy) не слышал о таком в паскале:) это твое упущение, если ты не слышал о чем то это не значит что этого нет, а изобретение велосипеда и не нужно и не к чему хорошему не приводит Quote (Berestovskiy) то всегда ноль выдавало, твои несколько десятков/сотен/тысяч тестов - это не 100 процентный результат, все должно быть обосновано и отлажено, написанный софт падает в непредсказуемых местах и в непредсказуемое время, и такая ошибка оказывается очень часто банальна Quote (Berestovskiy) Quote (guru) если пустое - то наверное 0, если нет - то наверное не ноль. если свободной памяти хватает под приложение, то ему выделится чистая ячейка(и) в которой буду хранится переменный в НУЛЛах. (как происходит на серверах контестеров и с простыми паскалевскими программками). если программа тяжеловесная, требует частого обращения к памяти то очень скоро произойдет ссылка пустой переменной на занятую ячейки в которой будет чушь...
железная логика)))
If you can't make it GOOD make it LOOK GOOD. B.Gates
№ 12 | Автор: DoVe |
2011-07-17, 22:53 | Изменено: DoVe - Пн, 2011-07-18, 10:49
|
Репутация: [ + 48 ]
|
|
|