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

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

Войти
Регистрация
Восстановить пароль
 
FreeYourMind
136 / 136 / 55
Регистрация: 13.11.2016
Сообщений: 380
#1

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

24.12.2016, 14:42. Просмотров 261. Ответов 5
Метки нет (Все метки)

доброго времени суток. прошу помоч знающих людей. вобщем задание такое.. есть строка, выбрать из нее все латинские гласные буквы и составить строку без повторений (я так понимаю без одинаковых подряд идущих элементов). код я написал, оно работает, но есть одно НО. в случае если получается 4 одинаковых символа подряд, удаляется только 2, если 3 то удаляется 1.. как ни пытался я любить код он ласкам не поддается и стоит на своем.. помогите поправить пожалста
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
void main(){
    char first[150];
    char gl[] = "AEYUIOaeyuio";
    char out[200];
    int glL=strlen(gl);
    int z=0;
    int firstL = strlen(first);
    cin.getline(first, 150);
    for (int i=0; i<firstL; i++)
    {
        for (int j=0; j<glL; j++)
        {
            if (first[i]==gl[j]){
                out[z]=first[i];
                z++;
                break;
                }
            
            if (first[i]=='\0'){
                out[z] = '\0';
            }
        }
    }
    cout << "output string: \n " << out << endl;
    int outL = strlen(out);
    for (int i=0; i<outL; i++)
    {                                               ////////
        if (out[i] == out[i+1]){                    //касяк
            for (int j=i; j<outL; j++){             ///тут
                out[j] = out[j+1];                  ////////
            }
        }
    }
    cout << "string without repeats:\n" << out << endl;
    system("pause");
}
желательно не прибегая к классу string
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2016, 14:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Составить новую строку из всех гласных латинских букв исходной строки без повторений (C++):

Записать в новую строку все слова исходной строки у которых количество букв кратно 3 - C++
Ввести рядок s, длинною до 70-и символов. В рядах s3 записать все слова ряда S, в каких количество букв кратно 3.

Записать в новую строку слова исходной строки, в которых повторяющихся букв больше неповторяющихся - C++
Условие задачи:Записать в новую строку слова исходной строки, в которых повторяющихся букв больше неповторяющихся.(Выполнить следующие...

Дана строка S и натуральное число N. Создать новую строку, включив в нее все слова из N букв исходной строки - C++
Дана строка S и натуральное число N. Cформировать новую строку, включив в нее все N-буквенные слова исходной строки. Слова в результирующей...

Дана строка из 20 слов. Сформировать строку, составленную из последних букв всех слов исходной строки - C++
Задача: дана строка из 20 слов (или любого другого числа). Сформировать строку, составленную из последних букв всех слов исходной строки.

Сформировать новую строку из 7-символьных слов, состоящих из латинских букв, не имеющих аналогов записи в русском языке - C++
Задан текст, состоящий из слов, записанных через запятые и/или пробел, и заканчивающийся точкой. Длина текста не больше 150 символов, могут...

Из строки сформировать отдельно строку латинских и строку русских букв - C++
1. Массивы и указатели. Ввести строку латинских и русских букв вперемешку в одинаковом количестве. Сформировать из нее отдельно две строки...

5
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
24.12.2016, 17:03 #2
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
#include <iostream>
using namespace std;
 
void main()
{
    char gl[] = "AEYUIOaeyuio";
 
    char s[150];
    char s_out[150];
 
    cin.getline(s,150);
 
    char tmp = '\0';
    int q = 0;
    for (int i = 0; i < strlen(s); i++)
    {
        for (int j = 0; j < strlen(gl); j++)
        {
            if (s[i] == gl[j] && s[i] != tmp)
            {
                tmp = s[i];
                s_out[q++] = s[i];
            }
        }
    }
 
    s_out[strlen(s_out)] = 0;
    cout << s_out << endl;
}
1
FreeYourMind
136 / 136 / 55
Регистрация: 13.11.2016
Сообщений: 380
24.12.2016, 19:26  [ТС] #3
amaralikyr, как то не так работает..
0
Миниатюры
Составить новую строку из всех гласных латинских букв исходной строки без повторений  
amaralikyr
61 / 61 / 23
Регистрация: 18.09.2015
Сообщений: 207
Завершенные тесты: 1
24.12.2016, 19:32 #4
у меня так...
0
Миниатюры
Составить новую строку из всех гласных латинских букв исходной строки без повторений  
FreeYourMind
136 / 136 / 55
Регистрация: 13.11.2016
Сообщений: 380
24.12.2016, 19:35  [ТС] #5
аа ну у меня визуалка 2008.. просто настоятельно просил препод учиться на этой же версии что бы потом у него неполадок не было.. попробую еще похимичить.. все равно спасибо за помощ =)
0
FreeYourMind
136 / 136 / 55
Регистрация: 13.11.2016
Сообщений: 380
24.12.2016, 20:14  [ТС] #6
вобщем вроде как сделал.. теперь работает как запланировал.. правда если кто то захочет поправить против не буду.. может кому пригодится
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void main(){
    char first[150];
    char gl[] = "AEYUIOaeyuio";
    char out[150];
    int glL=strlen(gl), z=0, firstL = strlen(first);
    cin.getline(first, 150);
    for (int i=0; i<firstL; i++)
    {
check:
        for (int j=0; j<glL; j++)
        {
            if (first[i]==gl[j]){
                if (out[z-1] == first[i]){
                    i++;
                    goto check;
                }
                out[z]=first[i];
                z++;
                }
            
            if (first[i]=='\0'){
                out[z] = '\0';
            }
        }
    }
    cout << "string without repeats:\n" << out << endl;
    system("pause");
}
0
Миниатюры
Составить новую строку из всех гласных латинских букв исходной строки без повторений  
24.12.2016, 20:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2016, 20:14
Привет! Вот еще темы с ответами:

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

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

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

Алгоритм удаления гласных букв из строки без использования методов класса String - C++
Помогите хоть один написать. это на C# надо, но можно и на C++. Алгоритм удаления гласных букв из строки без использования методов...


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

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

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