Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11

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

11.04.2013, 14:56. Показов 4003. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Для выполнения институтского задания необходимо написать 6 функций на хаскеле, из них 3 я написал сам, а вот с остальными тремя вообще непонятно.
Хотелось бы помощи в том, чтобы вы подтолкнули меня к самостоятельному решению задачи, а именно куда копать, а не предоставили конечный вариант решения сразу, просто так не интересно...

вот сами задачи:

1)Определите функцию, которая порождает множество всех непустых подпоследовательностей для заданной строки.

2)Определите функцию, которая для заданного n определяет число возможных расстановок n ферзей на шахматное доске n x n так, чтобы ферзи не били друг друга.

3)Определите функцию, которая для заданного набора чисел и заданного числа n строит все возможные способы получения заданного числа n из заданного набора с помощью операций +, * и взятия в скобки.

по первой задаче ступор - вот есть строка "ABC" - получается множество подпоследовательностей "A", "B", "C", "AB", "AC", "BC", "BA", "BC" ... и так далее... как посчитать множество всех вариантов? и вообще куда копать?
по второй задаче - это получается задача о расстановке ферзей на доске, в википедии я статью эту читал, но как сделать так, чтобы функция возвращала количество постановок? можно ведь перебором, но как то неспортивно.
по третьей задаче есть идея - взять число, разбить на произведение простых чисел, затем каждое число получить из списка изначально заданных, но как?

у меня ощущение что я что то упустил значительное в функциональном программировании или шаблоны императивных языков программирования прочно въелись в мой мозг.

за помощь заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2013, 14:56
Ответы с готовыми решениями:

Написать функцию для удаления всех подстрок для заданной строки
всем привет, я новичок в плюсах, поясните пожалуйста, хотел отдебажить функцию, но она даже не запускается #include "stdafx.h" ...

Описать функцию, которая по атому и списку выдает множество всех атомов в списке
Опишите функцию послед(x, y, n), которая по атому x и списку y выдает множество всех атомов в y, непосредственно следующих за каждым...

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

20
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
11.04.2013, 19:10
Первая.
AC не является подпоследовательностью ABC, по меньшей мере в моём понимании.
Подпоследовательности ABC — A, B, C, AB, BC, ABC и пустая, всего их 7.
Я бы делал так (вариант с привлечением арифметики):
Подпоследовательность строки однозначно задаётся числом (двумя неотр. числами) букв, которые следует выбросить с начала и с конца, чтоб из исходной строки получить рассматриваемую подстроку.
Например, BC как подстрока ABCD задаётся числами (1,1), а D — парой (3,0).
Обратно справедливо с поправкой: пара (n,m) строки s задаёт подпоследовательность, если n+m < length(s). Кроме того возможна неоднозначность за счёт множественного вхождения одной подстроки: AB в ABCAB входит дважды.
Посему множество подпоследовательностей строки — это множество всех пар чисел, которые удовл. условию n+m < length(s). Отдельно решается вопрос об удалении копий.
Можно придумать вариант без арифметики, чисто на рекурсии, когда множество подстрок строки длины L определяется через множество подстрок подстроки длины (L-1).

Вторая.
Расставьте сначала ладьи, чтоб с диагональным перекрытием не мучаться. Выведите список всех расстановок. Выведите количество расстановок. Обобщите до ферзей, введением в нужное место фильтр на те расстановки [новодобавленной фигуры, если есть рекурсия по строке/столбцу, иначе на финальные расстановки всех n фигур], которые нарушают диагонали.
1
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
10.05.2013, 16:51  [ТС]
это снова я.

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

Добавлено через 2 часа 10 минут
C
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
data Chess_fig = Elephant Int Int deriving (Show, Eq)
 
 
in_list :: Chess_fig -> [Chess_fig] -> Bool
in_list a [] = False
in_list a (x:xs) = (a == x) || (in_list a xs)
 
 
check_pos :: Chess_fig -> [Chess_fig] -> Bool
check_pos a [] = False
check_pos (Elephant a b) ((Elephant c d) : x) = (((a - b) == (c - d)) || ((a + b) == (c + d))) || (check_pos (Elephant a b) x)
 
add_fig :: Chess_fig -> [Chess_fig] -> [Chess_fig]
add_fig a [] = [a]
add_fig a b  =
    if check_pos a b 
        then b
        else (a:b)
 
