| Помогите пожалуйста!!!! | 
|  | 
| 
| помогите решить задачу... Условие:
 в массиве В из 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 ] |  
|  |  |