Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Программа сортировки
СообщениеДобавлено: 28 авг 2020, 13:22 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Здравствуйте, уважаемые форумчане!

Мне тут программку очень надо сделать для сортировки массива.
Я напрочь забыла, как работать с символьными переменными.
Может ли кто-нибудь помочь?

Имеем массив решений, показываю часть

▼ Массив
. . . . 
[DLK(1):184]
0 2 3 4 5 7 8 6 1
3 1 4 7 8 6 2 0 5
1 4 2 0 7 8 3 5 6
4 5 1 3 6 2 7 8 0
6 7 8 5 4 0 1 2 3
8 0 7 6 1 5 4 3 2
2 3 5 8 0 4 6 1 7
5 8 6 2 3 1 0 7 4
7 6 0 1 2 3 5 4 8

[DLK(2):185]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 7 1 3 8 6 0 2 4
6 5 8 0 4 1 7 3 2
4 8 7 2 3 5 1 0 6
2 3 5 8 7 4 6 1 0
8 0 4 1 6 2 5 7 3
7 6 0 5 1 3 2 4 8

[DLK(2):187]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 7 1 3 8 6 0 2 4
6 5 8 0 4 3 7 1 2
4 8 7 2 3 5 1 0 6
2 3 5 8 7 1 6 4 0
8 0 4 1 6 2 5 7 3
7 6 0 5 1 4 2 3 8

[DLK(12):189]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 0 3 7 6 1 2 4
6 5 8 0 4 1 7 3 2
4 3 7 2 8 5 0 1 6
2 7 5 8 1 3 6 4 0
8 0 4 1 6 2 5 7 3
7 6 1 5 3 4 2 0 8

[DLK(54):201]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 1 7 3 2
4 3 7 2 8 5 1 0 6
2 7 5 8 1 3 6 4 0
8 0 4 1 6 2 5 7 3
7 6 0 5 3 4 2 1 8

[DLK(48):255]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 1 7 3 2
4 3 7 2 8 5 1 0 6
2 7 5 8 3 4 6 1 0
8 0 4 1 6 2 5 7 3
7 6 0 5 1 3 2 4 8

[DLK(1):303]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 1 7 3 2
4 6 7 2 8 5 1 0 3
2 7 5 8 1 3 6 4 0
8 0 4 1 3 2 5 7 6
7 3 0 5 6 4 2 1 8

[DLK(46):304]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 3 7 1 2
4 3 7 2 8 5 1 0 6
2 7 5 8 3 1 6 4 0
8 0 4 1 6 2 5 7 3
7 6 0 5 1 4 2 3 8

[DLK(1):350]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 3 7 1 2
4 6 7 2 8 5 1 0 3
2 7 5 8 1 4 6 3 0
8 0 4 1 3 2 5 7 6
7 3 0 5 6 1 2 4 8

[DLK(10):351]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
8 4 2 6 0 1 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 3 7 1 2
4 3 7 2 8 5 1 0 6
2 7 5 1 3 8 6 4 0
1 0 4 8 6 2 5 7 3
7 6 0 5 1 4 2 3 8
. . . .

Массив большой (несколько тысяч ДЛК).
В массиве ДЛК, которые имеют ортогональные ДЛК.
После DLK в скобках указано количество ортогональных ДЛК у данного DLK.
Например, у последнего ДЛК в показанном списке 10 ортогональных ДЛК.

Мне нужно эти ДЛК расположить в порядке убывания их ортогональных ДЛК.
То есть на первом месте в показанном списке должен стоять этот ДЛК

[DLK(54):201]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 1 7 3 2
4 3 7 2 8 5 1 0 6
2 7 5 8 1 3 6 4 0
8 0 4 1 6 2 5 7 3
7 6 0 5 3 4 2 1 8

у него 54 ортогональных ДЛК.
Далее этот ДЛК

[DLK(48):255]
0 2 3 4 5 7 8 6 1
3 1 6 7 2 0 4 8 5
1 4 2 6 0 8 3 5 7
5 8 1 3 7 6 0 2 4
6 5 8 0 4 1 7 3 2
4 3 7 2 8 5 1 0 6
2 7 5 8 3 4 6 1 0
8 0 4 1 6 2 5 7 3
7 6 0 5 1 3 2 4 8

И так далее по убыванию.

Такая вот нужна сортировка.
При этом комментарии у ДЛК в отсортированном списке должны быть сохранены, чтобы видеть количества ортогональных соквадратов.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Программа сортировки
СообщениеДобавлено: 06 сен 2020, 10:56 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Упрощаю задачу.
Можно не выводить всё вместе с квадратами, квадраты можно опустить.

