Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 39
1

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

08.04.2014, 22:08. Показов 1559. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В файле-словаре найти и распечатать слова, которые могут быть
полностью составлены из других слов словаря с помощью
конкатенации, например: “БАЛКОН” = “БАЛ” + “КОН”; “БАРСУК”
= “БАР” + “СУК”.

– Для решения задач не использовать стандартные строковые функции.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2014, 22:08
Ответы с готовыми решениями:

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

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

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

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

4
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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
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
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 13:35
Помогаю со студенческими работами здесь

Найти слова в текстовом файле которые составлены ТОЛЬКО из гласных букв
Вроде не сложная задача, но как то вообще не идет.Только начал изучать Java. Нужно найти слова в...

Найти два самых длинных слова, которые полностью состоят из более коротких слов того же массива
Задача такая. Дан набор слов. Слово это не смысловая единица, а просто набор символов. Если что, их...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru