Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 12.06.2006, 14:09   [включить плавающее окно]   #1
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
Exclamation Нахождение макс. и мин. элемента массива методом пузырька?

Люди, пожалуйста помогите решить задачу, Реализовать программу для нахождения максимального и минимального элементов массива целых чисел методом пузырька? Мне не понятен сам метод пузырька? Понял что мин. элемент будет 0 если массив от 0 до 20, а максимальный 20 так как пузырек отсортировывает рядом стоящие числа. Ладно кто сможет пожалуйста напишите мне... Я вас умоляю...?
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 12.06.2006, 17:42   [включить плавающее окно]   #2
Andron_
Мужской Заслуженный
 
Аватар для Andron_
 
Регистрация: 01.02.2004
Адрес: Новосибирск
warix юзай поисковики на эту тему, по пузырьку тьма инфы... ну или стучись в приват, или в аську...

Andron_ добавил :

вообще, если не сортировка имеется ввиду, сначала один проходится с одним условием, макс или мин элемент оказывается в конце массива, а потом с противоположным условием - мин или макс оказывается снова в конце.

Andron_ добавил :

вернее, если надо не сортировать, а только мин и макс найти
__________________
Дилетант широкого профиля. По совместительству преподаватель С/С++.
Andron_ вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.06.2006, 10:48   [включить плавающее окно]   #3
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
Здесь файл программы, кто поймет в чем дело, я искренне благодарю... Не сортируется что-то? Не знаю в чем причина, буду перечитывать книгу по PASCALю заново. Увы что поделать, если ни кто не может помочь?
Вложения
Тип файла: rar stasver2.rar (259 байт, 131 просмотров)
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 15.06.2006, 16:50   [включить плавающее окно]   #4
Phodopus
Мужской Продвинутый
 
Регистрация: 05.10.2005
Адрес: Санкт-Петербург
Видел файл, долго смеялся.
Он вообще компилироваться не должен..
Так нужно найти максимальный и минимальный элементы или отсортировать массив?
Или то, а затем другое?

Последний раз редактировалось Darthman; 15.06.2006 в 18:16.
Phodopus вне форума  
Ответить с цитированием
Непрочитано 15.06.2006, 18:18   [включить плавающее окно]   #5
Darthman
Мужской Опытный
 
Аватар для Darthman
 
Регистрация: 10.02.2003
Адрес: Москва
arr : array[1..n] of integer;
...
begin
...
n:=arr[i];


Извините, но тут дело не в непонимании методов пузырька или еще чем-то. Тут дело в банальном незнании языка, на котором Вы пишите. ЭТО компилироваться никогда не будет.

Darthman добавил :

Код:
program Sort;
const
  n = 100;
var
  myarray : array [0..n-1] of integer;
  i, j : integer;
  temp : integer;
begin
  for i:= 0 to n - 2 do
  for j:= 0 to n - 2 do
  if myarray[i] < myarray[i+1] then
  // меняем местами
  begin
    temp:= myarray[i];
    myarray[i]:= myarray[i+1]
    myarray[i+1]:= temp;
  end;
end.
Примерно так должно быть.
__________________
Если работает, лучше не трогай!
Darthman вне форума  
Ответить с цитированием
Непрочитано 16.06.2006, 11:54   [включить плавающее окно]   #6
@LeFaNt
Мужской Интересующийся
 
Регистрация: 30.06.2004
может быть все-таки так?
Код:
program Sort;
const  n = 100;
var  myarray : array [0..n-1] of integer;
  i, j : integer;  temp : integer;
begin  
  for i:= 0 to n - 2 do  
    for j:= i + 1 to n - 1 do  
      if myarray[i] < myarray[j] then  // меняем местами  
      begin    
         temp:= myarray[i];    
         myarray[i]:= myarray[j];
         myarray[j]:= temp;
      end;
end.
Классический пузырек... min = myarray[0]; max = myarray[n-1];
Хотя к min и max это не имеет прямого отношения. Это можно сделать и проще... За 1 проход цикла.
Darthman, и что-то я сомниваюсь, что предыдущая прога будет работать.
при чем там j если она вообще не используется
@LeFaNt вне форума  
Ответить с цитированием
Непрочитано 16.06.2006, 18:24   [включить плавающее окно]   #7
Darthman
Мужской Опытный
 
Аватар для Darthman
 
