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

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

Войти
Регистрация
Восстановить пароль
 
cansellxgodx
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 39
#1

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

08.04.2014, 22:08. Просмотров 590. Ответов 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
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <io.h>
#include <stdio.h>
 
 
 
 
 
 
int main()
{
  // сначала отрываем файл file
  // и читаем данные в массив
  char *dict[100];
 
  int i = 0;
  while (!feof(file)) {
    char buf[64];
    fscanf(file, "%s", buf);
    dict[i] = malloc(strlen(buf) + 1);
    strcpy(dict[i], buf);
   ++i;
  }
  int n = i; // n количество элементов в массиве
 
  // ну и тут уже ищем в массиве чего так да как.
  for (i = 0; i < n;) {
    char buf[32];
    bzero  (buf, 32); // забить нулями
    strcat(buf, dict[i]);
    int j;
    for (j = 0; j < n) {
      strcat(buf, dict[j]);
      int k;
      // на этом этапе имеем в buf результат конкатинации двух строк
      for (k = 0; k < n; ++k) {
         if (strcmp(dict[k], buf) == 0) { // если одно из слов совпало с результатом конкатинации
           printf("%s\n", dict[k]);
         }
      }
      // освободим буфер от второго слова в нем.
      k = strlen(dict[j]);
      bzero(&buf[k + 1], 32 - k - 1);
    }
  }
 
  // в конце программы надо освободить память.
  for (i = 0; i < n; ++i) {
    free(dict[i]);
  }
  return 0;
}
>------ Построение начато: проект: ConsoleApplication57, Конфигурация: Debug Win32 ------
1> ConsoleApplication57.cpp
1>c:\users\vanya\documents\visual studio 2012\projects\consoleapplication57\consoleapplication57\consoleapplication57.cpp(20): error C2065: file: необъявленный идентификатор
1>c:\users\vanya\documents\visual studio 2012\projects\consoleapplication57\consoleapplication57\consoleapplication57.cpp(20): fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2014, 22:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря (C++):

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

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

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

Распечатать те слова, которые являются обращениями других слов в этом предложении - C++
1. Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать те слова, которые являются обращениями других слов в...

Строки: Выбрать из слов те, которые могут быть получены из образца по правилу - C++
Помогите пожалуйста решить задачу по теме &quot;Строки&quot;: Приняв первое слово за образец, выбрать из остальных слов те, которые могут быть...

Вывести только те слова, которые могут без искажений быть записаны латинскими символами - C++
3.Дан текст на русском языке. Вывести только те слова, которые могут без иска* жений быть записаны латинскими символами. Например, MAMA,...

4
zss
Модератор
Эксперт С++
6576 / 6138 / 2021
Регистрация: 18.12.2011
Сообщений: 15,994
Завершенные тесты: 1
08.04.2014, 22:32 #2
C++
1
2
3
4
5
...
FILE* file;
file=fopen("c:\\temp\\myfile.txt","rt");
while (!feof(file)) {
...
Кстати, а для чего добавлены?
#include <iostream>
#include <fstream>
#include <io.h>
1
cansellxgodx
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 39
09.04.2014, 01:04  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
 char *dict[100];
 
  int i = 0;
  FILE* file;
file=fopen("c:\\temp\\myfile.txt","rt");
while (!feof(file)) {
  while (!feof(file)) {
    char buf[64];
    fscanf(file, "%s", buf);
     dict[i] = malloc(strlen(buf) + 1);
подчеркивает
dict[i] = malloc(strlen(buf) + 1); и пишет
значения типа void нельзя присвоить сущности типа Char
что мне сделать? Подскажите пожалуйста)
0
zss
Модератор
Эксперт С++
6576 / 6138 / 2021
Регистрация: 18.12.2011
Сообщений: 15,994
Завершенные тесты: 1
09.04.2014, 07:27 #4
C++
1
dict[i] = (char*)malloc(strlen(buf) + 1);
А зачем Вам вообще malloc? Вы ведь пишете на С++!
C++
1
2
3
dict[i] = new char[strlen(buf) + 1];
...
delete[] dic[i];
0
cansellxgodx
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 39
09.04.2014, 13:35  [ТС] #5
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <io.h>
#include <stdio.h>
#define bzero
 
 
 
 
 
 
int main()
{
  // сначала отрываем файл file
  // и читаем данные в массив
  char *dict[100];
 
  int i = 0;
  FILE* file;
file=fopen("D:\Games\\lol.txt","rt");
while (!feof(file)) {
 
    char buf[64];
    fscanf(file, "%s", buf);
     dict[i] = new char[strlen(buf) + 1];
    strcpy(dict[i], buf);
    
    
   ++i;
   
  }
  int n = i; // n количество элементов в массиве
 
  // ну и тут уже ищем в массиве чего так да как.
  for (i = 0; i < n;) {
    char buf[32];
    bzero  (buf, 32); // забить нулями
    strcat(buf, dict[i]);
    int j;
    for (j = 0; j < n;) {
      strcat(buf, dict[j]);
      int k;
      // на этом этапе имеем в buf результат конкатинации двух строк
      for (k = 0; k < n; ++k) {
         if (strcmp(dict[k], buf) == 0) { // если одно из слов совпало с результатом конкатинации
           printf("%s\n", dict[k]);
         }
      }
      // освободим буфер от второго слова в нем.
      k = strlen(dict[j]);
      bzero(&buf[k + 1], 32 - k - 1);
    }
  }
 
  // в конце программы надо освободить память.
  for (i = 0; i < n; ++i) {
    free(dict[i]);
  }
  return 0;
}
короч вот, но не работает)ничего не выводит.Пожалуйста) помогите))
0
09.04.2014, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2014, 13:35
Привет! Вот еще темы с ответами:

Подсчитать в заданной строке число слов, которые могут быть разделены пробелом, табуляцией, переводом строки - C++
Объясните пожалуйста,в чем ошибка? #include&lt;stdio.h&gt; #include&lt;string.h&gt; int *words(char *s) { int len=strlen(s),i,k=1,l=0; ...

Найти в файле все слова, которые можно сложить из букв заданного слова - C++
Дано слово р и файл f.найти в файле f все слова которые можна сложить с букв слова р.

Среди элементов массива найти индексы всех таких, которые могут быть получены cуммированием двух элементов - C++
Вот задачка помогите, ЛЮДИ Среди элементов массива найти индексы всех таких, которые могут быть получены cуммированием двух элементов...

Для заданного длинного слова найти в словаре все слова - C++
Для заданного длинного слова найти в словаре все слова, в которых использованы только буквы, которые присутствуют в заданном слове ...


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

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

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