Все! Я сделал все сам. Для начала сделал вот такой набросок:| Код | #include <iostream.h> #include <conio.h>
int arr(int *array) { return *array; }
void main(void) { const int n=5; int a[n] = {1,2,3,4,5};
for(int i=0; i<n; i++) cout << arr( (a+i)) << '\n';
getch(); }
|
Функция возвращает указатель на 1-ый элемент массива (по умолчанию).
А дальше по подобию:| Код | #include <string> #include <conio>
using namespace std; /* Пространство имен std. */
int clause_count(char *);
string split(char *a, int j) { char *delimiter = "?!."; /* Массив разделителей. */
/* Число элементов в этом массиве = числу предложений. */ string *buffer = new string[ clause_count(a) ];
int i=0;
for(int j=0; j<clause_count(a); j++) { while( delimiter[0] != a[i-1] && delimiter[1] != a[i-1] && delimiter[2] != a[i-1] ) { /* Запись в каждый элемент массива нового предложения. */ buffer[j] += a[i]; i++; } i++; }
return buffer[j];
}
void main(void) { /* Вот какой результат требуется: */ cout << split("May. June! July?", 2) << '\n'; cout << split("May. June! July?", 1) << '\n'; cout << split("May. June! July?", 0) << '\n'; getch();
}
/* Функция определения количества предложений в тексте. */ int clause_count(char *a) { /* Символы-разделители, по которым определяется конец предложения. */ char *split = ".!?";
int i=0, clause=0;
do { for(int j=0; j<3; j++) { if( a[i]==split[j] ) clause++; } i++; } while( i!= strlen(a) ); return clause; } |
P.S. А функцию определения количества предложений в тексте я буду еще доделывать, так что не критикуйте строго. |