Регистрация: 10.02.2003
Адрес: Москва
Согласен. Не буду больше писать в таком состоянии и без делфей )))))
__________________
Если работает, лучше не трогай!
Darthman вне форума  
Ответить с цитированием
Непрочитано 18.06.2006, 05:13   [включить плавающее окно]   #8
Jun
Женский Новенький
 
Регистрация: 18.06.2006
@LeFaNt , это код программиста на C/C++

Пожалуй, я тоже попробую:
Код:
program oldPas;
const N=20;
var
           A:array[1..N] of integer;
           i,j:byte; temp:integer;
begin
     {или другой вариант инициализации}
     randomize;
     {числа [0;20]}
     for i:=1 to N do A[i]:=random(21);
     
     {сортируем A-Z}
      for i:=2 to N do
          for j:=N downto i do
                 if A[j-1] < A[j] then begin
                              temp:=A[j-1];
                              A[j-1]:=A[j];
                              A[j]:=temp;
                  end;
     {можно вывести массив, но раз нужны только макс и мин}
     writeln('max =',A[1]);
     writeln('min =',A[N]);
end.

Последний раз редактировалось Jun; 19.06.2006 в 07:19.
Jun вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.06.2006, 13:13   [включить плавающее окно]   #9
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
не думал что стлько людей помогут! Сегодня я точно скажу кто из вас правильно написал! Вы все молодцы, я вас искренне благодарю!
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 22.06.2006, 11:12   [включить плавающее окно]   #10
Barloggg
Мужской Продвинутый
 
Аватар для Barloggg
 
Регистрация: 11.03.2003
Адрес: Тьмутаракань2, лен. обл
эй какой же это нафиг пузырек???
вот пузырек!
Код:
program SortBlloon;
const  n = 100;
var  myarray : array [0..n-1] of integer;
  i , temp : integer;
 ok:boolean;
begin  
repeat
ok:=true;
for i:=0 to n-2 do
   if myarray[i]<myarray[i+1] then begin
      temp:=myarray[i];
      myarray[i]:=myarray[i+1];
      myarray[i+1]:=temp;
      ok:=false;
   end;
until ok;
end.
Пузырек должен крутиться до тех пор пока все пузырьки не всплывут.
Вышеприведенные сортировки работают быстрее но это НЕ ПУЗЫРЕК!

Barloggg добавил :

да, забыл добавить что как и всех остальныхспособах сортировки максимальное и минимальное значения окажутся на краях массива.
Barloggg вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 24.06.2006, 11:08   [включить плавающее окно]   #11
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
я все понял люди а теперь как мне вывести весь отсортированный массив, и создать @exe@ файл? В turbo pascal 7.0?Заранее всем спасибо, а ещё чуть не забыл, надо чтобы я ввел размерность массива не из случайных чисел.

Jun программа работает, но по моему некорректно!
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 25.06.2006, 06:01   [включить плавающее окно]   #12
Jun
Женский Новенький
 
Регистрация: 18.06.2006
вывести весь массив можно так:
Код:
for i:=1 to N do write(A[i]:3);
не правильно работает, говоришь, ну, все может быть

exe-шник сделать вроде Compile - Build, но я могу ошибаться.
make - это ctrl+F9 и у меня всегда появлялся исполняемый файл. Попробуй.

Последний раз редактировалось Jun; 25.06.2006 в 06:07.
Jun вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 25.06.2006, 06:36   [включить плавающее окно]   #13
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
мне надо весь отсортированный массив вывести ещё!
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 25.06.2006, 13:07   [включить плавающее окно]   #14
Byte
Мужской Умудрённый
 
Аватар для Byte
 
Регистрация: 24.09.2005
Адрес: Флудер с 3DNews Ростов-на-Дону
warix на экран или в файл? Если на экран, то

Код:
for i:=1 to n do
  writeln(array[i]);
Ну а если в файл, то

Код:
var f:text; {ну или какой тебе надо}
for i:=1 to n do
  writeln(f,array[i]);
__________________
Если между консолью и креслом поставить пиво - начинает прорастать админ...
+1 к счетчику постов
Byte вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 27.06.2006, 11:23   [включить плавающее окно]   #15
Barloggg
Мужской Продвинутый
 
Аватар для Barloggg
 
Регистрация: 11.03.2003
Адрес: Тьмутаракань2, лен. обл
Цитата
создать @exe@ файл?
Во вкладке Compile->Destination->Memory сменить на Compile->Destination->Disk
и будет тебе ЕХЕ-файл.

Byte правильно написал однако для работы с файлом его еще надо открыть и закрыть.

