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

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


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

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

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

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

забиваем в строку все знаки препинания и проверяем есть ли текущий символ, там)

Тебе надо 2 алгоритма

1. - подсчет ААА в слове

2. - разболр на слова.

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

вот в том то и дело, я то я не знаю как в каждом слове, по отдельности подсчитать ААА и перемещать слова. Может слова в массив ввести и там отсортировать и вывести ? (если можно, объясните как вводить слова в массив ) *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)

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

Ссылка на комментарий
что то типо того (:

Или вот этого (:


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])
parStr = raw_input("Source string: ")

Ссылка на комментарий
извиняюсь )) нужна прога на делфи *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 и до количества слов

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

конец

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

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

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

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

danger, perl новомоден? он всего на 2 года моложе плюсов. Никакой трудности написать ни с ни на плюсах не состоит. Просто это не интересно.

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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