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

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

Войти
Регистрация
Восстановить пароль
 
Tokez
-3 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 20
#1

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

23.08.2011, 14:40. Просмотров 1020. Ответов 6
Метки нет (Все метки)

Задача: Цепочка слов.
Вход – файл на диске 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++
Построить диаграмму длины слов, входящих в текст, содержащий от 5 до 10 слов. C++
C++ Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Алгоритм цепочка (исправить код) C++
Подсчитать и вывести на экран число слов в ней, а затем и каждое отдельное слов C++
Массив строк. Вывести строки, в которых имеется самая длинная цепочка символа «*» C++
C++ Дана последовательность слов. Найти кол-во слов начинающихся с d и кончающихся буквой w
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
23.08.2011, 14:55     Цепочка слов #2
Готов работать!
Изображения
 
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_
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     Цепочка слов
Еще ссылки по теме:

В массиве m x n проверить, имеется ли по горизонтали и вертикали цепочка, состоящая подряд из 5 единиц C++
C++ Ввести n слов и упорядочить их так, чтобы получилась цепочка
Цепочка иерархии классов C++
Стек: создать список из слов, подсчитать количество слов, совпадающих с последним словом C++
C++ Вывести все цепочки, состоящие из букв a, b (цепочка должна содержать aabba)

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4469 / 2831 / 224
Регистрация: 12.12.2009
Сообщений: 7,201
Записей в блоге: 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     Цепочка слов
Ответ Создать тему
Опции темы

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