add_fig_A :: [Chess_fig] -> [Chess_fig] -> [Chess_fig]
add_fig_A [] a = a
add_fig_A (x:xs) a = add_fig_A xs (add_fig x a)
 
 
all_figures :: Int -> [Chess_fig] 
all_figures n = [(Elephant a b) | a <- [0..(n-1)], b <- [0..(n-1)]]
 
 
 
get_board :: Int -> [Chess_fig]
get_board n = take n (add_fig_A (all_figures n) [])
ну вот программа, которая выдает одну расстановку для слонов n штук на доске n*n

следующие действия таковы - из этой расстановки я буду удалять по 1 слону и искать альтернативные расстановки...

как мне написать экземпляр класса Num для Chess_fig?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
10.05.2013, 18:23
Задача о ферзях (N-Queens Problem) довольно легко решается с помощью перебора с возвратом (Backtracking).

Для решения задачи будет полезно сначала определить функцию, которая принимает позиции p1 и p2 и проверяет, бьет ли фигура, находящаяся на позиции p1, фигуру на позиции p2. Эта функция — то единственное, что будет отличать задачу о расстановке ферзей от задачи расстановки слонов (или других фигур), поэтому я не вижу смысла решать другие задачи перед тем, как приступать к задаче расстановке ферзей.

Алгоритм задачи прост. Разобьем задачу на N шагов, на каждом k-том шаге будем искать все варианты расстановки ферзя на k-тую диагональ таким образом, чтобы этот ферзь не бил никакого из ферзей, выбранных на предыдущих шагах. Если это условие выполняется, мы переходим к следующему шагу, запоминая этот вариант, в противном случае откатываемся назад.

Решение задачи упростится, если вспомнить, что список как монада представляет собой модель недетерминированных вычислений, что само по себе предоставляет средства для «выбора варианта» и «отката назад», про которые я говорил в описании алгоритма.

Цитата Сообщение от T-90SM Посмотреть сообщение
как мне написать экземпляр класса Num для Chess_fig?
Не нужно этого делать. Фигура — это не число, ты не можешь сложить два числа, найти их разность, найти абсолютное значение (abs) или знак (signum) фигуры. Chess_fig плохо подходит для того, чтобы делать его экземпляром Num.

PS. В идиоматическом коде на Haskell используется lowerCamelCase для именования функций и UpperCamelCase для типов данных и классов. В общем, hlint — твой друг.
1
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
10.05.2013, 18:51  [ТС]
О! Класс!!!

Так понимаю следующее:
берем размер доски n
у нас получается на первом шаге n*n вложенных списков в каждом из которых по 1 слону или ферзю
дальше к каждому списку добавляем по 1 ферзю или слону - то из 1 списка получается еще дофига списков... где-то мы не можем дальше работать - удаляем варианты и в конце получаем дофига расстановок так?

хотя нет, берем ставим ферзя, затем еще, еще , если не получается - возвращаемся...
как сделать возврат? я так понимаю, что без знаний о монадах я не справлюсь?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
10.05.2013, 19:27
Цитата Сообщение от T-90SM Посмотреть сообщение
берем размер доски n
у нас получается на первом шаге n*n вложенных списков в каждом из которых по 1 слону или ферзю
дальше к каждому списку добавляем по 1 ферзю или слону - то из 1 списка получается еще дофига списков... где-то мы не можем дальше работать - удаляем варианты и в конце получаем дофига расстановок так?
Немного не так. На каждом шаге мы имеем список частичных решений, которые мы получили на предыдущем шаге.

Так вот, на первом шаге этот список пуст. Мы выбираем один из вариантов расположения первого ферзя на первой горизонтали: (1, 1), (1, 2), ..., (1, n - 1), (1, n). Для каждого варианта проверяем, допустим ли он с учетом частичных решений полученных на предыдущем шаге (очевидно, что в данном случае все варианты подходят, т.к. список частичных результатов еще пуст). Переходим ко второму шагу.

На втором шаге список частичных решений следующий: [[(1, 1)], [(1, 2)], ..., [(1, n - 1)], [(1, n)]]. Выбираем один из вариантов расположения второго ферзя на второй горизонтали: (2, 1), (2, 2), ..., (2, n - 1), (2, n). Теперь для каждого варианта и для каждого частичного решения проверяем, подходит ли вариант к частичному решению. И т.д.

