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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.83
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
#1

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

23.09.2010, 11:55. Просмотров 5423. Ответов 17
Метки нет (Все метки)

Условие. В заданном алфавите слов найти все анаграммы.
Входные данные. Есть файл "input.txt" в нем список слов.
Выходные данные. Вывести в "out.txt" те слова к который будут найдены анаграммы из исходного алфавита.

У меня сейчас основная проблема состоит в чтении этого списка слов. т.к. не известно их кол-во да и длины тоже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 11:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск анаграмм во входном файле (C++):

Поиск анаграмм - C++
Доброй ночи! Такая задачка... Возможно многим знакома по Золотому байту. Я в самом начале изучения С++ и до конца не могу разобраться. ...

Строка: Поиск анаграмм - C++
Дана строка длиной не более 255 символов, в которой вписаны слова, разделенные пробелами (словом считается любой набор букв и цифр). ...

Подсчет кол-ва символов в строке во входном файле - C++
Подскажите как подсчитать кол-во символов в строке, введенная из файла, тип char. Заранее спасибо.

Посчитать количество слов во входном файле и записать его в результирующий - C++
Добрый вечер. Прошу помощи в доработке программы. Задание состоит в следующем: из Input_1.txt считываются слова, производится их...

Заменить каждое слово во входном файле на его зеркальное отображение - C++
Напишите программу, которая принимает на вход два параметра: имя входного файла, имя выходного файла. Программа должна заменить каждое...

Рекурсивная процедура для печати в обратном порядке текста, заданного во входном файле - C++
Разработать рекурсивную процедуру для печати в обратном порядке текста, заданного во входном файле (за текстом следует точка)

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

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

Формат выходных данных
Выходной файл содержит все слова из входного словаря, для которых во входном словаре были обнаружены анаграммы. Каждое слово записано на отдельной строке. Кодировка результирующего файла – win-1251. Если в словаре, загруженном из входного файла нет анаграмм, в результирующем файле должна быть одна строка «нет анаграмм».
0
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;
}
2
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:03  [ТС] #5
mrMRak, Ого и вот эту прогу вы называете очень простую... блин
0
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 15:09 #6
с применением стла..

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

да и задание там не ясное. Например будут ли слова Дом\дом считатся разными? то еесть важен ли регистр, иначе надо модифицировать тот код что написан выше.. да и еще куча нюансов.
1
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:30  [ТС] #11
А есть еще какие то варианты считывания списка слов из файла для дальнейшей их обработки (stl::list или вообще без использования stl)?
0
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 15:32 #12
угу, побуквенно =) погуглите куча ж примеров есть.. это базовые принципы работы с файлами.
0
papochka
33 / 33 / 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();
}
мм?
0
mramerican
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 15:53  [ТС] #14
Цитата Сообщение от mramerican Посмотреть сообщение
А есть еще какие то варианты считывания списка слов из файла для дальнейшей их обработки...
а вы papochka продемонстрировали как просто считать из файла и вывести на экран

Цитата Сообщение от mrMRak
погуглите куча ж примеров есть..
да вот как раз гуглил, нашел кучу примеров как считать 2-а слова ну и чот с ними сделать а не список слов(((
0
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 16:13 #15
считайте слова в динамический массив.. где каждый элемент это ссылка на слово, а слово заканчивается буковой переходом новой строки. эсли вы и это не умете, тогда просто берите учебник по С++ и начинайте читать его.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 16:13
Привет! Вот еще темы с ответами:

Определить четность произвольной перестановки N чисел. Во входном файле записано само число N и затем N чисел - C++
Определить четность произвольной перестановки N чисел. Во входном файле записано само число N и затем N чисел - перестановка. Ответ:...

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле - C++
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим папкам пройтись и из каждой папки в этом файле достать...

Комбинаторика, количество анаграмм - C++
Здравствуйте, решаю задачу, но не знаю какой цикл использовать и как его задать. Суть задачи проста, в консоль вводят слово, далее...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
23.09.2010, 16:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru