Показать полную графическую версию : перестановка слов или число размещений из списка. Комбинаторика.
MaximvsIT
15-03-2012, 17:30
Здравствуйте. Прошу помощи в решении такой задачи.
Дано: список слов в файле word.txt Пример:
==========
я
ты
это
здесь
там
да
нет
и
много
мало
12
1984
==========
Задача1: Создать все возможные перестановки с заданным числом элементов (К) и записать их в файл
Задача2: Написать батник (bat) который при запуске запросит число элементов (К) прочитает файл word.txt и запишет результат в файл wordmix+K.txt
Дополнение: Файл word.txt может состоять из любого количества слов и цифр, словом считается все что на строке. Файл wordmix+K.txt создать в той же директории где находится word.txt, здесь же запускаем батник.
Пример: если К=2 решение:
wordmix2.txt
яты
тыя
тамздесь
12мало
много1984
и т.д.
Благодарю за внимание.
Foreigner
15-03-2012, 20:09
MaximvsIT,
Это домашка? Давай алгоритм решения.
MaximvsIT
15-03-2012, 21:41
Прошу по теме. Если есть варианты реализации поделитесь или направте в нужном направлении.
Прошу по теме. »
MaximvsIT, это и было — по теме: Правила форума «Программирование» (http://forum.oszone.net/announcement-21-187.html), п.6.
MaximvsIT
18-03-2012, 19:26
Ну может отчасти Вы и правы. В общем это Комбинаторика, число размещений (А)- это будет количество строк в новом файле wordMix.txt, К - это число элементов записанных в ряд из количества элементов N (количество слов (строк) из word.txt).
Что я делаю,
@echo off
спрашиваем К, запоминаем
объявляем переменную Х, читаем первую строку, запоминаем
объявляем переменную Y, читаем вторую строку, запоминаем
склеиваем (не знаю как правильно) первую и вторую переменные, записываем в файл wordmixK.txt
очищаем Y переменную, читаем третью строку из word.mix запоминаем как Y
склеиваем (не знаю как правильно) первую и вторую переменные, записываем в файл на второй строке wordmixK.txt
и т.д.
Извините но только так. Что нашел по теме, только на VisualBasic
Sub CalcCombin(I As Integer, u As Integer)
Dim s As String; k As Integer, j As Integer
For k=u To N
If b(k) <> Empty Then
If i = M Then
c(i) = b(k)
s=""
For j = 1 To M
s=s+c(j)
Next j
z=z+1
znach(z) = s
Else
c(i) = b(k)
b(k) = Empty
If proverka = True Then
Call CalcCombin(i + 1, k + 1)
Else
Call CalcCombin(i + 1, 1)
End If
b(k)=c(i)
End If
End If
Next k
End Sub
Прошу помощи в реализации этого алгоритма. Теорию понимаю на практике 0.
MaximvsIT
20-03-2012, 18:37
Видимо не сдать мне лабу, в этом семестре ((( придется учить мат часть. Сразу скажу что хелп цмд мне никак не помогает. ((
Прошу помощи у спецов.
Начал с малого пишу с нуля.
@echo off
rem Запрашиваем К-элемент
set /p kset="Enter K - "
echo K is - %kset%
rem создает файл wordMix+K.txt
COPY word.txt wordMix%Kset%.txt
rem создаем К- количество перемененных
? set и дальше не знаю что
типа if k<=0 do exit else
k=2 do set w1,w2
rem читаем первую строку из файла word.txt и запоминаем
for /F "tokens=*" %%i in (word.txt) do @echo %%i>>wordMix%kset%.txt
? Но увы не читает, а записывает все строки в файл, если менять значение tokens=* то работает со столбцами а нужно со строками, в конце делает echo %%i>>wordMix%kset%.txt а необходимо %%i=w1=первой переменной из K
Думаю что такие задачи решались не однократно, поиск готовых результатов не дал. Открылся спортивный интерес.
Прошу знающих людей откликнуться.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.