Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 20.01.2020, 17:44   #1
AndrewFrog
 
Регистрация: 15.01.2020
Сообщений: 4
По умолчанию Можно ли упростить код?

Возможно ли как-то упростить данный код?
Составить программу, которая заполняет целочисленный массив размерностью 20 случайными отрицательными и положительными числами в диапазоне от -10 до 10 и выводит его. Сформировать новый массив(ы) в соответствии с заданием и вывести его. Массив, содержащий сумму четных отрицательных, четных положительных, нечетных отрицательных и нечетных положительных элементов массива и упорядоченный в порядке убывания абсолютных величин.

Код:
const c = 20;
  var
    a: array [1..c] of integer;
    b: array [1..4] of integer;
    n: integer;
    i,j: integer;
    sumotrch: integer; //peremennay dly hraneniy summy elementov s otricatelnimi chetnimi znacheniami
    sumpolch: integer; //peremennay dly hraneniy summy elementov s pologitelnimi chetnimi znacheniami
    sumotrnech: integer; //peremennay dly hranenia summy elementov s otricatelnimi nechetnimi znacheniami
    sumpolnech: integer; //peremennay dly hranenia summy elementov s pologitelnimi nechetnimi znacheniami
    obm: integer;
       begin
        Randomize;
        n:= 20;
        writeln('Ishodnyi massiv: ');
        for i:= 1 to n do
    begin
      a[i]:= random(21)-10;
      write(a[i]:5);
      if i mod 10 = 0 then
        writeln;
    end;
  sumotrch:= 0;
  sumpolch:= 0;
  sumotrnech:= 0;
  sumpolnech:= 0;
  for i:= 1 to n do
    if a[i] mod 2 = 0 then   //uslovie dly otbora elementov po priznaku chetnosti
      if a[i] < 0 then       //uslovie po otboru elementov po priznaku otricatelnosti znachenia
        sumotrch:= sumotrch + a[i]
      else                      //uslovie po otboru elementov po priznaku pologitelnosti znachenia
        sumpolch:= sumpolch + a[i]
    else
      if a[i] < 0 then            //uslovie po otboru elementov po priznaku otricatelnosti znachenia
        sumotrnech:= sumotrnech + a[i]
      else                        //uslovie po otboru elementov po priznaku pologitelnosti znachenia
        sumpolnech:= sumpolnech + a[i];
  writeln;
  writeln('Summa elementov s otricatelnimi chetnimi znacheniami: ',sumotrch);
  writeln('Summa elementov s pologitelnimi chetnimi znacheniami: ',sumpolch);
  writeln('Summa elementov s otricatelnimi nechetnimi znacheniami: ',sumotrnech);
  writeln('Summa elementov s pologitelnimi nechetnimi znacheniami: ',sumpolnech);
  b[1]:= sumotrch;
  b[2]:= sumpolch;
  b[3]:= sumotrnech;
  b[4]:= sumpolnech;
  for i:= 1 to 3 do
    for j:= 1 to 4-i do
      if b[j] > b[j+1] then
        begin
          obm:= b[j];
          b[j]:= b[j+1];
          b[j+1]:= obm;
        end;
  writeln('Otsortirovannie po absolutnim velichinam massiv vichelenia summ: ');
  for i:= 1 to 4 do
    begin
      write(b[i]:5);
        if i mod 10 = 0 then
        writeln;
    end;
  readln;
end.
AndrewFrog вне форума Ответить с цитированием
Старый 21.01.2020, 16:09   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,814
По умолчанию

Код:

program zadanie;

var
  arr: array [0..19] of integer;
  itog: array [0..3] of integer;
  i, j: integer;
  sort: integer;

begin  
   
  randomize;        
  
  for i := 0 to 19 do
  begin
    arr[i] := random(21) - 10;
    writeln(i + 1, ') ', arr[i]);
    
    if (arr[i] < 0) and (arr[i] mod 2 = 0) then  itog[0]:=itog[0]+arr[i];  // отрицательное четное
    if (arr[i] >=0) and (arr[i] mod 2 = 0) then  itog[1]:=itog[1]+arr[i];  // положительное четное
    if (arr[i] < 0) and (arr[i] mod 2 <> 0) then itog[2]:=itog[2]+arr[i];  // отрицательное не четное
    if (arr[i] >=0) and (arr[i] mod 2 <> 0) then itog[3]:=itog[3]+arr[i];  // положительное не четное
  
  end;
  
  writeln('Сумма отрицательных четных: ',itog[0]);
  writeln('Сумма положительных четных: ',itog[1]); 
  writeln('Сумма отрицательных не четных: ',itog[2]);
  writeln('Сумма положительных не четных: ',itog[3]);
  writeln('Сортируем массив ИТоговых сумм...');
  for i := 0 to 2 do
    for j := 0 to 2 - i do
      if itog[j] > itog[j + 1] then
      begin
        sort := itog[j];
        itog[j] := itog[j + 1];
        itog[j + 1] := sort;
      end;
  writeln('1 ',itog[0]);
  writeln('2 ',itog[1]); 
  writeln('3 ',itog[2]);
  writeln('4 ',itog[3]);
end.
from dark to light)

Последний раз редактировалось Алексей_2012; 21.01.2020 в 16:27.
Алексей_2012 вне форума Ответить с цитированием
Старый 21.01.2020, 16:11   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,990
По умолчанию

попробуй не случайный массив.
-8 2 3 9 -8 2 3 9 -8 2 3 9 -8 2 3 9 -8 2 3 9 (вот такой)

Цитата:
и упорядоченный в порядке убывания абсолютных величин.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно упростить запрос? qqq`` SQL, базы данных 2 28.01.2018 00:49
Можно ли упростить формулу? Ship_1 Помощь студентам 9 30.11.2016 22:02
Можно ли как то упростить программу? vvmcpp Помощь студентам 7 14.02.2014 13:42
Как можно упростить код. Predator199 PHP 14 05.12.2012 13:39
Можно ли упростить? Helennna Microsoft Office Excel 4 16.07.2010 12:15


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS