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

Процент гласных в предложении - C++

Восстановить пароль Регистрация
 
bulavax
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 21
17.11.2014, 21:47     Процент гласных в предложении #1
В программе нужно ввести предложение окончание предложения точка. После этого нужно вычисллить общее кол-во гласных и потом найти процент использования каждой из них. Результат вывести в обратном порядке. Написал компилируется без ошибок, но при выполнении что-то с памятью ну позырьте умные человеки, а то я замучался уже(

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
int main(void)
{
using namespace std;
                                                              /*setlocale(0,".1251"); привет амигос*/
char A[255];
cin.getline(A,255);                                          /*ввод массива до энтера*/
char *p;
p=strchr(A,'.');                                                /*возвращаем указатель на первую точку*/
int U=0;
cout<<p-A<<endl;
int T=p-A;                                                                      /*номер елемента в массиве*/
system("pause");
double SUM2=0,S,G=0;
const char B[22]={'A','a','E','e','I','i','O','o','Q','q','U','u','Y','y'};                  /*массив согласных*/
for(int j=21;j>0;j--)
{   for(int i=T;i>0;j--)
        {if(A[i]==B[j])G++;}                               /*поочередно считаем общее кол-во совпадений G
                             елементов массивов от нужного символа и до нуля*/
}
cout<<G;
for(int j=21;j>0;j--)
{   
    S=(U*100)/G; 
    if((j+1)%2!=0){SUM2=SUM2+S; cout<<SUM2<<endl; SUM2=0;}  /*складывает проценты от введенных         больших  маленьких букв  и выводит их через цикл*/
    SUM2=S;U=0;
    for(int i=T;i>0;j--)
        {if(A[i]==B[j])U++;};
}                                     /*компелируется без ошибок, но при выполнении непонятно что выдает(((*/
 
_getch();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 21:47     Процент гласных в предложении
Посмотрите здесь:

C++ Вычитаем процент от числа.
Вычислить процент положительных чисел, процент отрицательных чисел и процент нулей C++
C++ Сделать что-бы строка бралась с файла (определить отношение количества гласных букв в предложении к согласным)
C++ определить процент
C++ Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и процент нулей и выводи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yan12_04
30 / 30 / 16
Регистрация: 05.11.2014
Сообщений: 117
18.11.2014, 06:12     Процент гласных в предложении #2
Зырить не буду!!!! А вот посмотреть, посмотрю!!!!

Добавлено через 32 минуты
Вот, исправил некоторые ошибки!!
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
#include <iostream>
using namespace std;
 
void main()
{                                                             /*setlocale(0,".1251"); привет амигос*/
char A[255];
cin.getline(A,255);                                          /*ввод массива до энтера*/
char *p;
p=strchr(A,'.');                                                /*возвращаем указатель на первую точку*/
int U=0;
cout<<p-A<<endl;
int T=p-A;                                                                      /*номер елемента в массиве*/
double SUM2=0,S,G=0;
char B[22]={'A','a','E','e','I','i','O','o','Q','q','U','u','Y','y'};                  /*массив согласных*/
for(int j=22;j>0;j--)
{  
    for(int i=T;i>0;i--)
        {
            if(A[i]==B[j])
            {
                G++;
            }    
         }/*поочередно считаем общее кол-во совпадений G
                             елементов массивов от нужного символа и до нуля*/
}
cout<<G;
for(int j=22;j>0;j--)
{   
    S=(U*100)/G; 
    if((j+1)%2!=0)
    {
        SUM2=SUM2+S; 
        cout<<SUM2<<endl; 
        SUM2=0;
    }  /*складывает проценты от введенных         больших  маленьких букв  и выводит их через цикл*/
    SUM2=S;
    U=0;
    for(int i=T;i>0;i--)
    {
            if(A[i]==B[j])
            {
                U++;
            }
    }
}                                     /*компелируется без ошибок, но при выполнении непонятно что выдает(((*/
 
system("pause");
 
}
Но это не все!!! Он считает общее количество гласных неправильно!!!

Добавлено через 48 минут
А нет, все верно!! Просто надо было на новую строку перейти!!
C++
1
cout<<G<<endl;
bulavax
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 21
18.11.2014, 23:28  [ТС]     Процент гласных в предложении #3
Что значит все правильно если у меня так и не работает? С памятью одна и таже ошибка хотя при компиляции её не видно...(
Людвиг Бодмер
 Аватар для Людвиг Бодмер
212 / 209 / 70
Регистрация: 29.03.2013
Сообщений: 555
Завершенные тесты: 2
19.11.2014, 11:18     Процент гласных в предложении #4
bulavax, индексация элементов массивов в С++ начинается с 0 и заканчивается (размер массива-1) элементом. У вас получается выход за пределы массива. Вот исправленный вариант:
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 namespace std;
 
void main()
{                                                             /*setlocale(0,".1251"); привет амигос*/
char A[255];
cin.getline(A,255);                                          /*ввод массива до энтера*/
char *p;
p=strchr(A,'.');                                                /*возвращаем указатель на первую точку*/
int U=0;
cout<<p-A<<endl;
int T=p-A;                                                                      /*номер елемента в массиве*/
double SUM2=0,S,G=0;
char B[22]={'A','a','E','e','I','i','O','o','Q','q','U','u','Y','y'};                  /*массив согласных*/
for(int j=21;j>=0;j--)
{  
    for(int i=T-1;i>=0;i--)
        {
            if(A[i]==B[j])
            {
                G++;
            }    
         }/*поочередно считаем общее кол-во совпадений G
                             елементов массивов от нужного символа и до нуля*/
}
cout<<G<<"\n";
for(int j=21;j>=0;j--)
{   
    S=(U*100)/G; 
    if((j+1)%2!=0)
    {
        SUM2=SUM2+S; 
        cout<<SUM2<<endl; 
        SUM2=0;
    }  /*складывает проценты от введенных         больших  маленьких букв  и выводит их через цикл*/
    SUM2=S;
    U=0;
    for(int i=T-1;i>=0;i--)
    {
            if(A[i]==B[j])
            {
                U++;
            }
    }
}                                     /*компелируется без ошибок, но при выполнении непонятно что выдает(((*/
 
system("pause");
Yan12_04
30 / 30 / 16
Регистрация: 05.11.2014
Сообщений: 117
19.11.2014, 11:27     Процент гласных в предложении #5
bulavax, У меня все отработало прелестно!!!
bulavax
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 21
19.11.2014, 14:22  [ТС]     Процент гласных в предложении #6
Ладно парни пасибо за ответы, у меня наверное что-то с железом или хз.
Буду потом еще узнавать почему не работает
ни один из вариантов все время пишет одну ошибку
"Необработанное исключение в "0x009e15a1" в "Lab7.1.exe": 0xC00000FD: Stack overflow."
Не пойму прикола
Yandex
Объявления
19.11.2014, 14:22     Процент гласных в предложении
Ответ Создать тему
Опции темы

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