Barloggg добавил :

Цитата
а ещё чуть не забыл, надо чтобы я ввел размерность массива не из случайных чисел.
а это как? всмысле причем тут слово размерность ?
всмысле ввести его вручную или считать из файла?
если вводить вручную, то
Код:
for i:=0 to n-1 do readln(myarray[i]);
Barloggg вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 27.06.2006, 13:11   [включить плавающее окно]   #16
warix
Мужской Новенький
Автор темы
 
Регистрация: 08.06.2006
Адрес: Россия,Пермский край,Добрянка
Цитата (Barloggg) »
Цитата
создать @exe@ файл?
Во вкладке Compile->Destination->Memory сменить на Compile->Destination->Disk
и будет тебе ЕХЕ-файл.

за это огромное спасибо!


Цитата
а ещё чуть не забыл, надо чтобы я ввел размерность массива не из случайных чисел.
а это как? всмысле причем тут слово размерность ?
всмысле ввести его вручную или считать из файла?
если вводить вручную, то
Код:
for i:=0 to n-1 do readln(myarray[i]);
размерность имею ввиду нопример на экран выводится надпись английской транскрипции что типа введите размерность массива: (далее ставим цифру жмем энтер и вот тебе массив из стольки чисел, значение числа которое мы ввели. в общем мысль наверное понятна?выше дан код программы:

const N=20;
var A:array[1..N] of integer; i,j:byte; temp:integer;
begin
{или другой вариант инициализации}
randomize;
{числа [0;20]}
for i:=1 to N do A[i]:=random(21);
теперь то вы меня понимаете?
__________________
Warix
warix вне форума  
Ответить с цитированием
Непрочитано 29.06.2006, 10:19   [включить плавающее окно]   #17
Barloggg
Мужской Продвинутый
 
Аватар для Barloggg
 
Регистрация: 11.03.2003
Адрес: Тьмутаракань2, лен. обл
парадокс однако.
Цитата
вот тебе массив из стольки чисел, значение числа которое мы ввели
это размер массива.
Цитата
{числа [0;20]}
for i:=1 to N do A[i]:=random(21);
а это есть допустимый диапазон значений в массиве.

у меня со словом размерность ассоциируется именно размерность. т.е. метры, килограммы, секунды, ньютоны, паскали, и тому подобные физические величины а также их комбинации.

еще я подумал было что имеется ввиду степень точности вывода результатов. это тоже делается, но до определенного значения (10 кажется символов) а дальше ручками.
Barloggg вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.07.2006, 13:04   [включить плавающее окно]   #18
13march
Мужской Заслуженный
 
Аватар для 13march
 
Регистрация: 26.04.2006
Очень интересная дискуссия на тему пузырьков.
Причем самое интересное то, что никто не написал кода, основанном на классическом алгоритме метода пузырька. А выглядит это примерно так:
Код:
program Sort;
const
  n = 100;
var
  myarray : array [1..n] of integer;
  i, j : integer;
  temp : integer;
begin
  for i:= 1 to n - 1 do
  for j:= 1 to n - i do
  if myarray[j] < myarray[j+1] then
  // меняем местами
  begin
    temp:= myarray[j];
    myarray[j]:= myarray[j+1]
    myarray[j+1]:= temp;
  end;
end.
Если в код вставить проверку на наличие перестановки, то это будет уже улучшенный(модифицированный или как-то по-другому, сейчас уж и не вспомнить) пузырек.
__________________
__________________
__________________
13march вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.07.2006, 14:47   [включить плавающее окно]   #19
Barloggg
Мужской Продвинутый
 
Аватар для Barloggg
 
Регистрация: 11.03.2003
Адрес: Тьмутаракань2, лен. обл
нет, среди этого обсуждения есть истинный пузырек. см коммент от 22-06-2006.
он даже улучшенный между прочим.
Barloggg вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.07.2006, 15:05   [включить плавающее окно]   #20
13march
Мужской Заслуженный
 
Аватар для 13march
 
Регистрация: 26.04.2006
Barloggg Твой код я видел. Да, похоже, почти оно, но это не
Цитата ([b) »
Barloggg[/b] ]истинный пузырек
по причине отсутствия второго цикла. Это приводит к тому, что сложность ствоего алгоритма увеличивается где-то в 2 раза.
__________________
__________________
__________________
13march вне форума  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему

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

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

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

Быстрый переход


Текущее время: 15:20. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey