27.04.2014, 14:06. Просмотров 427. Ответов 11
В программе условие ввода строки:пока первый символ не пробел
Условие обработки строки:1.Вычислить кол-во гласных букв в строке
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
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
| #include <iostream>
#include <cstring>
using namespace std;
void check(char, int*);
int main()
{
int const size = 80;
char tmp[size] ;//= {'a'};
// выделение памяти через указатель
char* pTmp;
while(true)
{
cout << "input line --> ";
cin.getline( tmp,size );
if ( isspace(tmp[0]) )
break;
// копирование в выделенный блок
pTmp = new char [ strlen (tmp) + 1 ] ;
strcpy_s(pTmp, strlen(tmp)+1, tmp);
//pr=tmp;
unsigned int num,i(0);
cout << "input num --> ";
cin >> num;
cin.clear();
cin.ignore();
int sum(0);
int* s = ∑
// цикл вычисления кол-ва глассных в строке
while(i < strlen(pTmp) )
{
check( pTmp[i], s );
i++;
}
unsigned int len(strlen(pTmp));
cout << "strlen = " << len << endl;
// при len > num отбросить первые символы
i=0;
if ( len > num )
while( true )
{
pTmp[i]=pTmp[len - num + i];
i++;
if(num <= i)
{
pTmp[i] = '\0';
break;
}
}
// при len < num добавить символы точка до необхадимого, заданного размера
if ( len < num )
{
i = len - 1;
unsigned int j(num);
while(j)
{
pTmp[--j] = pTmp[i];
if( j < num - len )
pTmp[j] = '.';
i--;
}
}
cout <<"str = ";
cout << pTmp << endl;
cout <<"glas = ";
cout << sum << endl;
delete [] pTmp;
}
return 0;
}
// функция гласных
void check( char c, int* tmp )
{
char glas [11]= {'A','a','E','e','I','i','Y','y','U','u','\0'};
unsigned int i = 0;
while(i < sizeof(glas) )
{
if ( c == glas[i] )
*tmp += 1;
i++;
}
} |
|
Вот сама работа программы :