Итак, вы читаете из входного массива все комментарии к квадратам, то есть то, что перед каждым квадратом стоит в квадратных скобках.
Получаете массив символьных переменных, например, такой

[DLK(196):955]
[DLK(188):1163]
[DLK(204):1351]
[DLK(220):1563]
[DLK(196):1805]
[DLK(190):2001]
[DLK(560):6886]
[DLK(560):7446]
[DLK(560):8006]
[DLK(104):11990]
[DLK(104):17460]
[DLK(194):22891]
[DLK(147):29906]
[DLK(112):37018]
[DLK(111):38921]
[DLK(112):43146]
[DLK(329):44079]
[DLK(576):47812]
[DLK(614):48392]
[DLK(580):49006]
[DLK(144):50557]
[DLK(144):50701]
[DLK(128):50849]
[DLK(128):50977]
[DLK(144):51113]
[DLK(128):51277]
[DLK(128):51409]
[DLK(128):51569]
[DLK(138):51697]
[DLK(138):51835]
[DLK(188):60016]
[DLK(194):60204]
[DLK(308):72078]
[DLK(360):73303]
[DLK(120):82132]
[DLK(106):85386]
[DLK(310):103311]
[DLK(576):112707]
[DLK(576):113317]
[DLK(576):113935]
[DLK(516):172476]

Этот этап, думаю, понятен.
Теперь надо из этих символьных переменных извлечь то, что стоит сразу за DLK в скобках, это количество его ортогональных ДЛК.
Например,
[DLK(196):955] --> 196

В результате получим массив числовых переменных.
Теперь надо ранжировать его и вывести в выходной файл.
Всё!
[Можно даже и не ранжировать, программа ранжирования числового массива у меня есть, сама могу ранжировать.
Только получить числовые переменные из символьных и всё.]

Алгоритм простой, как пень.
Массив входной у меня очень большой - несколько тысяч ОДЛК.
Я в Ворде бегаю по нему и ищу, сколько есть ОДЛК у ДЛК.
Очень нудное занятие!

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Программа сортировки
СообщениеДобавлено: 06 сен 2020, 15:28 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Похоже, придётся тряхнуть стариной :), потому что помощи тут не дождёшься.
Кто хочет помочь, не умеет, а кто умеет - не хочет.

Итак, взяла с полки книжку по Бейсику, посмотрела о символьных переменных.
Для начала выбрала из массива с квадратами только комментарии.
Это очень просто.
Текст программы

#COMPILE EXE
#DIM NONE

FUNCTION PBMAIN () AS LONG
LOCAL I AS LONG

DIM A$(450471)

OPEN "A10.TXT" FOR INPUT AS #1
FOR I=1 TO 450471
INPUT #1,A$(I)
NEXT I
CLOSE #1

OPEN "Simvolny_Massiv_rez.TXT" FOR OUTPUT AS #1
FOR I=1 TO 450471 STEP 11
PRINT #1,A$(I)
NEXT I

3020 CLOSE #1
END

END FUNCTION

В массиве у меня 450471 символьных переменных, мне надо вывести первую из каждых 11.
Это в программе и записано.
В результате выполнения программы получила массив из комментариев (без квадратов)

[DLK(2):1]
[DLK(1):3]
[DLK(2):4]
[DLK(2):6]
[DLK(2):8]
[DLK(2):10]
[DLK(2):12]
[DLK(2):14]
[DLK(2):16]
[DLK(2):18]
[DLK(2):20]
[DLK(2):22]
[DLK(2):24]
[DLK(2):26]
[DLK(2):28]
[DLK(2):30]
[DLK(2):32]
[DLK(2):34]
[DLK(2):36]
[DLK(2):38]
[DLK(1):40]
[DLK(1):41]
[DLK(1):42]
. . . .
[DLK(2):236801]
[DLK(2):236803]
[DLK(4):236805]
[DLK(2):236809]
[DLK(2):236811]
[DLK(4):236813]
[DLK(2):236817]
[DLK(2):236819]
[DLK(4):236821]
[DLK(2):236825]
[DLK(2):236827]
[DLK(4):236829]
[DLK(2):236833]
[DLK(2):236835]
[DLK(2):236837]
[DLK(2):236839]

Первый этап выполнен. Уже хорошо.
Далее, вычитала в книжке, что символьные переменные тоже можно сравнивать между собой.
На основе этого, наверное, можно и упорядочить их по убыванию DLK(...).

Ну, придётся ещё чуть-чуть подумать.
А что же делать, если помочь никто не бросается :(

Спасибо за внимание и до свидания :)

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Программа сортировки
СообщениеДобавлено: 08 мар 2021, 00:45 
Не в сети
Продвинутый
Зарегистрирован:
15 май 2020, 09:24
Сообщений: 50
Cпасибо сказано: 10
Спасибо получено:
9 раз в 8 сообщениях
Очков репутации: 5

Добавить очки репутацииУменьшить очки репутации
Код ниже должен решать задачу.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Сортировка в текстовом файле.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
let download = (data, filename, type) => {
let file = new Blob([data], {type: type});
let a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(() => {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
};
let out = (text, name_file, type_file) => {
let re = document.getElementById("squares").checked ? /^\[DLK\((\d+)\)\:\d+\]$[^[]*/mg: /^\[DLK\((\d+)\)\:\d+\]$/mg;
let delimiter = document.getElementById("squares").checked ? "\n\n": "\n";
let arr;
let arr_out = [];
while((arr = re.exec(text)) !== null)arr_out.push([arr[0].trim(), arr[1] | 0]);
arr_out.sort((a, b) => b[1] - a[1]);
let text_out = arr_out[0][0];
for(let i = 1; i < arr_out.length; i++)text_out += delimiter+arr_out[i][0];
download(text_out, "new_"+name_file, type_file);
};
let input_file = document.createElement("input");
input_file.setAttribute("type", "file");
input_file.onchange = () => {
let reader = new FileReader();
reader.onload = () => {
out(reader.result, input_file.files[0].name, input_file.files[0].type);
};
reader.readAsText(input_file.files[0]);
};
let f_test = () => {
input_file.click();
};
</script>
</head>
<body>
<h1>Сортировка в текстовом файле.</h1>
<label>С квадратами: <input type="checkbox" id="squares"></label><br>
<input type="button" value="загрузить" onClick="f_test()">
</body>
</html>

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю RX200 "Спасибо" сказали:
Nataly-Mak
 Заголовок сообщения: Re: Программа сортировки
СообщениеДобавлено: 08 мар 2021, 05:24 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
RX200
да, всё отлично решает. Спасибо!
Пока попробовала с квадратами; мне так даже лучше, чем без квадратов.
Результаты показала на форуме проекта.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Программа сортировки
СообщениеДобавлено: 08 мар 2021, 14:55 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Без квадратов тоже попробовала. Всё отлично!
Вот
[DLK(10):174353]
[DLK(10):283237]
[DLK(8):64135]
[DLK(8):97679]
[DLK(8):114941]
[DLK(8):195530]
[DLK(8):197418]
[DLK(8):200712]
[DLK(8):283229]
[DLK(7):283247]
[DLK(6):115387]
[DLK(6):117588]
[DLK(6):119104]
[DLK(6):227265]
[DLK(5):174620]
[DLK(5):174625]
[DLK(5):239017]
[DLK(4):165]
[DLK(4):250]
[DLK(4):358]
[DLK(4):400]
[DLK(4):419]
[DLK(4):509]
[DLK(4):724]
[DLK(4):814]
[DLK(4):1427]
[DLK(4):1474]
[DLK(4):1826]
[DLK(4):1936]
[DLK(4):2025]
[DLK(4):2148]
[DLK(4):2749]
[DLK(4):4306]
[DLK(4):6678]
[DLK(4):7865]
[DLK(4):12920]
[DLK(4):13553]
[DLK(4):15801]
[DLK(4):16241]
. . . .

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Nataly-Mak "Спасибо" сказали:
Namodul
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 6 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Сортировки данных в c++

в форуме Информатика и Компьютерные науки

kvadratisharic

0

390

13 мар 2018, 23:18

Программа

в форуме Ряды Фурье и Интегральные преобразования

Lfed

8

763

08 окт 2021, 20:33

Многопоточная программа

в форуме Информатика и Компьютерные науки

Nataly-Mak

0

289

27 июн 2019, 09:12

Программа на ассемблере

в форуме Информатика и Компьютерные науки

PINGuinich

0

283

29 июн 2019, 15:06

Программа с метками

в форуме Информатика и Компьютерные науки

johnybsraynilol

1

362

02 ноя 2017, 18:23

Программа Gephi

в форуме Информатика и Компьютерные науки

Nataly-Mak

18

651

31 авг 2020, 20:48

Программа SageMath

в форуме Информатика и Компьютерные науки

Nataly-Mak

1

363

10 янв 2021, 21:10

Программа для рыбалки

в форуме Размышления по поводу и без

Hoper

3

395

23 сен 2019, 11:44

Программа для машины Тьюринга

в форуме Дискретная математика, Теория множеств и Логика

Tierion

0

310

27 май 2017, 22:53

AIDA64 - программа для диагностики

в форуме Информатика и Компьютерные науки

kamazox

0

274

07 май 2017, 13:26


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved