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

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

Восстановить пароль Регистрация
 
Yuran239
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 2
04.11.2013, 13:22     Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей #1
Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей

Например: tetrad rebus real получится ttrrad
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 13:22     Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей
Посмотрите здесь:

Дана строка. Вывести все слова, содержащиеся в строке, в столбец. C++
Строка является отрывком кода на языке С. Вывести все содержащиеся в ней комментарии. C++
C++ Вывести все содержащиеся в массиве нечетные числа в порядке возрастания их индексов
C++ Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов
C++ Вывести все содержащиеся в массиве четные числа в порядке убывания их индексов, а также их количество
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 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 строку).
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 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;
}
Yuran239
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 2
04.11.2013, 21:31  [ТС]     Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей #4
Спасибо большое ребят
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
04.11.2013, 21:47     Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей #5
Цитата Сообщение от Yuran239 Посмотреть сообщение
Спасибо большое ребят
Рад помочь! Вторую часть программы нужно дать или по типу первой смастерите?
Yandex
Объявления
04.11.2013, 21:47     Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей
Ответ Создать тему
Опции темы

Текущее время: 07:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru