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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объявление переменных в условной конструкции C++ http://www.cyberforum.ru/cpp-beginners/thread1536346.html
Добрый день, возник вот такой вопрос: объявляю переменную внутри условной конструкции. В случае, если условие выполняется, вроде бы всё правильно и выводит единичку. А вот в случае, если условие не выполняется, он выводит 0, хотя по идеи он должен либо выводить 1 (если в else доступна переменная, объявленная в условной конструкции), либо выдавать ошибку (так как переменная не глобальная и она не...
C++ Разбор программы #include<iostream> using namespace std; void func1(); void func2(); int f; int main() { http://www.cyberforum.ru/cpp-beginners/thread1536308.html
C++ Распаковка zip-архива средствами С++
Помогите считать из zip-архива файлы в кодировке Unicode (UTF-8). Долго копался в ресурсах на эту тему, но так и не нашел решения. Среди рассмотренных вариантов были: - библиотека zlib (она умеет непосредственно сжимать/разжимать файлы, но, как и я, не понимает структуру архива) - библиотека unzipper (помещает содержимое сжатого файла в строковую переменную строго в формате ANSI, и потому...
Особенности while (pch != NULL) C++
Здравствуйте! Подскажите, почему пример ниже завершается ошибкой? Ведь если pch == NULL, то запись в вектор не должна производиться? В массиве char str есть непечатные символы, которые тут не отображаются, но как я понимаю, проблема не в этом. Мне нужно записать элементы массива в структуру, на свои места, но у меня пока не получатся даже запись в вектор. #define _CRT_SECURE_NO_WARNINGS...
C++ Умножение цифр каждого 6 цифрового числа http://www.cyberforum.ru/cpp-beginners/thread1536185.html
вывести на экран умножение цифр каждого 6 цифрового числа от 100 000 ... 999 999 И как всегда не правильно результат выводит. unsigned DobNum(unsigned number) { unsigned dob = 0; for ( number = 100000; number < 999999; ++number) { dob = (number % 10)*dob; number = number / 10; }
C++ Размер динамического массива Здравствуйте. Есть такой код: #include <iostream> #include <conio.h> #include <clocale> #include <ctime> using namespace std; void CreateRandomArray(int*&, int, int, int); void PrintArray(int*); подробнее

Показать сообщение отдельно
makaroshka
2 / 2 / 0
Регистрация: 17.09.2013
Сообщений: 121

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

23.09.2015, 12:28. Просмотров 283. Ответов 6
Метки (Все метки)

Задание:
Для решения задачи вам нужно ввести строки с помощью функций gets или fgets, разбить строку на слова и выбрать нужные (функция scanf с форматом %s вводит строку до пробела, но в данной задаче вам не нужно так делать!). Стандартные функции работы со строками НЕ использовать! Обратите внимание, что во всех случаях слова могут разделяться любым (!) количеством символов, не относящихся к слову (будем считать, что к слову относятся большие и маленькие латинские буквы и цифры). Желательно всю обработку выполнить за один проход строки, хотя это возможно не во всех вариантах. Обязательно проверить работу программы на пустой строке и на строке, состоящей только из символов, не относящихся к слову.

Основное задание:
Сформировать строку, удалив из каждого слова исходной строки повторяющиеся в нем буквы.

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
#include <locale.h>;
 
using namespace std;
 
int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "Russian");
    char m[256], tmp[10];
    FILE *file1;
    char a[1];
    char res[256];
    int k;
    int l;
    if (argc < 2) {
        printf("Недостаточно аргументов\n");
    }
    else {
        if ((file1 = fopen(argv[1], "r")) == NULL)
        {
            printf("Невозможно открыть файл '%s'\n", argv[1]);
            return 0;
        }
        fgets(m, 256, file1);
        fclose(file1);
        for (k = 0; m[k] != '\0'; k++);
        m[k] = *" ";
        m[k + 1] = '\0';
 
        cout << m << "\n";
 
        k = 0;
        res[0] = '\0';
        for (int i = 0, j = 0; m[i] != '\0'; i++) {
            if (m[i] >= 'a' &&  m[i] <= 'z') {
                tmp[j++] = m[i];
            }
 
            else {
            
 
                 for (int p = 0; p<j; p++)
                        for (int k = p+1; p<j; k++)
                            if (tmp[p] == tmp[k]) {
                                for (int m = k; tmp[m] != '\0'; m++) {
                                    res[l++] = tmp[m+1]; 
                                    k--; }
                            }
                    j = 0;
                }
 
 
 
            }
 
 
        res[l - 1] = '\0';
 
        cout << "\nRES: ";
        for (int i = 0; res[i] != '\0'; i++)
            cout << res[i];
    }
 
    return 1;
}
Входной файл: mama papa ";;@ bratyk sestri :^2 deda

Программа не работает, просто закрывается
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru