Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2019, 19:24   #1
Сyberbitch
Пользователь
 
Регистрация: 09.12.2019
Сообщений: 12
По умолчанию Задание с массивом

Помогите решить.
*Условие*
Массив заполняется произвольно. Количество элементов массива произвольное (не
менее 10 для одномерного, не менее 5х5 для двумерного. Метод сортировки произвольный.
*Само задание*
Дана последовательность, расположить ее отрицательные элементы по
убыванию.
Сyberbitch вне форума Ответить с цитированием
Старый 15.12.2019, 19:55   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

В чем вы видите помощь? Помочь не значит сделать за вас. А вопросов вы не задали.
Да, есть другой путь - получить готовое решение с комментариями. Но за такое обычно надо платить.
Arigato на форуме Ответить с цитированием
Старый 30.12.2019, 15:30   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вот сделал, скучно было, только по убыванию все элементы, а не отрицательные, доработать немного, попробуйте сами.

Есть 2 процедуры, в одной вводится, сортируется и выводится матрица, а во второй массив. В зависимости от выбора пользователя происходит то или иное действие.

Код:

uses crt; // модуль для работы очистки экрана при помощи процедуры clrscr

//ВВОД ДВУМЕРНОГО МАССИВА С РАЗМЕРОМ БОЛЬШЕ ЧЕМ 5 ЭЛЕМЕНТОВ

procedure matrix();
var
  i, j, k,size_m: integer;
  buf: real;
  m:array of array of real;
begin
  clrscr; //чистка экрана 
  writeln('введите размер матрицы, не менее 5х5 (число 5) ');
  readln(size_m); // ввод размера квадратной матрицы
  
  if (size_m < 5) then writeln('Слишком маленький размер матрицы!') else
  begin
    
    
    setlength(m, size_m); // инициализация строк и столбцов массива
    
    for i := 0 to size_m - 1 do
      setlength(m[i], size_m); 
   
    

//ВВОД МАТРИЦЫ
    for i := 0 to size_m - 1 do
      for j := 0 to size_m - 1 do
      begin
        writeln('Введите [', i, ', ', j, '] элемент матрицы: ');
        readln(m[i][j]);
      end;
    

//СОРТИРОВКА
    k := size_m * size_m;
    
    for i := 0 to (k - 1) do
      for j := 0 to (k - 1) - i - 1 do
        if m[j div size_m, j mod size_m] < m[(j + 1) div size_m, (j + 1) mod size_m] then
        begin
          buf := m[j div size_m, j mod size_m];
          m[j div size_m, j mod size_m] := m[(j + 1) div size_m, (j + 1) mod size_m];
          m[(j + 1) div size_m, (j + 1) mod size_m] := buf;
        end;
    
    
    writeln('');
    
    writeln('Ваша отсортированная матрица: ', '[', size_m, ']');
    
//ВЫВОД МАТРИЦЫ

    for i := 0 to size_m - 1 do
    begin
      for j := 0 to size_m - 1 do
        write(m[i][j], ' ');
      writeln('');    
    end;   
    
  m:=nil;
  end;

  writeln('Нажмите любую кнопку...');
  readln;

end;





//ВВОД, СОРТИРОВКА И ВЫВОД ОДНОМЕРНОГО МАССИВА
procedure arrays();
var
  a: array of real;
  i, j,size: integer;
  buf: real;
  flag: boolean;
begin
  clrscr;
  writeln('Введите размерность массива');
  readln(size); // ВВОД РАЗМЕРА
  
  if (size < 10) then writeln('Введите размер больше или равно 10 элементам!') else
  begin
        
    
    
    //инициализация
    setlength(a, size);
    
    //ввод элементов массива
    for i := 0 to size - 1 do
    begin
      writeln('Input ', i + 1, ' element: ');
      readln(a[i]);
    end;
    
    
    //сортировка
    
    for i := 0 to size - 2 do
    begin
      flag := True;
      for j := 0 to size - 2 do
      begin
        if a[j] < a[j + 1] then
        begin
          buf := a[j];
          a[j] := a[j + 1];
          a[j + 1] := buf;
          flag := False;
        end;
      end;
      if flag then break;
    end;
    
    
    //вывод массива
    writeln('Массив заполнен и отсортирован!');
    writeln('');
    
    for i := 0 to size - 1 do
      writeln(i + 1, ') array[', i, '] = ', a[i]);
    
    writeln('Массив показан!');
    
    a:=nil; //ОЧИСТКА ПАМЯТИ
    
  end;
  
  writeln('Нажмите любую кнопку...');
  readln;
end;



//МЕНЮ ДЛЯ ВЫБОРА ПРОЦЕДУРЫ

var
  menu:byte;
  ok:boolean;
begin
  

  
  repeat
    clrscr;
    
    ok:=false;
    
    writeln('Нажмите 1 для ввода одномерного массива');
    writeln('Нажмите 2 для ввода двумерного массива');  
    writeln('Для выхода нажать цифру 0');
    
    readln(menu);
    
    case menu of
      
      1: arrays();    
      2: matrix();           
      0: ok:=true;
    end;
  
  
    
  until (ok);

end.
from dark to light)

Последний раз редактировалось Алексей_2012; 30.12.2019 в 15:37.
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Задание с массивом Pinguin007 Помощь студентам 1 21.05.2016 19:00
задание с массивом Ляйсан) Общие вопросы Delphi 2 19.05.2013 22:53
Запутаное задание задание с массивом.Буду очень благодарен. Riko1 Общие вопросы C/C++ 2 22.10.2011 10:23
Задание с массивом в excele. Svetox Помощь студентам 2 28.05.2011 00:19
задание с массивом Baks1991 Помощь студентам 0 17.05.2011 10:43