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

Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) - C++

Восстановить пароль Регистрация
 
_ROBERT_
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 44
04.06.2013, 01:11     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) #1
помогите пожалуйста.
(задача В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных.)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Const st='.....';
Var s,s1:string;
    i,k:byte;
    ch:char;
Begin
    write('Введите строку: ');readln(s);
    write('Введите символ: ');readln(ch);
    s:=s+' ';
    While Pos(' ',s)>0 do
    Begin
      s1:=Copy(s,1,Pos(' ',s)-1);
      Delete(s,1,Pos(' ',s));
      if odd(Length(s1))and(s1[1]=ch) then
      Begin
        k:=0;
        For i:=1 to Length(s1) do
         if Pos(s1[i],st)>0 then inc(k);
        writeln('В слове ',s1,' доля согласных = ',k);
      End;
    End;
    readln;
End.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 01:11     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных)
Посмотрите здесь:

Процент слов в тексте, которые начинаются с заданного символа C++
C++ Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером
Определить количество гласных и согласных букв в тексте C++
Определить номера позиций гласных букв в данном тексте на русском языке C++
C++ Определить, каких букв — гласных или согласных — больше в данном тексте
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
04.06.2013, 01:34     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) #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
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
 
bool isVowel(char c)
{
    c = tolower(c);
    return c=='a' || c=='e' || c=='i' ||
           c=='o' || c=='u' || c=='y';
}
int main()
{
    char filterChar = 'd';
    string str, word;
    getline(cin, str);
    istringstream iss(str);
    while (iss >> word)
        if ( !(word.size() % 2) && word[0]==filterChar )
            cout << word << "\tVowels: "
                 << count_if(begin(word), end(word), isVowel);
 
    return 0;
}
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.06.2013, 03:24     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) #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
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <string>
using std::string;
 
int main()
{
    string s("Hellow world worobor wrodobor ga worlloyd dada");
    string s1("aeiouy");
    string s2;
    char ch='w';
    int count(0);
    cout <<"Vvedite ctroky... ";
    getline(cin,s);
    cout <<"Vvedite cimvol... ";
    cin >>ch;
    
    int pos=s.find(ch);
    
    while(pos!=string::npos)
    {
        if(s[pos-1]!=' ')
        {
            pos=s.find(ch,pos+1);
            continue;
        }
        int pos1=s.find(' ',pos);
        s2=s.substr(pos,pos1-pos);
        if(s2.length()%2==0)
        {
            cout <<"s2= "<<s2<<endl;
            int fined=s2.find_first_of(s1);
            while(fined!=string::npos)
            {
                count++;
                fined=s2.find_first_of(s1,fined+1);
            }
        }
        pos=s.find(ch,pos+1);
    }
 
    cout <<"count= "<<count<<endl;
 
    return 0;
}
_ROBERT_
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 44
04.06.2013, 04:20  [ТС]     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) #4
Olivеr,
ninja2, спасибо большое если не сложно можно комментарий к телу программы?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.06.2013, 10:53     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных) #5
Цитата Сообщение от _ROBERT_ Посмотреть сообщение
ninja2, спасибо большое если не сложно можно комментарий к телу программы?
Да не сложно, от примерно расписал, что какая строка делает.
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
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <string>
using std::string;
 
int main()
{
    //создаем переменные
    string s;//("Hellow world worobor wrodobor ga worlloyd dada");
    //буквы которые нужно подсчитать
    string s1("aeiouy");
    //переменная для слов
    string s2;
    //символ для начала слов
    char ch;//='w';
    //количество элементов нужных слов
    int count(0);
    cout <<"Vvedite ctroky... ";
    getline(cin,s);//ввод строки
    cout <<"Vvedite cimvol... ";
    cin >>ch;//ввод символа
    //поиско первой позиции в строке символа
    int pos=s.find(ch);
    //пока позиция не равна string::npos
    //(string::npos-этонаверно признак конца строки)
    while(pos!=string::npos)
    {
        //позиция в средине слова
        if(s[pos-1]!=' ')
        {
            //поиск следущей позиции
            pos=s.find(ch,pos+1);
            continue;//конец итерации, переход на новую
        }
        //да это начало слова
        
        //ищем конец слова-вторая позиция
        int pos1=s.find(' ',pos);
        //в s2 записываем слово
        s2=s.substr(pos,pos1-pos);
        //если s2 четное
        if(s2.length()%2==0)
        {
            cout <<"s2= "<<s2<<endl;//вывод s2
            //находим первую позиция в s2
            //любого символа из s1
            int fined=s2.find_first_of(s1);
            //опка fined не равно признаку конца строки
            //наверно find_first_of(s1) вернет его
            //я просто подсмотрел в примере кода, так делают
            while(fined!=string::npos)
            {
                count++;//увеличиваем счетчик
                //переход к следующей позиции
                fined=s2.find_first_of(s1,fined+1);
            }
        }//конец if
        //переход к следущей позиции поиска слова
        pos=s.find(ch,pos+1);
    }//конец цикла while()
    
    //вывод результатов
    cout <<"count= "<<count<<endl;
 
    return 0;
}
Yandex
Объявления
04.06.2013, 10:53     Pascal -> C++ (В данном тексте в словах четной длины, начинающихся с заданного символа, определить количество гласных)
Ответ Создать тему
Опции темы

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