23.12.2015, 22:42 | #1 (permalink) |
Новичок
Регистрация: 23.12.2015
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Массив годов и работа с числом. Pascal, PascalABC
В массиве данных найти год, у которого разница между наибольшей и наименьшей среднемесячными температурами была бы минимальной. Дано некое число. Выбросить из него наибольшую и наименьшую цифру. Если наиболее высокая цифра не одна, выбросить их все, аналогично поступить с наименьшей цифрой. Если нельзя полное решение, то хотя бы подсказку.Благодарю |
23.12.2015, 22:42 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Предлагаю к вашему вниманию топики, которые по содержанию схожи с вашей темой Массив записей, Pascal Работа с файлами и динамический массив. Delphi Pascal: Числа, не входящие в одномерный массив Двухмерный массив, Turbo Pascal 7.0 |
24.12.2015, 10:36 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Несколько пояснений. 1. Поскольку задача решена через строковый формат, максимальная длина числа составляет 255 цифр. 2. Программа написана на Free Pascal. Естественно, оттестирована. За возможные глюки этого идиотского АВС (может закапризничать Val) автор не отвечает. Код:
Var S:String; Q,Qmin,Qmax:Byte; i,Code,L:Integer; b:boolean; Begin Repeat b:=true; Writeln('Enter the number:'); Readln(S); L:=Length(S); for i:=1 to L do if (Ord(S[i])<48) or (Ord(S[i])>57) then begin b:=false; Writeln('Only digits allowed!'); end; Until b; Val(S[1],Qmin,Code); Val(S[1],Qmax,Code); for i:=2 to L do begin Val(S[i],Q,Code); if Q<Qmin then Qmin:=Q; if Q>Qmax then Qmax:=Q; end; i:=0; Repeat Inc(i); Val(S[i],Q,Code); if (Q=Qmax) or (Q=Qmin) then begin Delete(S,i,1); Dec(i); Dec(L); end; Until i=L; Writeln('Result:'); Writeln(S); Readln End. |
|
24.12.2015, 11:21 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Const NofY=10; {number of years} Var T:Array[1..NofY,1..12] of Integer; i,j,Imin:Byte; Min,Max,Dif,MinDif:Integer; Begin Randomize; Writeln('Medium temperatures:'); Writeln(' Jn Fb Mr Ap My Ju Jl Ag Sp Oc Nv Dc'); for i:=1 to NofY do begin write(i+2019); for j:=1 to 12 do begin T[i,j]:=-Abs(6-j)*6+Random(49); write(T[i,j]:4,' '); end; writeln; end; MinDif:=200; for i:=1 to NofY do begin Min:=100; Max:=-100; for j:=1 to 12 do begin if T[i,j]<Min then Min:=T[i,j]; if T[i,j]>Max then Max:=T[i,j]; end; if (Max-Min)<MinDif then begin Imin:=i; MinDif:=(Max-Min); end; end; Writeln('Result: year ',Imin+2019,', difference ',MinDif); Readln End. |
|
24.12.2015, 12:42 | #4 (permalink) |
Новичок
Регистрация: 23.12.2015
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Cпасибо вам большое. На ABC все работает, задачу понял.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|