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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 12:44   #1
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию Сортировка по имени в Qbasic, программа внутри

Вот программа без сортировки: необходимо отсортировать по имени магазина в алфавитном порядке

Код:
CLS
TYPE mag
   mname AS STRING * 12
   street AS STRING * 10
   homenum AS INTEGER
   phonenum AS LONG
   tip AS STRING * 12
END TYPE
DIM shop(1 TO 10) AS mag
DIM i AS INTEGER
DATA sportmaster, lenina, 17, 7559087, sportmag
DATA autolite, frunze, 88, 7507590, automag
DATA bestbook, gagarina, 27, 7102535, bookmag
DATA hotbread, lomonosova, 152, 7506170, bulochnaya
DATA okay, voennaya, 6, 7201515, gastronom
DATA mega, vatutina, 105, 7105065,univermag
DATA ovoshi, visockogo, 32, 7802878, ovoshmag
DATA autolider, lenina, 29, 7201625, automag
DATA ashan, vatutina, 103, 7205028, gastronom
DATA intersport, gogolya, 98, 7252054, sportmag
FOR i = 1 TO 10
   READ shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
   PRINT shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
NEXT i
END
Вот что в итоге



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.02.2012 в 15:13.
DAN1L вне форума Ответить с цитированием
Старый 13.02.2012, 15:34   #2
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

вот сделал, но он сортирует только 1й столбец, а остальные записи остаются без изменения. Как сделать что бы строкой переносилось?

Код:
TYPE mag
   mname AS STRING * 12
   street AS STRING * 12
   homenum AS INTEGER
   phonenum AS LONG
   tip AS STRING * 15
END TYPE
DIM shop(1 TO 10) AS mag
DIM i, j, n AS INTEGER
DIM m AS STRING
CLS
DATA SPORTMASTER, Lenina, 17, 7559087, sportmag
DATA AUTOLIFE, Frunze, 88, 7507598, automag
DATA BESTBOOK, Gagarina, 27, 7102535, bookmag
DATA HOTBREAD, Lomonosova, 152, 7506170, bulochnaya
DATA OKAY, Voennaya, 6, 7201515, gastronom
DATA MEGA, Vatutina, 105, 7105065, universam
DATA OVOSHI, Visockogo, 32, 7802878, ovoshmag
DATA AUTOLIDER, Lenina, 29, 7201625, automag
DATA ASHAN, Vatutina, 103, 7205028, gastronom
DATA INTERSPORT, Gogolya, 98, 7252054, sportmag
FOR i = 1 TO 10
   READ shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
   PRINT shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
NEXT i
FOR i = 1 TO 9
   m = shop(i).mname
   n = i
   FOR j = i + 1 TO 10
      IF shop(j).mname < m THEN
         m = shop(j).mname
         n = j
      END IF
   NEXT j
   shop(n).mname = shop(i).mname
   shop(i).mname = m
NEXT i
PRINT "otsortirovanniy massiv"
FOR i = 1 TO 10
   PRINT shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
NEXT i
END

Последний раз редактировалось DAN1L; 13.02.2012 в 16:02.
DAN1L вне форума Ответить с цитированием
Старый 13.02.2012, 16:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так пойдёт?
Код:
TYPE mag
   mname AS STRING * 12
   street AS STRING * 12
   homenum AS INTEGER
   phonenum AS LONG
   tip AS STRING * 15
END TYPE
DIM shop(1 TO 10) AS mag
DIM OneShop AS mag
DIM i, j AS INTEGER
CLS
DATA SPORTMASTER, Lenina, 17, 7559087, sportmag
DATA AUTOLIFE, Frunze, 88, 7507598, automag
DATA BESTBOOK, Gagarina, 27, 7102535, bookmag
DATA HOTBREAD, Lomonosova, 152, 7506170, bulochnaya
DATA OKAY, Voennaya, 6, 7201515, gastronom
DATA MEGA, Vatutina, 105, 7105065, universam
DATA OVOSHI, Visockogo, 32, 7802878, ovoshmag
DATA AUTOLIDER, Lenina, 29, 7201625, automag
DATA ASHAN, Vatutina, 103, 7205028, gastronom
DATA INTERSPORT, Gogolya, 98, 7252054, sportmag
FOR i = 1 TO 10
   READ shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
   PRINT shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
NEXT i

REM Сортировка массива shop
FOR i = 1 TO 9
  FOR j = i + 1 TO 10
    IF shop(i).mname > shop(j).mname THEN
          OneShop = shop(i)
          shop(i) = shop(j)
          shop(j) = OneShop
    END IF
 NEXT j
NEXT i
PRINT
PRINT "otsortirovanniy massiv"
FOR i = 1 TO 10
   PRINT shop(i).mname, shop(i).street, shop(i).homenum, shop(i).phonenum, shop(i).tip
NEXT i
END
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2012, 16:49   #4
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

Все отлично работает! Спасибо вам!) Блин сколько же я над ней сидел
DAN1L вне форума Ответить с цитированием
Старый 13.02.2012, 16:58   #5
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так пойдёт?
Вы случайно не знаете как "методом пузырька" записывается сортировка в этой же задаче?
DAN1L вне форума Ответить с цитированием
Старый 13.02.2012, 17:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а в чём, собственно, сложность?

не знаете, что такое "метод пузырькаЭ ?!

с википедии
Цитата:
Сортировка простыми обменами, сортиро́вка пузырько́м (англ. bubble sort) — простой алгоритм сортировки.
или не можете алгоритм на бейсике записать?
вот, с оттуда же на псевдокоде:
Цитата:
Код:
Вход: массив A, состоящий из N элементов, с нумерацией от A[1] до A[N]

t := истина
цикл пока t истинно:
  t := ложь
  цикл для j = 1, 2, ..., n − 1:
    если A[j] > A[j+1], то:
      обменять местами элементы A[j] и A[j+1]
      t := истина
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2012, 17:29   #7
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

Спасибо!) Буду пробовать, не особо я силен в программирование
DAN1L вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моя сортировка. внутри ошибка, найти не могу pinkiller Общие вопросы C/C++ 1 10.01.2012 18:41
Программа в QBasic!! =do-mi-no= Помощь студентам 0 27.02.2011 21:06
программа в QBasic Vadikkk Помощь студентам 0 02.11.2010 16:34
Сортировка по имени (списки) sunman Паскаль, Turbo Pascal, PascalABC.NET 1 30.05.2010 22:38
Программа. Паскаль. Описание внутри. Nexx Помощь студентам 5 07.12.2007 20:07