Перейти к содержанию

Программа в которой упорядочиваются слова по количеству в них букв "А"


Рекомендуемые сообщения

бъёш на отдельные слова->считаеш сколько в каждом слове букв "А"->сортиш по этому признаку->оставляеш новую строку.

Предлагаю ввести новое правило в разделе, давать только алгортим + отдельно чинит чужой код =)

Ссылка на комментарий

вот в том то и дело, я то я не знаю как в каждом слове, по отдельности подсчитать ААА и перемещать слова. Может слова в массив ввести и там отсортировать и вывести ? (если можно, объясните как вводить слова в массив ) *29 :dontknow:

Ссылка на комментарий

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

Предлагаю ввести новое правило в разделе, давать только алгортим + отдельно чинит чужой код =)

Хорошая идея.

Ссылка на комментарий

Может слова в массив ввести и там отсортировать и вывести ? (если можно, объясните как вводить слова в массив )

ёпт мы же это ещё в сентябре проходили

Ссылка на комментарий


module Main where

import System.Environment
import Data.Char
import Data.List (intersperse)
import Control.Arrow

sort [] = []
sort ((cnt, line):lines) =
[(x,y) | (x,y) <- lines, x < cnt] ++ [(cnt,line)] ++
[(x,y) | (x,y) <- sort lines, x >= cnt]

count_chars:: Char-> String ->(Int, String)
count_chars char word =
(length $ filter (==char) word, word)

split:: (Char-> Bool)-> String->[String]
split f string = split' f string []
where
split' f [] tmp = tmp
split' f string tmp =
let h = takeWhile f string
t = case dropWhile f string of
[] -> []
some -> tail some
in split' f t $ (h:tmp)
sort_by:: Char->String->[String]
sort_by char string =
map (\(cnt, word)-> word) $ sort $ map (count_chars char ) $
split (isAlpha) string

main = do
args <- getArgs
let char = head $ head args
out = sort_by char $ head $ tail args
putStrLn $ "needed char: " ++ head args
putStrLn $ "source string: " ++ (head $ tail args)
putStrLn $ "result: " ++ ( concat $ intersperse " " out)

что то типо того (:

Ссылка на комментарий
извиняюсь )) нужна прога на делфи *31
ржунимагу зачем тебе прога на делфи просто сразу иди в сельское хозяйство. ЗАдача на самом деле элементарная и если ты не можешь даже представить как ее решать (я не говорю уже о реализации) то грош тебе цена как кодеру.

Добавлено спустя 4 минуты 7 секунд:


#/usr/bin/python
parStr = raw_input("Source string: ")
parSym = raw_input("Sort by char?: ")
ls = parStr.split(" ")
ls.sort(key=lambda sr: str.count(sr, parSym))
print ' '.join([str(x) for x in ls])

Согласен!!! Питон рулит

Ссылка на комментарий

X-tender

Все рулит если, как говорится, "руки растут откуда надо" :yes:.

payk

Вот тебе привели кучу готовых алгоритмов, так что твоя задача свелась к элементарному переписыванию этого на Delphi.

Ссылка на комментарий

Ну, вот так еще, но, тоже не в одну строку)


module Main where

import System.Environment
import Data.Char
import Data.List (intersperse,sortBy)
import Data.List.Split
import Control.Arrow

main = do
args <- getArgs
let char = head $ head args
chars = length . filter (==char)
sort' a b | chars a < chars b = LT
| chars a > chars b = GT
| otherwise = EQ
sort = tail >>> head >>> splitWhen (not . isAlpha) >>> sortBy sort'
putStrLn $ "needed char: " ++ [char]
putStrLn $ "source string: " ++ (tail >>> head) args
putStrLn $ "result: " ++ ( sort >>> intersperse " " >>> concat) args

Ссылка на комментарий

payk

Вот тебе привели кучу готовых алгоритмов, так что твоя задача свелась к элементарному переписыванию этого на Delphi.

как выучу С+ или на чем вы там делаете, так и переведу может быть ))

Ссылка на комментарий

Так и никто и не написал кода на С++. Хотя и на нем бы код был короток и особенно ПОНЯТЕН. При этом скорость работы думаю была бы выше чем у новомодных руби перла)

а на паскале тебе надо? вот тебе примерно, переписывай))))

функция подсчет количества букв(строка, буква)

начало

от начала строки и до конца

если наш символ, то прибавляем счетчик

возващаем счетчик, изначально равный нулю))

конец

начало

заводим массив строк для хранения слов

считываем строку

от начала и до конца строки бежим,

и накапливаем слово

если нашли пробел, заносим слово в конец массива, обнуляемя слово

после цикла проверили слово на пустоту, вдруг не пустое, надо тода его тоже

занести в конец массива слов.

//слова считали, можно сортировать

от 0 до количества слов

от нуля до количества слов

если подсчет количества букв(слово текущее, А) больше чем подсчет количества

букв(слово следующее, А), то меняем их местами

ну все, от 0 и до количества слов

выводим слова

конец

фуууу, ну все, до здравствует ПСЕВДОКОД!!!!

отныне все пишите лузерам ТОЛЬКО ПСЕВДОКОДЫ!!!!

зато научатся думать если захотят. Тупых людей не бывают,бывают ленивые

Ссылка на комментарий

X-tender ну чтож, вопрос интереса для каждого свой) Ну хотя думаю ни для какого новичка 1 строчка непонятного кода ничего не скажет)))). А про С++ я упомянул для payk, он же там говорил что

как выучу С+ или на чем вы там делаете, так и переведу может быть ))
. Так что и не сомневаюсь что нет трудностей для человека знающего язык, а приводить строчки кода надо не для такого новичка, а там на миптах и тимусах, где можно посоревноваться с достойными в этом деле
Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...