Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2015, 22:42   #1 (permalink)
Solom1k
Новичок
 
Регистрация: 23.12.2015
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массив годов и работа с числом. Pascal, PascalABC

Добрый вечер, участники форума. Помогите, пожалуйста
В массиве данных найти год, у которого разница между наибольшей и наименьшей среднемесячными температурами была бы минимальной.
Дано некое число. Выбросить из него наибольшую и наименьшую цифру. Если наиболее высокая цифра не одна, выбросить их все, аналогично поступить с наименьшей цифрой.
Если нельзя полное решение, то хотя бы подсказку.Благодарю
Solom1k вне форума   Ответить с цитированием

Старый 23.12.2015, 22:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Предлагаю к вашему вниманию топики, которые по содержанию схожи с вашей темой

Массив записей, Pascal
Работа с файлами и динамический массив. Delphi
Pascal: Числа, не входящие в одномерный массив
Двухмерный массив, Turbo Pascal 7.0

Старый 24.12.2015, 10:36   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Solom1k Посмотреть сообщение
Дано некое число. Выбросить из него наибольшую и наименьшую цифру. Если наиболее высокая цифра не одна, выбросить их все, аналогично поступить с наименьшей цифрой.
Пожалуйста.
Несколько пояснений.
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 24.12.2015, 11:21   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Solom1k Посмотреть сообщение
В массиве данных найти год, у которого разница между наибольшей и наименьшей среднемесячными температурами была бы минимальной.
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 24.12.2015, 12:42   #4 (permalink)
Solom1k
Новичок
 
Регистрация: 23.12.2015
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Cпасибо вам большое. На ABC все работает, задачу понял.
Solom1k вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:45.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.