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

Найти все пары слов с наибольшим расстоянием. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создайте текстовый файл, содержащий сведения о клиентах фирмы http://www.cyberforum.ru/cpp-beginners/thread357743.html
Создайте текстовый файл, содержащий сведения о клиентах фирмы: наименование организации, дата основания, количество договоров на приобретение товаров, общая стоимость договоров. Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке увеличения количества...
C++ Строки и функции Написать функцию удаления всех символов "*", и повторить каждый символ отличный от "*". Вариант задания реализовать в виде функции. Если функция возвращает строку или объект, то это необходимо сделать через указатель. Строки динамические, размер вводится с клавиатуры. Строки вводить с клавиатуры. Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread357739.html
C++ графика в си++, рисование
Помогите подалуйста контур лица нарисовать((( никак не получается....все как то не ровно
написать программу, которая вводит и суммирует любое количество целочисленных значений C++
как написать программу, которая вводит и суммирует любое количество целочисленных значений. Если введено число 999, то на экран выводится результат суммирования
C++ Атд список. Удалить одинаковые элементы. http://www.cyberforum.ru/cpp-beginners/thread357736.html
Здравствуйте!!!!! Вот еще одна проблемка, расчитываю на Вашу помощь! Суть такова! Есть АТД список, в нем нужно оставить только те элементы которые входят в него один раз! Пример.
C++ Разработка и отладка алгоритмов и программ с применением пользовательских функций подскажите пожалуйста как реализовать задачи(код программы на языке С):scratch: 1)Описать функцию вещественного типа(параметры – x, ε), находящую приближенное значение функции exp(x)=1+x+x2 /(2!)+ x3/(3!)+ … +( xn/(n!)). 2)Описать функцию нахождения минимального элемента массива кратного 5. Функция возвращает позицию элемента. подробнее

Показать сообщение отдельно
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.09.2011, 16:55     Найти все пары слов с наибольшим расстоянием.
Дария_, на скорую руку накидал, попробуй как вариант а не решение данной задачи.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <fstream>
#include <iostream>
#include <set>
#include <string>
using namespace std;
#define SEPARATE  "\n\t,.:;!? +-/*\\\"'[](){}()\r "
 
struct scmp { 
    bool operator () (string s1, string s2) const{
        return s1.compare(s2) < 0;
   }
};
void tokenize(set<string, scmp>* coll, string str);
int  max_ch(const char* str1, const char* str2);
 
int  main(void) {
  set<string, scmp> swords;
  fstream  fp("D:\\words.txt", ios_base::in);
 
  if(! fp.is_open())
        exit(1);
 
  string str;
  while(! fp.eof()) {
       getline(fp, str, '\n');
       tokenize(&swords, str);
  }
  fp.close();
 
  // обработка с поиском схожести слов на символы
  int tmp, num;
  set<string, scmp>::iterator ptr, pos, oiter;
  set<string, scmp>::iterator iter = swords.begin();
  while(iter != swords.end()) {
       pos  = iter;
       oiter = iter;
       for(tmp = 0, ptr = ++iter; ptr != swords.end(); *ptr++) {
               num = max_ch(pos->c_str(), ptr->c_str());
               if(num > tmp) {
                  tmp = num;
                  oiter = ptr;
              }
       }
        if(tmp) { 
              cout.width(32);
              cout << pos->c_str() << "\t-" << tmp << "-\t" << oiter->c_str() << endl;
              *oiter = "";
              *pos   = "";
        }
  }
  swords.clear();
  system("pause");
  return 0;
}
 
// функция по разбивки строки на слова
void tokenize(set<string, scmp>* coll, string str) {
    string  sb;
    size_t  i = 0u;
    do {
          if(isalnum(str[i]) && i != str.length()) 
                 sb += str[i];
          else {
                if(sb.length() > 0u) 
                      coll->insert(sb);
                sb = "";
          }
     } while(++i <= str.length());
}
 
// подсчёт символов идентичности между словами
int  max_ch(const char* str1, const char* str2) {
  const char* str;
  int  len;
  for(len = 0; *str1; *str1++) {
          for(str = str2; *str; *str++) {
                if( *str == *str1 ) {
                       len++;
                       break;
                 }
           }
  }
  return len;
}
 
Текущее время: 04:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru