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

переделать чаровскую прогу по строкам в string - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
23.11.2011, 20:48     переделать чаровскую прогу по строкам в string #1
Вот задание проги:
Словом в строке считается последовательность букв латинского алфавита, остальные символы являются разделителями между словами. За один просмотр символов строки найти все слова с максимальной долей гласных букв (т.е. прописных и строчных символов ’a’, ’e’, ’i’, ’o’, ’u’, ’y’) и занести их в новую строку. Слова в новой строке должны разделяться ровно одним пробелом
и вот прога с использованием строки с типом char *:
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
#include <iostream>
using namespace std;
 
void main ()
{
setlocale(LC_ALL, ".1251");
char *str=new char [301];
cout<<"Введите строку.\n";
cin.getline(str, 301);
char *str1=new char [301];
strcpy(str1,str);
char *str2[30];
int z, i=0, kol=0, kol1=0, r=0, len=strlen(str1);
while (r<len)
{
if ((((str1[r]>='a')&&(str1[r]<='z'))||((str1[r]>='A')&&(str1[r]<='Z')))&&((r==0)||((str1[r-1]<'A')||((str1[r-1]>'Z')&&(str1[r-1]<'a'))||(str1[r-1]>'z'))))
{
for (z=r; (((str1[z]>='a')&&(str1[z]<='z'))||((str1[z]>='A')&&(str1[z]<='Z'))); ++z)
{
if ((str1[z]=='a')||(str1[z]=='o')||(str1[z]=='e')||(str1[z]=='i')||(str1[z]=='u')||(str1[z]=='y')||(str1[z]=='A')||(str1[z]=='O')||(str1[z]=='E')||(str1[z]=='U')||(str1[z]=='Y')||(str1[z]=='I'))
++kol;
else
++kol1;
}
str1[z]='\0';
if (kol>kol1)
{
str2[i]=&str1[r];
++i;
}
r=z+1;
kol1=0,kol=0;
}
else
++r;
}
if (i==0)
cout<<"В введённой строке нет слов с максимальной долей гласных букв.\n";
else
{
char final[300];
strcpy(final,str2[0]);
for (int g=1; g<i; ++g)
{
strcat(final," ");
strcat(final,str2[g]);
}
cout<<final<<endl;
}
}
помогите пожалуйста ее переделать, чтобы всместо чаровских были задействованы Строки String
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
04.12.2011, 21:44     переделать чаровскую прогу по строкам в string #21
Цитата Сообщение от Алексей_123 Посмотреть сообщение
а мне по заданию необходимо ,чтобы вместо the.cat на месте точке стал пробел , то есть the cat
- тогда вообще просто либо заменили pos символ на пробел, либо стёрли string::erase и вставили пробел string::insert
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
#include <iostream>
#include <sstream>
using namespace std;
 
//Вернёт true если гласных в слове больше чем согласных
bool IsMoreVowels(string str)
{
    string vowels = "aeiouy";
    int length = str.length();
    int i, nVowels = 0;
    for(i = 0; i < length; i++)
    {
        if(vowels.find(tolower(str[i]),0) != -1)
            nVowels++;
    }
    return (length - nVowels) < nVowels;
}
 
void ErasePunktSigns(string &str)
{
    string delims = ",.!?;-";
    for(int i = 0,pos; i < delims.length(); i++)
    {
        //Методично стираем все знаки пунктуации
        //и заменяем их на пробелы
        while((pos = str.find(delims[i],0)) != -1)
        {
            str[pos] = ' ';
        //  аналогично методами
        //  str.erase(pos,1);
        //  str.insert(pos," ");
        }
    }
}
 
int main()
{
    //setlocale(LC_ALL, ".1251");
    system("chcp 1251");
    char text[1024] = {0};
    cout<<"Введите строку (не более 1024 символов)\n";
    cin.getline(text, 1024);
    string str = text, output;
    ErasePunktSigns(str);
    cout<<"String after erasing delimeters :\n"<<str.c_str()<<endl;
 
    stringstream ss;
    ss.str(str);
    
    while(ss>>str)
    {
        if(IsMoreVowels(str))
            output += (str + " ");
    }
    cout<<"Words with MoreVowels : "<<output.c_str()<<endl;
    system("pause");
    return 0;
}
Миниатюры
переделать чаровскую прогу по строкам  в string  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
05.12.2011, 20:31  [ТС]     переделать чаровскую прогу по строкам в string #22
а можно еще узнать, что выполняет функция stringstream ss?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 20:47     переделать чаровскую прогу по строкам в string
Еще ссылки по теме:

Переделать прогу с паскаля в Вижуал C++
C++ Задача по строкам!String
переделать программу Pascal -> C++ (Восстановить исходную матрицу и напечатать ее по строкам) C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
05.12.2011, 20:47     переделать чаровскую прогу по строкам в string #23
Цитата Сообщение от Алексей_123 Посмотреть сообщение
а можно еще узнать, что выполняет функция stringstream ss?
- это не функция а поток сходный с fstream-ским
http://www.cplusplus.com/reference/i.../stringstream/
Yandex
Объявления
05.12.2011, 20:47     переделать чаровскую прогу по строкам в string
Ответ Создать тему
Опции темы

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