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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 18:48   #1
U4-nik
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 29
По умолчанию Сортировка массива(Паскаль)

Помогите с написанием программы Пожалуйста!!!
вот условие:


Отсортировать данный массив и подсчитать количество чисел в массиве, больших числа, запрашиваемого у пользователя(использовать сортировку простым выбором)

заранее огромное спасибо!!!
U4-nik вне форума Ответить с цитированием
Старый 15.05.2011, 19:03   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Помогите с написанием программы Пожалуйста!!!
Какая помощь вам нужна? Написать за вас весь код? Если да - не стесняйтесь, скажите прямо, я напишу. Если же вам нужна действительно помощь - задавайте вопрос.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 15.05.2011, 19:31   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Код:
var
  Mas: array of Integer;
  MasLength, I, J: Integer;
  KeyNum, KeyCount: Integer;

procedure SwapInt(var A, B: Integer);
var
  C: Integer;
begin
  C := A;
  A := B;
  B := C;
end;

begin
  Write('Enter array length: ');
  Readln(MasLength);

  while (MasLength < 1) do
  begin
    Write('Enter correct array length, please: ');
    Readln(MasLength);
  end;

  SetLength(Mas, MasLength);
  Writeln('Enter array values: ');

  for I := MasLength - 1 downto 0 do
    Read(Mas[I]);
  Readln;

  Writeln('Enter key num: ');
  Readln(KeyNum);

  for I := MasLength - 1 downto 0 do
  begin
    for J := I downto 0 do
      if Mas[I] > Mas[J] then
        SwapInt(Mas[I], Mas[J]);
  end;

  KeyCount := 0;
  for I := MasLength - 1 downto 0 do
    if Mas[I] > KeyNum then
      KeyCount := KeyCount + 1;

  Writeln('The array have been sorted: ');
  for I := MasLength - 1 downto 0 do
    Write(Mas[I], #9);
  Writeln;
  Writeln('Count of nums which more than key num = ', KeyCount);

  Readln;

end.
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 15.05.2011 в 19:45.
Сtrl вне форума Ответить с цитированием
Старый 15.05.2011, 22:57   #4
U4-nik
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 29
По умолчанию

Огромное спасибо за код...только программа не работает...не могли бы вы перепаверить её, исправить ошибки?...пожалуйста
U4-nik вне форума Ответить с цитированием
Старый 16.05.2011, 02:07   #5
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Что именно не работает? Я проверил всё вроде нормально функционирует.
Антон Лысенко вне форума Ответить с цитированием
Старый 16.05.2011, 02:19   #6
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Код:

  for I := MasLength - 1 downto 0 do
  begin
    for J := I downto 0 do
      if Mas[I] > Mas[J] then
        SwapInt(Mas[I], Mas[J]);
  end;
а это точно сортировка простым выбором или может быть обменом? Или это одно и то же? Вроде бы нет!
вот сортировка которая вам нужна :
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  mass:array [1..100] of real;
  i, j, n: integer;
  x: real;
begin
 writeln('Enter size');
  read(n);
  writeln('enter value');
  for i:=1 to n do
    read(mass[i]);

  for i := 2 to n do
    begin
      x := mass[i];
      j := i-1;
      while (j>0) and (x<mass[j]) do
        begin
          mass[j+1] := mass[j];
          j := j-1;
        end;
      mass[j+1] := x;
    end;
  for i:=1 to n do
    write(mass[i]:8:2);
    readln;
    readln;
end.
кстати, код не мой, нашёл на этом же сайте
Антон Лысенко вне форума Ответить с цитированием
Старый 16.05.2011, 02:22   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
а это точно сортировка простым выбором или может быть обменом?
Обычная линейная сортировка, только с конца.
Цитата:
Огромное спасибо за код...только программа не работает...не могли бы вы перепаверить её, исправить ошибки?...пожалуйста
Ошибок нет. Возможно, ваш компилятор не поддерживает динамические массивы? В чем заключается ошибка?
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 16.05.2011, 09:58   #8
U4-nik
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Обычная линейная сортировка, только с конца.

Ошибок нет. Возможно, ваш компилятор не поддерживает динамические массивы? В чем заключается ошибка?
Ошибка в следующем:в объявлении массива пишет " ОЖИДАЛСЯ СИМВОЛ [ "
U4-nik вне форума Ответить с цитированием
Старый 16.05.2011, 10:00   #9
U4-nik
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Антон Лысенко Посмотреть сообщение
а это точно сортировка простым выбором или может быть обменом? Или это одно и то же? Вроде бы нет!
вот сортировка которая вам нужна :
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  mass:array [1..100] of real;
  i, j, n: integer;
  x: real;
begin
 writeln('Enter size');
  read(n);
  writeln('enter value');
  for i:=1 to n do
    read(mass[i]);

  for i := 2 to n do
    begin
      x := mass[i];
      j := i-1;
      while (j>0) and (x<mass[j]) do
        begin
          mass[j+1] := mass[j];
          j := j-1;
        end;
      mass[j+1] := x;
    end;
  for i:=1 to n do
    write(mass[i]:8:2);
    readln;
    readln;
end.
кстати, код не мой, нашёл на этом же сайте
Этот код только сортирует массив, а нужно чтобы ещё подсчитывалось количество чисел в этом массиве, больших числа , запрашиваемого у пользователя.
U4-nik вне форума Ответить с цитированием
Старый 16.05.2011, 18:41   #10
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Обычная линейная сортировка, только с конца.

Ошибок нет. Возможно, ваш компилятор не поддерживает динамические массивы? В чем заключается ошибка?
вбейте в Google "сортировка простым ВЫБОРОМ" и посмотрите что это за сортировка! А то что написали вы это сортировка ОБМЕНОМ (ПУЗЫРЬКОМ) и не надо людей дезинформировать.
Антон Лысенко вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива [Паскаль] Pein95 Помощь студентам 1 07.12.2010 21:41
сортировка массива паскаль dante92 Помощь студентам 7 11.05.2010 21:34
Паскаль. Сортировка массива Asira Помощь студентам 2 04.03.2010 16:54
паскаль. Сортировка массива. suv121 Помощь студентам 3 08.12.2009 17:41
Паскаль, сортировка массива! vlad1991 Паскаль, Turbo Pascal, PascalABC.NET 3 13.01.2009 22:57