0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 2
1

Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей

04.11.2013, 13:22. Показов 499. Ответов 4
Метки нет (Все метки)

Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей

Например: tetrad rebus real получится ttrrad
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2013, 13:22
Ответы с готовыми решениями:

Вывести все согласные буквы, содержащиеся в слове наибольшей длины
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Вывести все...

Вывести все гласные буквы, содержащиеся в слове наибольшей длины
Дан массив из n слов произвольной длины (длина слова не превышает 80символов). Вывести все гласные...

Удалить из первой строки все символы, содержащиеся во второй строке
Ввести две символьный строки. Удалить из первой строки все символы, содержащиеся во второй строке....

Удалить из первой строки все символы, содержащиеся во второй строке
Ввести 2 символьные строки. Удалить из первой строки все символы, содержащиеся во второй строке....

4
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
04.11.2013, 17:53 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
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
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int findVowelInSecondString(char *secondString, int *indexOfLowelsInSecondString);
int findSameLowelsInFirstString(char *firstString, char *secondString, int *indexOfLowelsInSecondString, int numOfIndexes, int *indexesToDelete);
void deleteLowelsInFirstString(char *firstString, char *modifiedFirstString, int *indexesToDelete, int numOfIndexes);
bool isToDelete(int i, int *indexesToDelete, int numOfIndexes);
 
int main()
{
    char firstString[100], secondString[100], thirdString[100], modifiedFirstString[100];
    int indexOfLowelsInSecondString[100], indexesToDelete[100];
    int *ip = indexOfLowelsInSecondString, *iip = indexesToDelete;
    cout << "Enter first string: "; gets(firstString);
    cout << "\n" << "Enter second string: "; gets(secondString);
    cout << "\n" << "Enter third string: "; gets(thirdString);
    cout << "\n" << "Here are your string - first: " << firstString << ", second: " << secondString << " and third: " << thirdString;
    findVowelInSecondString(secondString, ip);
    int j = findVowelInSecondString(secondString, ip);
    for(int i = 0; i < j; i++) {
       cout << "\n" << indexOfLowelsInSecondString[i];
    }
    int k = findSameLowelsInFirstString(firstString, secondString, ip, j, iip);
    for(int i = 0; i < k; i++) {
        cout << "\n" << "We schould delete " << indexesToDelete[i] << " element of firstString, that is: " << firstString[indexesToDelete[i]];
    }
    cout << "\n";
    deleteLowelsInFirstString(firstString, modifiedFirstString, indexesToDelete, k);
    return 0;
}
 
int findVowelInSecondString(char *secondString, int *indexOfLowelsInSecondString) {
    int j = 0;
    for(int i = 0; secondString[i]; i++) {
        cout << "\n" << "Step " << i;
        switch(secondString[i]) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
        case 'y':
            indexOfLowelsInSecondString[j] = i;
            cout << "\n" << indexOfLowelsInSecondString[j];
            j++;
 
        }
    }
    return j;
}
 
int findSameLowelsInFirstString(char *firstString, char *secondString, int *indexOfLowelsInSecondString, int numOfIndexes, int *indexesToDelete) {
    int k = 0;
   for(int i = 0; firstString[i]; i++) {
         for(int j = 0; j < numOfIndexes; j++) {
            if(firstString[i] == secondString[indexOfLowelsInSecondString[j]]) {
                cout << "\n" << "SIMILARITY!!! firstString[" << i << "] = " << firstString[i] << " secondString[" << indexOfLowelsInSecondString[j] << "] = " <<  secondString[indexOfLowelsInSecondString[j]];
                indexesToDelete[k] = i;
                 cout << "\n" << "IndexesToDelete[" << k << "] = " << indexesToDelete[k] << " AND  i = " << i;
                k++;
                break;
            }
        }
    }
    return k;
}
 
void deleteLowelsInFirstString(char *firstString, char *modifiedFirstString, int *indexesToDelete, int numOfIndexes) {
    cout << "\n" << "firstString = " << firstString << ", numOfIndexes = " << numOfIndexes;
    int k = 0;
    for(int i = 0; firstString[i]; i++) {
        for(int j = 0, h = 0; j < numOfIndexes; j++, h++) {
                cout << "\n" << "STEP " << j << " and h is " << h;
            if(isToDelete(i, indexesToDelete, numOfIndexes)) {
                    modifiedFirstString[k] = firstString[i];
                    cout << "\n" << "Now " << k << " element of modifiedFirstString is " << modifiedFirstString[k] << " and " << k << " element of firstString is " << firstString[i];
                    cout << "\n" << "IndexesToDelete[" << h << "] = " << indexesToDelete[h] << " AND  i = " << i;
                    k++;
                    break;
 
            }
 
        }
    }
 
  
    cout << "\n" << "Modified string: ";
    for(int g = 0; modifiedFirstString[g]; g++) cout << modifiedFirstString[g];
}
 
bool isToDelete(int i, int *indexesToDelete, int numOfIndexes) {
    for(int j = 0; j < numOfIndexes; j++) {
        cout << "\n" << "j = " << j;
        if(i == indexesToDelete[j]) return false;
    }
    return true;
}
Добавлено через 31 минуту
Пардон, забыл break после case (подставьте в 48 строку).
1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
04.11.2013, 19:48 3
находим все гласные, считаем их, если они есть то удаляем их.
если у нас не гласные, то ищем где они встречались и вставляем его туда.

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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
/**
e y u i o a 
*/
 
int main() {
    string s1, s2, s3;
    stringstream ss;
    int count[6];
    for (int i=0; i<6; i++) {
        count[i] = 0;
    }
    cin >> s1 >> s2 >> s3;
 
    for (int i=0; i<s2.length(); i++) {
        if (s2[i] == 'e') {
            count[0]++;
        } else if (s2[i] == 'y') {
            count[1]++;
        } else if (s2[i] == 'u') {
            count[2]++;
        } else if (s2[i] == 'i') {
            count[3]++;
        } else if (s2[i] == 'o') {
            count[4]++;
        } else if (s2[i] == 'a') {
            count[5]++;
        }
    }
    
    for (int i=0; i<s1.length(); i++) {
        if (s1[i] == 'e' && count[0] != 0) {
            s1.erase(i, 1);
        } else if (s1[i] == 'y' && count[1] != 0) {
            s1.erase(i, 1);
        } else if (s1[i] == 'u' && count[2] != 0) {
            s1.erase(i, 1);
        } else if (s1[i] == 'i' && count[3] != 0) {
            s1.erase(i, 1);
        } else if (s1[i] == 'o' && count[4] != 0) {
            s1.erase(i, 1);
        } else if (s1[i] == 'a' && count[5] != 0) {
            s1.erase(i, 1);
        }
    }
    
    for (int i=0; i<s3.length(); i++) {
        if (s3[i] != 'e' && s3[i] != 'y' && s3[i] != 'u' && s3[i] != 'i' && s3[i] != 'o' && s3[i] != 'a') {
            for (int j=0; j<s1.length(); j++) {
                if (s1[j] == s3[i]) {
                    ss << s3[i];
                    string str;
                    ss >> str;
                    s1.insert(j, str);
                }
            }
        }
    }
    cout << s1;
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 2
04.11.2013, 21:31  [ТС] 4
Спасибо большое ребят
0
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
04.11.2013, 21:47 5
Цитата Сообщение от Yuran239 Посмотреть сообщение
Спасибо большое ребят
Рад помочь! Вторую часть программы нужно дать или по типу первой смастерите?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2013, 21:47

Удалить из первой строки все символы, содержащиеся во второй строке
Ввести 2 символьные строки. Удалить из первой строки все символы, содержащиеся во второй строке....

Даны две строки. Из множества символов первой строки удалить символы содержащиеся во второй строке.
составить программу для решения задач: 6. Даны две строки. Из множества символов первой строки...

Вывести все гласные буквы, содержащиеся в слове наибольшей длины и вывести число повторений каждой этой буквы
Вывести все гласные буквы, содержащиеся в слове наибольшей длины и вывести число повторений каждой...

Дано слово, заменить в нем гласные буквы на согласные, следующие за ним в алфавите, а согласные на гласные
Дано слово, заменить в нем гласные буквы на согласные, следующие за ним в алфавите, а согласные на...


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

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

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