Форум программистов, компьютерный форум, киберфорум
Наши страницы

исправить функцию нахождения гласных букв в массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти все простые числа на отрезке [a,b]. http://www.cyberforum.ru/cpp-beginners/thread359616.html
Изучаем C++ месяц. Сейчас сидим на циклах. Условие задачи, собственно, и есть название темы. К сожалению, справиться с ней у меня не получается. Нашел только в гугле программу которая выводит простые...
C++ ln - ряд Тейлора double ln(double x, double eps) { double T,S; int K; T=x; K=1; S=T; do{ K=K+1; T=-T*x/K; S=S+T; http://www.cyberforum.ru/cpp-beginners/thread359587.html
printf и scanf против cin и cout C++
Друзья мои,стал учить плюсы и столкнулся с кучей противоречий. То что в С нет cin/cout я знаю. Но вот в С++ возможно использование printf/scanf. Объясните мне разницу этих операторов. Из того,что я...
C++ Помогите с макросом
нужно написать макрос(если это возможно) сейчас у меня код выглядит так: std::cin<<a<<b<<c; а после обработки должно выглядить так if(read)std::cout<<a<<b<<c; write(a);write(b);write(с); ...
C++ Функция Mid http://www.cyberforum.ru/cpp-beginners/thread359559.html
В бэйсике есть такая функция Mid на С++ есть ли такая функция ? Напишите если есть с примером и пояснением.
C++ Разработать класс «Студент» Добрый вечер)если не сложно , помогите реализовать одну из программ)а то на завтра нужно чтобы было всё готово, а дела не позволили справиться с этим на выходных) 1)Разработать класс «Студент».... подробнее

Показать сообщение отдельно
Jack63
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 13

исправить функцию нахождения гласных букв в массиве - C++

03.10.2011, 00:39. Просмотров 469. Ответов 4
Метки (Все метки)

Помогите,пожалуйста, исправить функцию, которая суммирует вероятности нахождения букв в строке(строка массив типа char,слова разделены пробелами). Если хотя бы в одном слове нет гласных букв,то вероятность строки считаем 0. Если во всех словах есть гласные буквы,то вероятность равна сумме вероятностей всех букв в строке.
вроде просто сделать, но как только не пробовал - не получается. исправить нужно до 24.00 (мск)

этот вариант выдает все нули

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
double functionVer(const char buffer[],int i) 
        {
         double ver=0;
         int u[50];
         int gh=0;
        for(int k=0;k<i;k++) 
        {
                  if(buffer[k]==char(65)) {  u[gh]++; ver+=7.96;       u[gh]++;}
                  if(buffer[k]==char(66)) {ver+=1.6;}
                  if(buffer[k]==char(67)) {ver+=2.48;}
                      if(buffer[k]==char(68)) {ver+=4.01;}
                      if(buffer[k]==char(69)) {  u[gh]++; ver+=12.86;    }
                      if(buffer[k]==char(70)) {ver+=2.62;}
                      if(buffer[k]==char(71)) {ver+=1.99;}
                  if(buffer[k]==char(72)) {ver+=5.39;}
                       if(buffer[k]==char(73)) { u[gh]++; ver+=7.77;      }
            if(buffer[k]==char(74)) {ver+=0.16;}
            if(buffer[k]==char(75)) {ver+=0.41;}
            if(buffer[k]==char(76)) {ver+=3.51;}
            if(buffer[k]==char(77)) {ver+=2.43;}
            if(buffer[k]==char(78)) {ver+=7.51;}
            if(buffer[k]==char(79)) { u[gh]++; ver+=6.62;      }
            if(buffer[k]==char(80)) {ver+=1.81;}
            if(buffer[k]==char(81)) {ver+=0.17;} //нет в таблице - подправить;
            if(buffer[k]==char(82)) {ver+=6.83;}
            if(buffer[k]==char(83)) {ver+=6.62;}
            if(buffer[k]==char(84)) {ver+=9.72;}
            if(buffer[k]==char(85)) { u[gh]++; ver+=2.48;    }
            if(buffer[k]==char(86)) {ver+=1.15;}
            if(buffer[k]==char(87)) {ver+=1.8;}
            if(buffer[k]==char(88)) {ver+=0.17;}
            if(buffer[k]==char(89)) {u[gh]++; ver+=1.52;      }
            if(buffer[k]==char(90)) {ver+=0.05;}
            if(buffer[k]==(' ')) {  u[gh++]; } 
 
        }
             while(gh!=0) {
            if (u[gh]==0)
                  {return ver=0.0;}
                u[gh]--;
             }
            return ver;
     
        }
этот оставляет все как есть(т.е. не зануляет вероятности где нужно)

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
double functionVer(const char buffer[],int i) //вероятность для n-ой строки;
        {
         double ver=0;
         int u=0;
        for(int k=0;k<i;k++) 
        {
            if(buffer[k]==char(65)) {  u++; ver+=7.96;     }
            if(buffer[k]==char(66)) {ver+=1.6;}
            if(buffer[k]==char(67)) {ver+=2.48;}
                        if(buffer[k]==char(68)) {ver+=4.01;}
                        if(buffer[k]==char(69)) {  u++; ver+=12.86;    }
                        if(buffer[k]==char(70)) {ver+=2.62;}
                        if(buffer[k]==char(71)) {ver+=1.99;}
            if(buffer[k]==char(72)) {ver+=5.39;}
            if(buffer[k]==char(73)) { u++; ver+=7.77;      }
            if(buffer[k]==char(74)) {ver+=0.16;}
            if(buffer[k]==char(75)) {ver+=0.41;}
            if(buffer[k]==char(76)) {ver+=3.51;}
            if(buffer[k]==char(77)) {ver+=2.43;}
            if(buffer[k]==char(78)) {ver+=7.51;}
            if(buffer[k]==char(79)) { u++; ver+=6.62;      }
            if(buffer[k]==char(80)) {ver+=1.81;}
            if(buffer[k]==char(81)) {ver+=0.17;} //нет в таблице - подправить;
            if(buffer[k]==char(82)) {ver+=6.83;}
            if(buffer[k]==char(83)) {ver+=6.62;}
            if(buffer[k]==char(84)) {ver+=9.72;}
            if(buffer[k]==char(85)) { u++; ver+=2.48;    }
            if(buffer[k]==char(86)) {ver+=1.15;}
            if(buffer[k]==char(87)) {ver+=1.8;}
            if(buffer[k]==char(88)) {ver+=0.17;}
            if(buffer[k]==char(89)) {u++; ver+=1.52;      }
            if(buffer[k]==char(90)) {ver+=0.05;}
            if(buffer[k]==(' ')) {if (u=0) { return ver = 0;} else u=0; }
 
        }
          
            return ver;
     
        }
Добавлено через 1 час 41 минуту
помогите,пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru