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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
#1

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

23.11.2011, 20:48. Просмотров 1144. Ответов 22
Метки нет (Все метки)

Вот задание проги:
Словом в строке считается последовательность букв латинского алфавита, остальные символы являются разделителями между словами. За один просмотр символов строки найти все слова с максимальной долей гласных букв (т.е. прописных и строчных символов ’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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
27.11.2011, 13:35  [ТС]     переделать чаровскую прогу по строкам в string #2
вот основные функции, которыми можно пользоваться: assign, append, insert, replace, erase, find, rfind, find_first_of, find_last_of, find_first_not_of, find_last_not_of, compare, getline, c_str.
-=ЮрА=-
Заблокирован
Автор FAQ
27.11.2011, 13:40     переделать чаровскую прогу по строкам в string #3
Алексей_123, посмотрите как можно легче всё реализовать
Строки в С++, не могу понять что неправильно в программе
переделайте под себя, если что спрашивайте подскажу
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
28.11.2011, 15:51  [ТС]     переделать чаровскую прогу по строкам в string #4
не могли бы вы мне подсказать, какие функции из моей программы мне заменять на stringовские?

Добавлено через 7 часов 5 минут
посоветуйте пожалуйста)

Добавлено через 18 часов 40 минут
ну так что?
-=ЮрА=-
Заблокирован
Автор FAQ
28.11.2011, 22:01     переделать чаровскую прогу по строкам в string #5
Алексей_123, мне не понятно ваше нежелание что то написать самому имея почти готовый аналог, хорошо вот код
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
#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;
}
 
int main()
{
    system("chcp 1251");
    char text[1024] = {0};
    cout<<"Введите строку (не более 1024 символов)\n";
    cin.getline(text, 10244);
 
    stringstream ss;
    ss.str(text);
    string str, output;
    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
28.11.2011, 22:45  [ТС]     переделать чаровскую прогу по строкам в string #6
большое спасибо, но я же просто просил дать мне подсказку с чего лучше было начать, и можно узнать еще,как вы пользуетесь программой, так как в вижуал студии 2008 у меня код не реализуется, даже после подключения русского языка (setlocale(LC_ALL, ".1251")
-=ЮрА=-
Заблокирован
Автор FAQ
28.11.2011, 22:53     переделать чаровскую прогу по строкам в string #7
Цитата Сообщение от Алексей_123 Посмотреть сообщение
так как в вижуал студии 2008 у меня код не реализуется, даже после подключения русского языка (setlocale(LC_ALL, ".1251")
- не знаю что там не запускается!Возожно студия кривая, скрин дебага прилагаю
Миниатюры
переделать чаровскую прогу по строкам  в string  
-=ЮрА=-
28.11.2011, 22:54
  #8

Не по теме:

Цитата Сообщение от Алексей_123 Посмотреть сообщение
setlocale(LC_ALL, ".1251");
- это не самая хорошая руссификация, к томуже setlocale(LC_ALL, "1251"); по моему должно быть

Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
28.11.2011, 23:05  [ТС]     переделать чаровскую прогу по строкам в string #9
после замены system("chcp 1251"); на system("chcp 1251"); все начало работать

Добавлено через 41 секунду
после замены на setlocale(LC_ALL, ".1251");
-=ЮрА=-
Заблокирован
Автор FAQ
28.11.2011, 23:15     переделать чаровскую прогу по строкам в string #10
Цитата Сообщение от Алексей_123 Посмотреть сообщение
все начало работать
- это означает что вы удовлтворены?
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
28.11.2011, 23:17  [ТС]     переделать чаровскую прогу по строкам в string #11
спасибо еще раз
SleepMaster
28.11.2011, 23:37
  #12

Не по теме:

Ну ты плюсани Юре сообщения, он же старался

Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
28.11.2011, 23:51  [ТС]     переделать чаровскую прогу по строкам в string #13
а тут плюсы как-то на рейтинг влияют?)
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
29.11.2011, 00:01     переделать чаровскую прогу по строкам в string #14
Цитата Сообщение от Алексей_123 Посмотреть сообщение
а тут плюсы как-то на рейтинг влияют?)

Не по теме:

Я не знаю, лично мне бы просто было бы приятно. Человек на тебя время потратил, не логично было б ему "добавить рейтинга"?

Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
30.11.2011, 21:25  [ТС]     переделать чаровскую прогу по строкам в string #15
возникла проблема еще одна, программа не считает остальные символы разделителями между словами, как бы это реализовать?
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
#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;
}
 
int main()
{
    setlocale(LC_ALL, ".1251");
    char text[1024] = {0};
    cout<<"Введите строку (не более 1024 символов)\n";
    cin.getline(text, 1024);
 
    stringstream ss;
    ss.str(text);
    string str, output;
    while(ss>>str)
    {
        if(IsMoreVowels(str))
            output += (str + " ");
    }
    cout<<"Words with MoreVowels : "<<output.c_str()<<endl;
    system("pause");
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
01.12.2011, 21:55     переделать чаровскую прогу по строкам в string #16
Цитата Сообщение от Алексей_123 Посмотреть сообщение
не считает остальные символы разделителями между словами
- вытрите все символы !?,. посредством string::erase перед тем как запихнуть текст в stringstream
-=ЮрА=-
Заблокирован
Автор FAQ
01.12.2011, 22:13     переделать чаровскую прогу по строкам в string #17
В прочем, вот код
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
#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.erase(pos,1);
    }
}
 
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
04.12.2011, 16:53  [ТС]     переделать чаровскую прогу по строкам в string #18
вы наверное не так поняли, мне нужно было, чтобы он считал все остальные знаки, как знак пробела : то есть строку the.cat переделал в the cat
-=ЮрА=-
Заблокирован
Автор FAQ
04.12.2011, 16:55     переделать чаровскую прогу по строкам в string #19
Цитата Сообщение от Алексей_123 Посмотреть сообщение
вы наверное не так поняли, мне нужно было, чтобы он считал все остальные знаки, как знак пробела : то есть строку the.cat переделал в the cat
Алексей я сделал вытирку символов пунктуации т.е ваше the.cat стало thecat
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 18:10     переделать чаровскую прогу по строкам в string
Еще ссылки по теме:

Переделать задачу, с использованием <string.h> C++
C++ Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов
переделать программу Pascal -> C++ (Восстановить исходную матрицу и напечатать ее по строкам) C++
C++ Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю)
Переделать работу с текстом через string C++

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

Или воспользуйтесь поиском по форуму:
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
04.12.2011, 18:10  [ТС]     переделать чаровскую прогу по строкам в string #20
а мне по заданию необходимо ,чтобы вместо the.cat на месте точке стал пробел , то есть the cat
Yandex
Объявления
04.12.2011, 18:10     переделать чаровскую прогу по строкам в string
Ответ Создать тему
Опции темы

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