Цитата Сообщение от T-90SM Посмотреть сообщение
как сделать возврат? я так понимаю, что без знаний о монадах я не справлюсь?
Почитай вот это руководство: http://www.randomhacks.net/art... 15-minutes.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
10.05.2013, 20:07
О подпоследовательностях. Фактически - это задача о генерации всех подмножеств конечного множества. Из комбинаторики известно, что для множества из n элементов, множество всех подмножеств содержит 2n (включая и пустое множество!). Вот простая функция, генерирующая все подмножества для строки:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
setOfSets :: String -> [String]
setOfSets s | ((length s) == 1) = [[],s]
            | otherwise = ss ++ map (\ x -> cs : x) ss
              where ss = setOfSets (tail s) ; cs = (head s)
 
Main> setOfSets "abc"
["","c","b","bc","a","ac","ab","abc"]
 
Main> setOfSets "abcde"
["","e","d","de","c","ce","cd","cde","b","be","bd","bde","bc","bce","bcd","bcde"
,"a","ae","ad","ade","ac","ace","acd","acde","ab","abe","abd","abde","abc","abce
","abcd","abcde"]
1
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 01:53  [ТС]
Цитата Сообщение от Nameless One Посмотреть сообщение
Для решения задачи будет полезно сначала определить функцию, которая принимает позиции p1 и p2 и проверяет, бьет ли фигура, находящаяся на позиции p1, фигуру на позиции p2. Эта функция — то единственное, что будет отличать задачу о расстановке ферзей от задачи расстановки слонов (или других фигур), поэтому я не вижу смысла решать другие задачи перед тем, как приступать к задаче расстановке ферзей.
Haskell
1
2
3
4
5
data Chess_fig = Queen Int Int deriving (Show, Eq)
 
check_pos_q :: Chess_fig -> [Chess_fig] -> Bool
check_pos_q _ [] = False
check_pos_q (Queen a b) ((Queen c d):xs) = (((a == c) || (b == d)) || (((a - b) == (c-d)) || ((a + b) == (c + d)))) || (check_pos_q (Queen a b) xs)



Catstail, у меня такое решение
Haskell
1
2
3
4
5
6
7
8
9
10
11
import Data.List
 
 
createsubseq :: (Eq a) => [a] -> [[a]]
createsubseq [] = error "Zero-list";
createsubseq xs = nub(nonzerocreatesubseq xs);
 
 
nonzerocreatesubseq :: [a] -> [[a]]
nonzerocreatesubseq [] = []
nonzerocreatesubseq a = [a]  ++ nonzerocreatesubseq (take ((length a) - 1) a) ++ nonzerocreatesubseq (drop 1 a)
Добавлено через 21 минуту
если честно я до конца не понял

вот есть доска 4 на 4

ставим ферзи
первая итерация - на 0-й вертикали ставятся по 1 ферзю - получаем 4 частичных решения по 1 ферзю в каждой
вторая итерация - на 1-й вертикали ставятся по 1 ферзю - получаем для каждого решения первой итерации по 1-2 доп варианта - итого получается 2 + 1 + 1 + 2 = 6 частичных решений
третья итерация - на 2-й вертикали ставим ферзи - часть решений не прокатывает - отбрасываем.
четвертая итерация - на 3-й вертикалии ставим ферзи... должно получиться 2 расстановкии.
Просто можно же забацать функцию с аккумулятором где будет храниться список из расстановочных списков, а решения, не имеющие продолжения - удалять.
А в чем прикол монад? Как тогда с ними сделать?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 04:41
> (((a - b) == (c-d)) || ((a + b) == (c + d))))

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

Цитата Сообщение от T-90SM Посмотреть сообщение
Просто можно же забацать функцию с аккумулятором где будет храниться список из расстановочных списков, а решения, не имеющие продолжения - удалять.
Можно.

Цитата Сообщение от T-90SM Посмотреть сообщение
А в чем прикол монад?
Тебе не придется вручную удалять неподходящие решения.

Цитата Сообщение от T-90SM Посмотреть сообщение
Как тогда с ними сделать?
Смотри по той ссылке. Тебе, кстати, по сути и не надо знать, что это монада. Оператор <- выполняет выбор решения, функция guard выполняет проверку условия и одновременно отсекает все варианты, которые не прошли проверку.
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 13:12  [ТС]
проверку диагонали исправил

Haskell
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
data Chess_fig = Queen Int Int deriving (Show, Eq)
type Choice a = [a]
 
choose :: [a] -> Choice a
choose xs = xs
 
mzero :: Choice a
mzero = choose []
 
guard :: Bool -> Choice ()
guard True = return ()
guard False = mzero
 
check_pos_q :: Chess_fig -> [Chess_fig] -> Bool
check_pos_q _ [] = False
check_pos_q (Queen a b) ((Queen c d):xs) = (((a == c) || (b == d)) || ((abs(a - c) == abs(b - d)))) || (check_pos_q (Queen a b) xs)
 
 
create_all_var :: Int -> Int -> [Chess_fig]
create_all_var size vert = [(Queen a vert) | a <- [0..(size-1)]]
 
get_part_sol size n acc = do
  x <- choose acc
  y <- choose $ create_all_var size n
  guard(not (check_pos_q y x))
  return (x,y)
работает!!!

теперь надо подумать как организовать цикл от 0 до size-1
и готово

а по слонам не совсем понятно. просто фишка в том, что слоны не бьют по вертикалям и горизонталям и поэтому на 1 горизонталь можно уместить все n слонов, а можно и 1 - как тогда быть?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 13:20
Цитата Сообщение от T-90SM Посмотреть сообщение
работает!!!
Только choose и Choice можно безболезненно убрать, они там были только для демонстративных целей ☺

Вместо определения mzero и guard просто импортируй Control.Monad, они там уже определены.

Цитата Сообщение от T-90SM Посмотреть сообщение
теперь надо подумать как организовать цикл от 0 до size-1
Рекурсия?

Цитата Сообщение от T-90SM Посмотреть сообщение
а по слонам не совсем понятно. просто фишка в том, что слоны не бьют по вертикалям и горизонталям и поэтому на 1 горизонталь можно уместить все n слонов, а можно и 1 - как тогда быть?
Вот поэтому и решают задачу о размещении ферзей, а не слонов.

PS. Твое решение все больше и больше напоминает мое ☺
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 13:29  [ТС]
Haskell
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
import Control.Monad
 
data Chess_fig = Queen Int Int deriving (Show, Eq)
 
 
 
check_pos_q :: Chess_fig -> [Chess_fig] -> Bool
check_pos_q _ [] = False
check_pos_q (Queen a b) ((Queen c d):xs) = (((a == c) || (b == d)) || ((abs(a - c) == abs(b - d)))) || (check_pos_q (Queen a b) xs)
 
 
create_all_var :: Int -> Int -> [Chess_fig]
create_all_var size vert = [(Queen a vert) | a <- [0..(size-1)]]
 
 
get_part_sol size n acc = do
  x <- acc
  y <- create_all_var size n
  guard(not (check_pos_q y x))
  return (x:y)
 
queens_xxx :: Int -> Int -> [[Chess_fig]] -> [[Chess_fig]]
queens_xxx g size pos_list = 
    if g == (size-1) then pos_list
    else queens_xxx (g+1) size (get_part_sol size g pos_list)
 
queen :: Int -> [[Chess_fig]]
queen size = queens_xxx 0 size [[]]
только тут проблемы с компиляцией, надо еще подумать...


так как решить задачу с размещением слонов? - функция проверки будет другой. дальше может ставить не по диагонально, а использовать все варианты?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 13:38
Цитата Сообщение от T-90SM Посмотреть сообщение
так как решить задачу с размещением слонов? - функция проверки будет другой
Ну вот и используй эту другую функцию.
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 13:48  [ТС]
так... с ферзями окончательно разобрался, все работает!!!

сейчас попробую написать слонов...

