Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
NanoTMklesh
0 / 0 / 0
Регистрация: 11.02.2018
Сообщений: 29
1

Массив слов, присвоение

26.12.2018, 14:17. Просмотров 188. Ответов 0

Задача: составить массив неповторяющихся слов. Я ввожу в два файла строки. Далее беру их из файлов и создаю две библиотеки, где записаны все слова из этих строк. Потом сравниваю эти слова. Если такое слово уже есть в массиве неповторяющихся слов, то я пропуская это слово, если нету, то вношу его в директорию. Проблема возникла с присваиванием слова к директории. Быть может есть еще ошибки, которые я не вижу. Подскажите как исправить и можно ли сделать проще.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
#define SIZE 256
 
int main()
{
    setlocale(LC_ALL, "RUS");
    FILE *input_1, *input_2, *output;
 
    int libLen_1 = 0, //коли-во слов в библиотеке первой стрки
        libLen_2 = 0,//коли-во слов в библиотеке второй стрки
        flag = 0, //
        size_d = 0,
        poss_d = 0,
        poss = 0;
 
    char string_f_file[SIZE]; // строка для файлов
    char string_1[SIZE], string_2[SIZE]; // строка из первого и второго файла
    char library_1[SIZE][SIZE], library_2[SIZE][SIZE]; // библиотека слов
    char directory[SIZE][SIZE]; //непвторяющиеся слова
 
    //записываю в файлы строки из консоли
    input_1 = fopen("input1.txt", "w");
    printf("Введите строку для первого файла: "); gets (string_f_file);
    fputs(string_f_file, input_1);
    fclose(input_1);
    input_2 = fopen("input2.txt", "w");
    printf("Введите строку для второго файла: "); gets (string_f_file);
    fputs(string_f_file, input_2);
    fclose(input_2);
 
    //получаю из файлов
    input_1 = fopen("input1.txt", "r");
    input_2 = fopen("input2.txt", "r");
    fgets(string_1, SIZE, input_1);
    fgets(string_2, SIZE, input_2);
 
    for (int i = 0; i < strlen(string_1); i++) //создание первой библиотеки
    {
        poss = 0;
        char word[SIZE] = "";
        while (!isspace(string_1[i]) && i < strlen(string_1))
        {
            library_1[libLen_1][poss] = string_1[i];
            poss++;
            i++;
        }
        libLen_1++;
    }
    for (int i = 0; i < strlen(string_2); i++) //создание второй библиотеки
    {
        poss = 0;
        char word[SIZE] = "";
        while (!isspace(string_2[i]) && i < strlen(string_2))
        {
            library_2[libLen_2][poss] = string_2[i];
            poss++;
            i++;
        }
        libLen_2++;
    }
    // сравнение слов со словами из директории
    for (int q = 0; q < libLen_1; q++)
    {
        flag = 0;
        for (int j = 0; j < libLen_2; j++)
        {
            if (strcmp(library_1[q], library_2[j]) == 0)
            {
                for (int n = 0; n < size_d; n++) // проверка: есть ли уже такое слово в массиве
                {
                    if (strcmp(directory[n], library_1[q]) == 0)
                    {
                        flag++;
                    }
                }
                if (flag == 0)
                {
                    directory[poss_d] = library_1[q];
                    poss_d++;
                }
            }
            else
            {
                for (int n = 0; n < size_d; n++) // проверка: есть ли уже такое слово в массиве
                {
                    if (strcmp(directory[n], library_1[q]) == 0)
                    {
                        flag++;
                    }
                }
                if (flag == 0)
                {
                    directory[poss_d] = library_1[q];
                    poss_d++;
                }
            }
        }
    }
 
    fclose(input_1);
    fclose(input_2);
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2018, 14:17
Ответы с готовыми решениями:

Как объявить массив слов?
в массиве должны быть записаны слова - сто, двести, и т.д. до тысячи

Строка и массив из слов в строке.
Дана строка в виде предложения, причем известно, что слова отделены друг от друга пробелом....

Упорядочить массив слов цепочкой
Цепочка слов. Пусть слово – это последовательность от 1 до 8 символов, не включающая пробелов....

Массив: Сортировка слов по алфавиту
Всем добрый день! Помогите разобраться с задачей : Пользователь вводит слова, которые помещаются...

Получить из текста массив слов по разледителям
Помогите найти причину &quot;мусора&quot; в словах. Программа считывает текст из файла и разбивает его на...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2018, 14:17

Как строку преобразовать в массив слов
Подскажите как строку преобразовать в массив слов?

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

Занесение массива слов в массив структур
хочу все слова из текста записать в массив структур так, что в 1 структуре 1 слово, но не знаю как...


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

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

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