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

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

Войти
Регистрация
Восстановить пароль
 
Maxvik_Grunge
1 / 1 / 0
Регистрация: 10.03.2014
Сообщений: 30
#1

Указатели.Строки и указатели - C++

02.05.2014, 13:11. Просмотров 382. Ответов 1
Метки нет (Все метки)

Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел
Условия обработки строки:
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
86
87
88
89
90
91
92
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
int const size = 80 ;
char tmp[size] ;
char* pTmp ;
while(true)
{
cout << "input line --> " ;
cin.getline( tmp,size ) ;
 
if ( isspace(tmp[0]) )
break ;
 
unsigned int num,i(0) ;
cout << "input num --> " ;
cin >> num ;
 
// выделение памяти через указатель
pTmp = new char [ (num>strlen (tmp)?num:strlen(tmp)) + 1 ] ;
 
// копирование в выделенный блок
strcpy_s(pTmp, strlen(tmp)+1, tmp) ;
cin.clear() ;
cin.ignore() ;
 
int sum(0) ;
 
char glas []= {'A','a','E','e','I','i','Y','y','U','u','O','o','\0'} ;
 
char *p(pTmp), *pGlas(glas);
 
// цикл вычисления кол-ва глассных в строке
while( *p )
{
while( *pGlas )
{
if( *p == *pGlas )
sum++;
pGlas++;
}
pGlas = glas;
p++;
}
 
p = pTmp;
 
unsigned int len(strlen(pTmp)) ;
cout << "strlen = " << len << endl ;
 
// при len > num отбросить первые символы
i=0 ;
if ( len > num )
{
while( *p )
{
*p = *(p + len - num);
p++;
}
}
 
//при len < num добавить символы точка до необхадимого, заданного размера
char t;
if ( len < num )
{
i = len - 1 ;
unsigned int j(num) ;
while(j)
{
*p = *(p+1);
p++;
pTmp[--j] = pTmp[i] ;
if( j < num - len )
pTmp[j] = '.' ;
i-- ;
}
}
 
 
pTmp[0]='\0' ;
cout <<"str = " ;
cout << pTmp << endl ;
cout <<"glas = " ;
cout << sum << endl ;
delete [] pTmp ;
 
}
return 0 ;
}
Проблема заключается во 2 пункте обработки строки,то есть Если длина строки меньше этого числа, то в ее начало добавить символы точка
И по возможности могли бы вы подсказать правильно ли реализовано все остальное,так как обрабатывать нужно только при помощи указателей,а меня постоянно тянет бегать по массиву
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 13:11     Указатели.Строки и указатели
Посмотрите здесь:

указатели и строки? C++
Строки и указатели C++
C++ Строки и указатели........
Строки и указатели с++ C++
Указатели и строки C++
C++ Unicode - указатели на строки
Функция, Указатели, Строки C++
C++ Указатели на строки
C++ Указатели и строки
C++ Указатели и строки
Строки и указатели в C++ C++
C++ Указатели на строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxvik_Grunge
1 / 1 / 0
Регистрация: 10.03.2014
Сообщений: 30
03.05.2014, 18:29  [ТС]     Указатели.Строки и указатели #2
Очень нужна помощь!
Yandex
Объявления
03.05.2014, 18:29     Указатели.Строки и указатели
Ответ Создать тему
Опции темы

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