так реально, то что слоны будут по вертикалям расфасовываться - это как то неправильно вроде, или я не дооцениваю всю мощь хаскеля?))
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 13:54
Цитата Сообщение от T-90SM Посмотреть сообщение
так реально, то что слоны будут по вертикалям расфасовываться - это как то неправильно вроде, или я не дооцениваю всю мощь хаскеля?))
Нет, это потому, что слоны бьют друг друга «реже», чем ферзи, и для достаточно больших n (>= 3) на доске nxn возможно разместить больше n слонов. Повторюсь, именно поэтому решают задачу о расстановке именно ферзей, а не слонов.
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 14:02  [ТС]
да, а мне надо расставить n слонов на доске n*n... ладно, сейчас проверю кодом
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 14:10
Вот, кстати, мое решение, оно получилось эквивалентным:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{-# LANGUAGE TupleSections #-}
 
import Control.Monad
import Data.Functor
 
type Pos = (Int, Int)
type Solution = [Pos]
 
isSafe :: Pos -> Pos -> Bool
isSafe (x1, y1) (x2, y2) =
    x1 /= x2 && y1 /= y2 && abs (x1 - x2) /= abs (y1 - y2)
 
queens :: Int -> [Solution]
queens n = queens' 1 [[]]
    where queens' k sols | k > n     = sols
                         | otherwise = queens' (succ k) $ do
            queen <- (k,) <$> [1..n]
            solution <- sols
            guard $ all (isSafe queen) solution
            return $ queen : solution
Добавлено через 4 минуты
Цитата Сообщение от T-90SM Посмотреть сообщение
да, а мне надо расставить n слонов на доске n*n... ладно, сейчас проверю кодом
Так в стартовом сообщении у тебя же были ферзи, нет?

Вот, к примеру, на доске 4x4 можно как минимум 6 слонов разместить:

Code
1
2
3
4
5
6
7
8
9
+-+-+-+-+
|i| | | |
+-+-+-+-+
|i| | |i|
+-+-+-+-+
|i| | |i|
+-+-+-+-+
|i| | | |
+-+-+-+-+
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 14:13  [ТС]
мне нужно решить 2 задачи из 4-х на выбор.

количество расстановок n ферзей или коней или слонов на доске n*n
или получить число из списка чисел с помощью операций + * и ( ) всеми возможными способами
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.05.2013, 14:20
T-90SM, боюсь, данный алгоритм будет искать способ расставить максимальное число фигур на доске заданного размера. Можно попробовать ограничить длину списка-решения числом n, это даст нам ограничение на число фигур. Но мне кажется, при этом мы получим не все возможные решения.
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 11
11.05.2013, 15:29  [ТС]
не... я думаю, что за каждую итерацию просто по 1 фигуре добавлять и все. и вариантов для подстановки предлагать n*n штук в каждом шаге.

Добавлено через 27 минут
Haskell
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
import Control.Monad
 
data Chess_fig = Elephant Int Int deriving (Show, Eq)
 
check_pos_el :: Chess_fig -> [Chess_fig] -> Bool
check_pos_el _ [] = False
check_pos_el (Elephant a b) ((Elephant c d):xs) = ((abs(a - c) == abs(b - d)) || (check_pos_el (Elephant a b) xs))
 
create_all_var_el :: Int -> Int -> [Chess_fig]
create_all_var_el size vert = [(Elephant a b) | a <- [0..(size-1)], b <- [vert..(size-1)]]
 
 
get_part_sol_el size n acc = do
  x <- acc
  y <- create_all_var_el size n
  guard(not (check_pos_el y x))
  return (x ++ [y])
 
elephants_xxx :: Int -> Int -> [[Chess_fig]] -> [[Chess_fig]]
elephants_xxx g size pos_list =
    if g == size then pos_list
    else elephants_xxx (g+1) size (get_part_sol_el size g pos_list)
 
elephant :: Int -> [[Chess_fig]]
elephant size = elephants_xxx 0 size [[]]
вот для слонов...
для размера 2 выводит нормально, а для размера 3 - 33 расстановки - многовато...
я так понял, что надо просто из вариантов выбора выбрасывать уже расставленные фигуры, а то ведь получается, что слон 0 0 и слон 0 1 - первая итерация, а вторая слон 0 0, слон 0 1 и слон 0 1 слон 0 0 - это неправильно...
либо надо все расставить в конце и удалить лишнее, либо что то еще.

Добавлено через 35 минут
Nameless One, огромное спасибо за помощь!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2013, 15:29
Помогаю со студенческими работами здесь

Написать функцию str(t), которая в заданном текстовом файле t подсчитывает количество непустых строк
Помогите пожалуйста. Надо: Написать функцию str(t), которая в заданном текстовом файле t подсчитывает количество непустых строк, в...

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

Написать функцию, которая возвращает массив символов с элемента N по M из заданной строки
Стоит задача написать функцию, которая возвращает массив символов с элемента N по M из заданной строки str. Пишу так, но ничего не...

Для заданной строки текста определите слова, которые содержат символы, отличные от букв
Здравствуйте, помогите пожалуйста с задачей. Для заданной строки текста определите слова, которые содержат символы, отличные от букв....

SFML Audio порождает множество ошибок
Всем привет. Подключаю SFML к проекту - выдаёт кучу ошибок. До этого подключал не к форме, а просто к с++ коду - всё работало. Прикрепляю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru