purebasic.info

PureBasic forum
Текущее время: Пн сен 16, 2019 1:30 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Пт дек 09, 2011 7:39 pm 
Не в сети
док

Зарегистрирован: Ср май 11, 2011 12:05 pm
Сообщений: 100
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Столкнулся с проблемой в решении простейших вопросов (которые решают на других языках чуть ли не 1 строкой)

есть массив типа( в данном случае список)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  NewList Number.s()
 
  AddElement(Number())
  Number() = "Сергей"
   
  AddElement(Number())
  Number() = "Дима"
   
  AddElement(Number())
  Number() = "Сергей"
 
  AddElement(Number())
  Number() = "Леша"
 




Задача
1. отсортировать список и убить повторяющиеся элементы
2. упорядочить массив по алфавиту
3. перемешать элементы массива

_________________
http://www.crackedfile.ru
http://www.fridafreak.ru


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 09, 2011 8:24 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11515
Благодарил (а): 4 раз.
Поблагодарили: 470 раз.
C_File писал(а):
отсортировать список
http://purebasic.com/documentation/sort/index.html
C_File писал(а):
упорядочить массив по алфавиту
Это таже сортировка.

C_File писал(а):
перемешать элементы массива
http://purebasic.com/documentation/sort ... array.html
http://purebasic.com/documentation/sort ... elist.html

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 09, 2011 9:24 pm 
Не в сети
док

Зарегистрирован: Ср май 11, 2011 12:05 pm
Сообщений: 100
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Спасибо Петр с сортировкой разобрался, но как убить повторяющиеся элементы не понял...

на рнр это
array_unique(название массива)

_________________
http://www.crackedfile.ru
http://www.fridafreak.ru


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 10, 2011 12:48 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
C_File писал(а):
но как убить повторяющиеся элементы не понял...

Написать свою функцию и выложить в "OpenSource" :D

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 10, 2011 1:27 pm 
Не в сети
док

Зарегистрирован: Ср май 11, 2011 12:05 pm
Сообщений: 100
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
логика этой функции мне понятна) тока вот что то реализовать толково не могу...не поможите? :D
думаю многим будет полезна эта приблуда :wink:

_________________
http://www.crackedfile.ru
http://www.fridafreak.ru


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 10, 2011 1:58 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
C_File писал(а):
логика этой функции мне понятна)

Выкладывай логику

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 11, 2011 2:18 am 
Не в сети
док

Зарегистрирован: Ср май 11, 2011 12:05 pm
Сообщений: 100
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ну вообщем я набросал код он вроде бы даже работает, но он мне не нравитЦо)))
так сказать попробуйте его улучшить)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Dim mydim.s (7)
Dim fin.s (7)
 
  mydim(0)="ssss"
 mydim(1)="aaaa"
 mydim(2)="aaaa"
 mydim(3)="ssss"
 mydim(4)="bbbb"
 mydim(5)="aaaa"
 mydim(6)="aaasaa"
 mydim(7)="aaasaa"
 
 
 
 
  Procedure loop (numer.s)
      Shared  mydim.s(), fin.s()
      kolvo=0
      For a=0 To ArraySize(mydim())
        Debug "num="+numer+"  mydim="+mydim(a)
     If numer.s=mydim(a)  :  kolvo+1:error=0
     Else : error=0
    EndIf
    If kolvo >1: For i = 0 To ArraySize(fin()) :
        If numer.s=fin(i) : error=1:ProcedureReturn  error: EndIf
        Next i
            error=0: ProcedureReturn  error
        EndIf
   Next    
 ProcedureReturn  error
  EndProcedure
   
 
   i=0
   For a=0 To ArraySize(mydim())
     res=loop(mydim(a)): Debug Str(res)
     If res=0
        fin(i)=mydim(a) :i+1
      EndIf
         Next  
     
 
Debug "final"
 
   For i = 0 To ArraySize(fin())
     Debug fin(i)
     
   Next
 


_________________
http://www.crackedfile.ru
http://www.fridafreak.ru


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 11, 2011 4:12 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 17 раз.
Пункты репутации: 10
C_File
Так попробуй
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Procedure RemoveDuble(List *Spisok$())
     If ListSize(*Spisok$())
          SortList(*Spisok$(), #PB_Sort_Ascending)
          FirstElement(*Spisok$())
          sample$ = *Spisok$()
          While  NextElement(*Spisok$())
               If sample$ = *Spisok$()
                    DeleteElement(*Spisok$())
               Else
                    sample$ = *Spisok$()
               EndIf
          Wend
     EndIf
EndProcedure
 
NewList Spisok$()
 
For i = 0 To 100
     AddElement(Spisok$())
     Spisok$() = "slovo" + Str(Random(4))
Next
 
ForEach Spisok$()
     Debug Spisok$()
Next
 
RemoveDuble(@Spisok$())
 
Debug "****************************************"
 
ForEach Spisok$()
     Debug Spisok$()
Next


_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 12, 2011 8:41 pm 
Не в сети
док

Зарегистрирован: Ср май 11, 2011 12:05 pm
Сообщений: 100
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
lakomet Спасибо за столь элегантное решение! Именно такая логика и жаждала воротится в коде!

_________________
http://www.crackedfile.ru
http://www.fridafreak.ru


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 16, 2012 7:47 pm 
Не в сети
доцент

Зарегистрирован: Вс янв 15, 2012 9:11 am
Сообщений: 25
Откуда: Караганда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем здравствуйте!
Массив интересует динамический

Задача такая
1. обработка массива данных
2. размер массива меняется
3. после обработки мусор из памяти убирать

знаю что возможно
1. создавать динамический массив
2. обнулять или уничтожать память

подскажите как новичку сделать в БЕйсике

_________________
где?где? В Караганде


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 16, 2012 7:58 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11515
Благодарил (а): 4 раз.
Поблагодарили: 470 раз.
mr BAM писал(а):
Массив интересует динамический
Об этом можно прочитать тут. http://www.pure-basic.narod.ru/docs/boo ... s_List.htm

mr BAM писал(а):
2. размер массива меняется
Для этого нужно использовать оператор ReDim. http://purebasic.ru/manual.php?id=1062&lng=rus

mr BAM писал(а):
3. после обработки мусор из памяти убирать
Можно с помощью ReDim, уменьшить размер массива до 0, или вообще удалить массив функцией FreeArray(). http://purebasic.ru/manual.php?id=41&lng=rus

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 03, 2012 9:29 pm 
Не в сети
доцент

Зарегистрирован: Ср авг 01, 2012 4:20 pm
Сообщений: 41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
убить повторяющиеся элементы

Попробуйте так:
\\-----функция защищает массив от переполнения повторяющимися и пустыми строками
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Procedure addmassive(List listname.s(),vals.s)
  Protected metka=#False
  If vals
    ForEach listname()
      check.s=LCase(listname())
      If check=LCase(vals):metka=#True:EndIf
    Next
    If metka=#False
      AddElement(listname())
      listname()=vals
    EndIf
  EndIf
 ; ProcedureReturn
EndProcedure

Цитата:
после обработки мусор из памяти убирать

Код:
1
2
 
ClearList(listname)


_________________
И да пребудет с Вами великий ассемблер, друзья!


Последний раз редактировалось Vbs/Stertor Пт авг 03, 2012 9:33 pm, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 04, 2013 10:58 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1766
Откуда: Алматы
Благодарил (а): 17 раз.
Поблагодарили: 49 раз.
Пункты репутации: 5
нет ли возможности рассортировать структурированный массив почти как #PB_Sort_String, только чтобы сначала все варианты, начинающиеся с букв, а после цифры. то есть абв123. в стандарте же он сначала цифры, потом буквы 123абв.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 05, 2013 6:18 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 71 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
SereZa, написать процедуру своей сортировки

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср ноя 18, 2015 7:47 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1766
Откуда: Алматы
Благодарил (а): 17 раз.
Поблагодарили: 49 раз.
Пункты репутации: 5
процедуру так и не написал.

теперь понадобилось удалить какую-то ячейку из массива. это мне
1. создавать второй массив,
2. копировать в цикле из первого во второй, а как дойдет до нужной удаляемой ячейки - проигнорировать,
3. продолжить копирование с -1 по ячейкам во втором массиве,
4. потом редим в первый массив на -1 от оригинального размера массива,
5. копировать второй массив в первый,
6. редим в 0 второй массив?

эээ... и все ради одной ячейки? йокараный бабай...


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 11


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB