+ Ответить в теме
Показано с 1 по 8 из 8

Тема: Pascal.Массивы.Перестановка элементов

  1. #1
    dummy Gollum is on a distinguished road
    Регистрация
    10.01.2018
    Сообщений
    3
    Вес репутации
    0

    Question Pascal.Массивы.Перестановка элементов

    PascalABC.NET
    Дан целочисленный вектор а(n).Найти наименьшее из четных чисел,определить его индекс и поменять местами с макс. элементом.Вывести исходный вектор,полученный результат и преобразованный вектор.
    Вот что получилось у меня.Объясните,что не так,пожалуйста.
    Код :
    1. program zadanie2;
    2.   const n=10;
    3.   var a: array[1..n] of integer;
    4.       i,min,max,minind,z: integer;
    5.     begin
    6.       min:=maxint;
    7.       writeln('Введите ',n,' элементов массива:' );
    8.          for i:=1 to n do
    9.              read(a[i]);
    10.           for i:=1 to n do
    11.             if (a[i] mod 2=0)and(a[i]<min) then
    12.               begin
    13.                  min:=a[i];
    14.                  minind:=i;
    15.               end;
    16.         writeln('Минимальный четный элемент: ',min);
    17.         writeln('Индекс минимального четного элемента: ',minind);
    18.       max:=a[i];
    19.       for i:=2 to n do
    20.           if a[i]>max then max:=a[i];
    21.              Writeln('Максимальный элемент массива:',max);
    22.             i:=min;
    23.             min:=max;
    24.             max:=i;
    25.           for i:=1 to n do
    26.           write(a[i],' ');
    27.    end.
    ghjk.jpg

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    coder garmayev is on a distinguished road
    Регистрация
    19.12.2013
    Адрес
    Irkutsk
    Возраст
    28
    Сообщений
    26
    Вес репутации
    5

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Код :
    1. type mas = array [1..10] of integer;
    2. const n = 10;
    3. function readArray: mas;
    4. var i: integer;
    5.     a: mas;
    6. begin
    7.     for i:=1 to n do read(a[i]);
    8.     readArray:= a;
    9. end;
    10.  
    11. procedure writeArray(a: mas);
    12. var i: integer;
    13. begin
    14.     for i:=1 to n do
    15.     begin
    16.         write(a[i]);
    17.         write(' ');
    18.     end;
    19.     writeln;
    20. end;
    21.  
    22. procedure findMin(a: mas; min: integer; var value, index: integer);
    23. var i: integer;
    24. begin
    25.     index:= -1;
    26.     for i:=1 to n do
    27.     if ( (a[i] mod 2 = 0) and (a[i] < min) ) then
    28.     begin
    29.         value:= a[i];
    30.         index:= i;
    31.         min:= a[i];
    32.     end;
    33. end;
    34.  
    35. procedure findMax(a: mas; max: integer; var value, index: integer);
    36. var i: integer;
    37. begin
    38.     index:= -1;
    39.     for i:=1 to n do
    40.     if ( a[i] > max ) then
    41.     begin
    42.         value:= a[i];
    43.         index:= i;
    44.         max:= a[i]
    45.     end;
    46. end;
    47.  
    48. var a: mas;
    49.     min, minIndex, max, maxIndex, buffer: integer;
    50. begin
    51.     a:= readArray();
    52.     findMin(a, 32767, min, minIndex);
    53.     findMax(a, -32767, max, maxIndex);
    54.     writeArray(a);
    55.     write(min,' ',minIndex);
    56.     writeln;
    57.     buffer:= a[minIndex];
    58.     a[minIndex]:= a[maxIndex];
    59.     a[maxIndex]:= buffer;
    60.     writeArray(a);
    61. end.

    Как-то так

  4. #3
    dummy Gollum is on a distinguished road
    Регистрация
    10.01.2018
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Спасибо большое!

  5. #4
    Двум смертям не бывать... senior developer Oleg_Rus is on a distinguished road Аватар для Oleg_Rus
    Регистрация
    16.10.2006
    Адрес
    г.Улан-Удэ, респ.Бурятия, Российская Федерация
    Возраст
    28
    Сообщений
    330
    Вес репутации
    13

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    В твоем решении:
    1. Ты не сохраняешь индекс максимального элемента
    2. Неправильная перестановка элементов

    Посмотри решение выше Там все вынесено на функции/процедуры
    readArray и writeArray - соответственно чтение и вывод массива
    процедуры findMin и fnidMax - поиск минимального и максимального элемента с сохранением индекса
    в основном теле программы идет вызов всех вышеописанных процедур и функций и перестановка необходимых элементов
    e-mail: garmayev@yandex.ru
    ---------------------------------------------------------------------------
    <a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmayev&sert=2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>

  6. #5
    Moderator Куратор
    system architect
    dr.Jekill will become famous soon enough dr.Jekill will become famous soon enough
    Регистрация
    03.01.2009
    Адрес
    Voronezh
    Сообщений
    509
    Вес репутации
    12

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Позволю себе сделать небольшое дополнение, которое не влияет на правильность результата, а только на скорость выполнения программы.
    Для решения данной задачи достаточно 2 циклов:
    - в одном ввод массива, нахождение max и min, вывод исходного массива;
    - во втором вывод преобразованного массива.
    Нет религии выше истины

  7. #6
    coder garmayev is on a distinguished road
    Регистрация
    19.12.2013
    Адрес
    Irkutsk
    Возраст
    28
    Сообщений
    26
    Вес репутации
    5

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Цитата Сообщение от dr.Jekill Посмотреть сообщение
    Позволю себе сделать небольшое дополнение, которое не влияет на правильность результата, а только на скорость выполнения программы.
    Для решения данной задачи достаточно 2 циклов:
    - в одном ввод массива, нахождение max и min, вывод исходного массива;
    - во втором вывод преобразованного массива.
    Нууу, оптимальный код я как-то даже не заморачивался =))) постарался написать "красиво", когда все аккуратно завернуто в функции и процедуры =))) для полного экстремизма можно все это завернуть в модуль, который отрабатывает автоматически при подключении. Т.о. весь код программы может свестись до 3 строк

    uses myModule;
    begin
    end.

  8. #7
    dummy Gollum is on a distinguished road
    Регистрация
    10.01.2018
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Цитата Сообщение от dr.Jekill Посмотреть сообщение
    Для решения данной задачи достаточно 2 циклов:
    - в одном ввод массива, нахождение max и min, вывод исходного массива;
    - во втором вывод преобразованного массива.
    У меня не выходит сделать с меньшим количеством циклов(

  9. #8
    coder garmayev is on a distinguished road
    Регистрация
    19.12.2013
    Адрес
    Irkutsk
    Возраст
    28
    Сообщений
    26
    Вес репутации
    5

    По умолчанию Re: Pascal.Массивы.Перестановка элементов

    Код :
    1. max:= -32000;
    2. min:= 32000;
    3.  
    4. for i:=1 to n do
    5. begin
    6.   read(a[i]);
    7.   if (a[i] > max) then
    8.   begin
    9.     max:= a[i];
    10.     maxIndex:= i;
    11.   end else if ( a[i] < min ) then
    12.   begin
    13.     min:= a[i];
    14.     minIndex:= i;
    15.   end;
    16. end;
    17.  
    18. writeln(min, minIndex);
    19. writeln(max, maxIndex);
    20.  
    21. for i:=1 to n do write(a[i]);

    Как-то так в два цикла должно быть.

+ Ответить в теме

Похожие темы

  1. Перестановка элементов в массиве
    Дан массив размером n<20, как поменять элементы относительно элемента(ов), находящихся по середине? Еще нужно учесть, что массив может состоять как...
    от silencer в разделе C и C++
  2. C++. Массив. Перестановка элементов.
    Всем привет. Помогите реализовать следующую задумку. Имеем массив 400 на 400. Аналог - декартовая С.К. Массив динамический 3-х мерный. 1, 2 - это...
    от Russalochka в разделе C и C++
  3. Pascal, сформировать одномерные массивы, составленные из мин. элементов столбцов!
    Для каждой из двух матриц (A и B, где n=10, m=5, k=7, l=6) сформировать одномерные массивы, составленные из минимальных элементов столбцов. Оформить...
    от Pascal.net в разделе задачи на Паскале и Delphi
  4. Динамические массивы. Вставка элементов.
    Господа специалисты, пожалуйста, помогите добавить новые элементы в середину динамического массива. Делаю следующим образом: type ...
    от Sunspot в разделе Delphi и Pascal
  5. Каким макаром JScript интерпретирует массивы элементов?
    1) Имею такой код: var oNode = fnCreate("FIELDSET","","",oNode); var oNode = fnCreate("FIELDSET","","",oNode); var txt =...
    от ILay в разделе JScript, VBScript, DHTML...

Ваши права

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