Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- #include <string.h>
- #include <conio.h>
- // Функция для проверки, являются ли два слова одинаковыми
- bool compare_string(char * a, char * b) {
- if (strlen(a) != strlen(b)) {
- return false;
- }
- else {
- for (int i = 0; i < strlen(a); i++) {
- if (a[i] != b[i]) {
- return false;
- }
- }
- return true;
- }
- }
- // Функция для поиска элемента в массиве
- bool find_in_array(int n, int * arr, int size) {
- for (int i = 0; i < size; i++) {
- if (arr[i] == n) {
- return true;
- }
- }
- return false;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- char str[512];
- printf("Введите строку: ");
- gets_s(str, 512);
- printf("Введенная строка: ");
- puts(str);
- int spaces = 0;
- for (int i = 0; i < strlen(str); i++) {
- if (str[i] == ' ') {
- spaces++;
- }
- }
- // Создание массива с количеством элементов = количество пробелов + 1. В строке всегда
- // на 1 слово больше, чем пробелов
- char **words = new char*[spaces + 1];
- for (int i = 0; i < spaces + 1; i++) {
- words[i] = new char[32];
- }
- // Запись каждого слова в массив words
- int count = 0;
- int char_counter = 0;
- for (int i = 0; i < strlen(str); i++) {
- if (str[i] != ' ') {
- words[count][char_counter] = str[i];
- char_counter++;
- }
- else {
- words[count][char_counter] = '\0';
- char_counter = 0;
- count++;
- }
- }
- // После окончания цикла последняя строка останется not null terminated. Исправляем
- words[spaces][char_counter] = '\0';
- // Составляем массив, содержащий индексы слов, которые уже встречались
- int * repeating_index = new int[spaces + 1];
- int index = 0;
- for (int i = 0; i < spaces; i++) {
- for (int j = i + 1; j < spaces + 1; j++) {
- if (compare_string(words[i], words[j])) {
- repeating_index[index] = j;
- index++;
- }
- }
- }
- // Выводим те слова, которые не встречаются в массиве повторяющихся слов
- printf("Строка без повторяющихся слов: ");
- for (int i = 0; i < spaces + 1; i++) {
- if (!find_in_array(i, repeating_index, spaces + 1)) {
- printf("%s ", words[i]);
- }
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement