Форум программистов, компьютерный форум CyberForum.ru

Поиск анаграмм во входном файле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.83
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 11:55     Поиск анаграмм во входном файле #1
Условие. В заданном алфавите слов найти все анаграммы.
Входные данные. Есть файл "input.txt" в нем список слов.
Выходные данные. Вывести в "out.txt" те слова к который будут найдены анаграммы из исходного алфавита.

У меня сейчас основная проблема состоит в чтении этого списка слов. т.к. не известно их кол-во да и длины тоже.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
G1m3rr
15 / 14 / 1
Регистрация: 06.03.2010
Сообщений: 30
23.09.2010, 12:02     Поиск анаграмм во входном файле #2
Слова как разделены?Запятая, точка, пробел, новая строка?
Дай пример того что на входе и того что должно быть на выходе, я те помогу написать, задача не сложная...
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 12:41  [ТС]     Поиск анаграмм во входном файле #3
хотя есть поправка на входные данные

Формат входных данных
Входной файл содержит список из слов в кодировке win-1251. Каждое слово записано на отдельной строке. Входной файл может быть пустым. Максимальное количество строк в исходном файле – 10000.

Формат выходных данных
Выходной файл содержит все слова из входного словаря, для которых во входном словаре были обнаружены анаграммы. Каждое слово записано на отдельной строке. Кодировка результирующего файла – win-1251. Если в словаре, загруженном из входного файла нет анаграмм, в результирующем файле должна быть одна строка «нет анаграмм».
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 14:29     Поиск анаграмм во входном файле #4
както так.. может чето не учел.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <fstream>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<string> words;
    
    ifstream infile("c:\\input.txt");
    ofstream outfile ("c:\\out.txt");
    copy(istream_iterator<string>(infile), istream_iterator<string>(), back_inserter(words));
   
    vector<string>::iterator wordIter,innerWordIter, iter ;
    string::iterator charIter;
    string enter("\n");
    string noAnargams("нет анаграмм");
    
    for (iter=words.begin(); iter!=words.end(); iter++)//вывод слов из входного файла на монитор..
        cout <<*iter <<"\n";
 
    int haveAnagrams=0;
    for (wordIter=words.begin(); wordIter!=words.end(); wordIter++)
    {
        for (innerWordIter=words.begin(); innerWordIter!=words.end(); innerWordIter++)
        {
            if(*wordIter==*innerWordIter) continue;
            string tempF = *wordIter;
            sort(tempF.begin(),tempF.end());
            string tempS= *innerWordIter;
            sort(tempS.begin(),tempS.end());
            if(tempF==tempS)
            {
                outfile<<*wordIter<<enter;
                haveAnagrams=1;
 
            }
        }
    }
    if(haveAnagrams==0)
        outfile<<noAnargams;
    system("pause");
    return 0;
}
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:03  [ТС]     Поиск анаграмм во входном файле #5
mrMRak, Ого и вот эту прогу вы называете очень простую... блин
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 15:09     Поиск анаграмм во входном файле #6
с применением стла..

а я не говорил что она не сложная, но на самом деле если ясен алгоритм вам то реализовать не проблема, тут нет ничего нетривиального.
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:12  [ТС]     Поиск анаграмм во входном файле #7
алгоритм хоть и не полностью понятен (буду разбираться), но понятно что нужно больше уделить времени на изучение stl
papochka
 Аватар для papochka
32 / 32 / 2
Регистрация: 14.11.2009
Сообщений: 137
23.09.2010, 15:19     Поиск анаграмм во входном файле #8
Задачка-то, отсюда? Очень странно, что первое задание для программистов, там именно такое...
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:21  [ТС]     Поиск анаграмм во входном файле #9
papochka, да верно, задача от туда. Сперва сам подумал что задача очень легкая, но как начал писать... столкнулся со многими проблемами
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 15:25     Поиск анаграмм во входном файле #10
легкость состоит в том, что все решается за 1 проход массива, наверное, да и представить данные можно в встроенных типах, только это будет не 50 строк, а 80-100 кода.
И плюс ко всему это чемпионат - надо ж отсеять много участников =)

да и задание там не ясное. Например будут ли слова Дом\дом считатся разными? то еесть важен ли регистр, иначе надо модифицировать тот код что написан выше.. да и еще куча нюансов.
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:30  [ТС]     Поиск анаграмм во входном файле #11
А есть еще какие то варианты считывания списка слов из файла для дальнейшей их обработки (stl::list или вообще без использования stl)?
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 15:32     Поиск анаграмм во входном файле #12
угу, побуквенно =) погуглите куча ж примеров есть.. это базовые принципы работы с файлами.
papochka
 Аватар для papochka
32 / 32 / 2
Регистрация: 14.11.2009
Сообщений: 137
23.09.2010, 15:43     Поиск анаграмм во входном файле #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
 
void main()
{
    char ch;
    ifstream in("C:\\read.txt", ios::in);
    if (!in)
    {
        cout << "Can't open file!\n";
    }
    while (in)
       {
        in.get(ch);
        if(in) cout << ch;
    }
    in.close();
    getch();
}
мм?
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:53  [ТС]     Поиск анаграмм во входном файле #14
Цитата Сообщение от mramerican Посмотреть сообщение
А есть еще какие то варианты считывания списка слов из файла для дальнейшей их обработки...
а вы papochka продемонстрировали как просто считать из файла и вывести на экран

Цитата Сообщение от mrMRak
погуглите куча ж примеров есть..
да вот как раз гуглил, нашел кучу примеров как считать 2-а слова ну и чот с ними сделать а не список слов(((
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 16:13     Поиск анаграмм во входном файле #15
считайте слова в динамический массив.. где каждый элемент это ссылка на слово, а слово заканчивается буковой переходом новой строки. эсли вы и это не умете, тогда просто берите учебник по С++ и начинайте читать его.
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 16:40  [ТС]     Поиск анаграмм во входном файле #16
Цитата Сообщение от mrMRak Посмотреть сообщение
считайте слова в динамический массив.. где каждый элемент это ссылка на слово, а слово заканчивается буковой переходом новой строки. эсли вы и это не умете...
Спасибо за помощь
Fuse
 Аватар для Fuse
2 / 2 / 0
Регистрация: 14.11.2009
Сообщений: 44
25.09.2010, 17:05     Поиск анаграмм во входном файле #17
mramerican,просто гениально!смысл олимпиады тогда в чём???
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2012, 07:59     Поиск анаграмм во входном файле
Еще ссылки по теме:

C++ Рекурсивная процедура для печати в обратном порядке текста, заданного во входном файле
Подсчет кол-ва символов в строке во входном файле C++
C++ Определить четность произвольной перестановки N чисел. Во входном файле записано само число N и затем N чисел

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

Или воспользуйтесь поиском по форуму:
toperx
 Аватар для toperx
23 / 3 / 1
Регистрация: 07.01.2012
Сообщений: 49
20.07.2012, 07:59     Поиск анаграмм во входном файле #18
Прошу прощения, а есть у кого-нибудь скомпиленая программа?

Просто ставить С++ для единоразового использования больно не хочется
Yandex
Объявления
20.07.2012, 07:59     Поиск анаграмм во входном файле
Ответ Создать тему
Опции темы

Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru