Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/32: Рейтинг темы: голосов - 32, средняя оценка - 4.69
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
1

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

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

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

У меня сейчас основная проблема состоит в чтении этого списка слов. т.к. не известно их кол-во да и длины тоже.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2010, 11:55
Ответы с готовыми решениями:

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

Строка: Поиск анаграмм
Дана строка длиной не более 255 символов, в которой вписаны слова, разделенные пробелами (словом...

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

Напечатать в обратном порядке заданный во входном файле текст
Помогите пожалуйста написать программу на языке С++. Нужно напечатать в обратном порядке заданный...

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

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

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

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

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

Цитата Сообщение от mrMRak
погуглите куча ж примеров есть..
да вот как раз гуглил, нашел кучу примеров как считать 2-а слова ну и чот с ними сделать а не список слов(((
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 16:13 15
считайте слова в динамический массив.. где каждый элемент это ссылка на слово, а слово заканчивается буковой переходом новой строки. эсли вы и это не умете, тогда просто берите учебник по С++ и начинайте читать его.
1
2 / 2 / 0
Регистрация: 19.09.2010
Сообщений: 14
23.09.2010, 16:40  [ТС] 16
Цитата Сообщение от mrMRak Посмотреть сообщение
считайте слова в динамический массив.. где каждый элемент это ссылка на слово, а слово заканчивается буковой переходом новой строки. эсли вы и это не умете...
Спасибо за помощь
0
2 / 2 / 3
Регистрация: 14.11.2009
Сообщений: 44
25.09.2010, 17:05 17
mramerican,просто гениально!смысл олимпиады тогда в чём???
0
23 / 3 / 1
Регистрация: 07.01.2012
Сообщений: 50
20.07.2012, 07:59 18
Прошу прощения, а есть у кого-нибудь скомпиленая программа?

Просто ставить С++ для единоразового использования больно не хочется
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2012, 07:59

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

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