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

Цепочка слов - C++

Восстановить пароль Регистрация
 
Tokez
-3 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 20
23.08.2011, 14:40     Цепочка слов #1
Задача: Цепочка слов.
Вход – файл на диске in4.dat. состоящий из слов. Разделенных пробелами два последних слова символьное изображение чисел.
Выход – на экран дисплея.
Дано множество слов одинаковой длины, из них два слова выделены (выделенным словам соответствуют их номера, записанные в конце файла in4.dat). Построить цепь от первого выделенного слова ко второму так, чтобы все слова этой цепи были только из заданного множества слов и отличались от соседних элементов только одним символом. Например, если дано множество тор вол сын воз сор вор рот сыр сон (файл in2.dat: тор вол сын воз сор вор рот сыр сон 2 8) или (файл in2.dat : tor vol syn voz sor vor rot syr son 2 8), то на экране можно вывести цепь: вол вор сор сыр или vol vor sor syr.

ЧЕРЕЗ КОММЕНТЫ ОПИШИТЕ ПРОГРАММУ ГДЕ ЧТО ДЕЛАЕТСЯ!!!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 14:40     Цепочка слов
Посмотрите здесь:

Алгоритм цепочка (исправить код) C++
Массив строк. Вывести строки, в которых имеется самая длинная цепочка символа «*» C++
C++ Дана последовательность слов. Найти кол-во слов начинающихся с d и кончающихся буквой w
C++ Создать список слов из файла и подсчитать количество повторения этих слов
В массиве m x n проверить, имеется ли по горизонтали и вертикали цепочка, состоящая подряд из 5 единиц C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
23.08.2011, 14:55     Цепочка слов #2
Готов работать!
Изображения
 
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 15:15     Цепочка слов #3
Цитата Сообщение от Tokez Посмотреть сообщение
ЧЕРЕЗ КОММЕНТЫ ОПИШИТЕ ПРОГРАММУ ГДЕ ЧТО ДЕЛАЕТСЯ!!!!!!!
Как приказание звучит. Ни спасибо, ни пожалуйста, да и название темы как приказ, надо же...
easybudda
23.08.2011, 15:22
  #4
 Комментарий модератора 
2all: всё понимаю, но флудить прекращаем! Не хотите за господина чёрную работу делать - просто не делайте!
Tokez
-3 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 20
23.08.2011, 15:36  [ТС]     Цепочка слов #5
Цитата Сообщение от Olga_ Посмотреть сообщение
Как приказание звучит. Ни спасибо, ни пожалуйста, да и название темы как приказ, надо же...
НУ ИЗВИНИТЕ!!!!
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 15:46     Цепочка слов #6
Цитата Сообщение от Tokez Посмотреть сообщение
НУ ИЗВИНИТЕ!!!!
НУ держите первую задачку:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
int PrintWords(char *fileName)
{
   FILE *f;
   char s[500];
   if ((f = fopen(fileName, "rt")) == NULL)
      return 1;
   while (fscanf(f, "%s", s) != EOF)
      puts(s);
   fclose(f);
   return 0;
}
 
int main()
{
   PrintWords("in4.dat");
   return 0;
}
вторую сами
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 12:14     Цепочка слов
Еще ссылки по теме:

C++ Ввести n слов и упорядочить их так, чтобы получилась цепочка
Цепочка иерархии классов C++
C++ Создать список из слов. Подсчитать количество слов, совпадающих с последним словом

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
24.08.2011, 12:14     Цепочка слов #7
Цитата Сообщение от Tokez Посмотреть сообщение
Задача: Цепочка слов.
Вход – файл на диске in4.dat. состоящий из слов. Разделенных пробелами два последних слова символьное изображение чисел.
Выход – на экран дисплея.
Дано множество слов одинаковой длины, из них два слова выделены (выделенным словам соответствуют их номера, записанные в конце файла in4.dat). Построить цепь от первого выделенного слова ко второму так, чтобы все слова этой цепи были только из заданного множества слов и отличались от соседних элементов только одним символом. Например, если дано множество тор вол сын воз сор вор рот сыр сон (файл in2.dat: тор вол сын воз сор вор рот сыр сон 2 8) или (файл in2.dat : tor vol syn voz sor vor rot syr son 2 8), то на экране можно вывести цепь: вол вор сор сыр или vol vor sor syr.
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
#include<iostream>
#include<string>
#include<sstream>
#include<list>
#include<iterator>
#include<algorithm>
 
int operator-(std::string left,std::string right){
    std::string::iterator it=right.begin();
    return std::count_if(left.begin(),left.end(),[&it](char ch){return *it++!=ch;});
}
 
std::string chainWords(std::list<std::string>words, std::string s){
    words.remove(s);
    std::list<std::string>::reverse_iterator it=words.rbegin();
    std::string str;
    while(true){
        while(it!=words.rend() && *it-s!=1)++it;
        if(it!=words.rend()){
            if(*it==words.back())
                return s+=(" "+*it);
            if((str=chainWords(words,*it))!="")
                return s+=(" "+str);
            ++it;
        }
        else return "";
    }
}
 
int main(){
    std::string str="vol syn voz sor vor rot syr";//будем считать, что мы уже прочитали строку из файла и разобрались с диапазоном
    std::istringstream in(str);
    std::list<std::string> wordList;
    std::copy(std::istream_iterator<std::string>(in),std::istream_iterator<std::string>(),std::back_inserter(wordList));
    std::string res=chainWords(wordList,*wordList.begin());
    std::cout<<(res!="" ? std::string("Result : "+res) : "Can't find result")<<std::endl;
    return 0;
}
Цитата Сообщение от Tokez Посмотреть сообщение
ЧЕРЕЗ КОММЕНТЫ ОПИШИТЕ ПРОГРАММУ ГДЕ ЧТО ДЕЛАЕТСЯ!!!!!!!
Справку смотри тут
Так же, чтоб понять алгоритм, погугли "поиск (перебор) с возвратом" или "backtracking".
Yandex
Объявления
24.08.2011, 12:14     Цепочка слов
Ответ Создать тему
Опции темы

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