Примеры программ, использующих строковые функции

Рассмотрим несколько примеров на использование функций, предназначенных для работы со строковыми переменными:

Задача: В режиме диалога с ЭВМ вводится текст длиной не более 80 символов. Необходимо подсчитать сколько раз в этом тексте встречается символ b, также введенный в режиме диалога.

Исходный код программы:

#include <iostream.h>

#include <stdlib.h>

typedef char stringa[81];

stringa a;

char b;

int i,n;

int main()

{

cout<<"VVEDITE TEKCT \n";

cin.getline(a,81);

cout <<"VVEDITE SIMVOL \n";

cin>>b;

cout <<"TEKCT:"<<endl;

cout<<a<<endl;

for (i=0; i<=strlen(a); i++)

if (a[i]==b) n++;

cout<<" SIMVOL "<<b<<" VSTRECHAETSYA "<<n<<" RAZ"<<endl;

system("PAUSE");

return 0;

}

Работа программы:

VVEDITE TEKCT

Солнышко светит, птички поют

VVEDITE SIMVOL

и

TEKCT:

Солнышко светит, птички поют

SIMVOL и VSTRECHAETSYA 3 RAZ

Для продолжения нажмите любую клавишу...

Задача: В режиме диалога с ЭВМ вводится текст (не более 20 слов). Выделить все слова в отдельный массив и напечатать его.

Исходный код программы:

#include <iostream.h>

#include <stdlib.h>

#include <string.h>

typedef char stringa[101];

stringa s,s1;

stringa a[20];

int i,j,k,n;

int main()

{

cout<<"BBEDITE TEKCT HE BOLEE 20 CLOV"<<endl;

cin.getline(s,101);

j=0;k=0;n=0;

strcpy(s1," ");

for (i=0;i<strlen(s);i++)

{

if (s[i]!=' ')

{s1[k]=s[i];k++;}

else

if (strcmp(s1," ")!=0)

{

s1[k]='\0';

strcpy(a[j],s1);

strcpy(s1," ");

j++;

k=0;

}

}

if (strcmp(s1," ")!=0)

{

s1[k]='\0';

strcpy(a[j],s1);

strcpy(s1," ");

j++;

k=0;

}

cout<<"B TEKCTE "<<j<<" CLOV"<<endl;

for (i=0;i<j;i++)

cout<<i+1<<" CLOVO = "<<a[i]<<endl;

system("PAUSE");

return 0;

}

Работа программы:

BBEDITE TEKCT HE BOLEE 20 CLOV

Если что-нибудь случилось, и никто не виноват, не ходи туда, иначе виноватым будешь ты.

B TEKCTE 14 CLOV

1 CLOVO = Если

2 CLOVO = что-нибудь

3 CLOVO = случилось,

4 CLOVO = и

5 CLOVO = никто

6 CLOVO = не

7 CLOVO = виноват,

8 CLOVO = не

9 CLOVO = ходи

10 CLOVO = туда,

11 CLOVO = иначе

12 CLOVO = виноватым

13 CLOVO = будешь

14 CLOVO = ты.

Для продолжения нажмите любую клавишу...

В этой программе фрагмент

if (strcmp(s1," ")!=0)

{

s1[k]='\0';

strcpy(a[j],s1);

strcpy(s1," ");

j++;

k=0;

}

используется дважды. Так как выделения слова настроено на появления символа пробел, а в конце текста пробела может не быть, то необходимо проверить, равна ли пробелу строковая переменная s1 (в ней формируется очередное слово). Если строковая переменная s1 не равна пробелу, то в массив добавляется последнее слово. Пробел можно добавлять «искусственно» после ввода текста, тогда эту проверку можно не использовать.

ЗАДАНИЕ: написать программу согласно своему варианту

Вариант Задание
1. Дана строка. Найти наибольшее количество цифр, идущих в ней подряд.
2. Дана строка. Найти наибольшее количество букв, идущих в ней подряд.
3. Дана строка. Если в ней нет больших букв, то оставить ее без изменения, иначе каждый из символов, следующий за первой большой буквой, заменить «*», а последний знаком «?»
4. Дана строка. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, называются словами. Определить, какое слово имеет минимальную длину, а какое максимальную.
5. Найти число таких групп слов, которые начинаются и заканчиваются одной и той же буквой.
6. Заданы 2 строки, состоящие из слов, разделенных пробелами. Объединить обе строки и поменять местами второе и третье слова.
7. Заданы 2 строки, состоящие из слов, разделенных пробелами. Скопировать семь символов второй строки в первую. Получить из измененной первой строки новую, в которой не будет последнего и предпоследнего слов.
8. Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать третье слово второй строки к первой. Поменять порядок следования символов первой строки на противоположный.
9. Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить первое вхождение символа “м” в строке и вывести строку, начиная с этой позиции и до конца. Если такого символа в строке нет, то удалить второе слово и вывести получившуюся строку.
10. Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке. Если такого символа нет, то вывести всю строку, исключив из нее последнее слово.
11. Заданы 2 строки, состоящие из слов, разделенных пробелами. Если последнее слово больше предпоследнего, то заменить первые три символа буквой “а”, в противном случае все символы заменить на “*”.
12. Заданы 2 строки, состоящие из слов, разделенных пробелами. Если второе слово первой строки такое же, как второе слово второй строки, то поменять порядок следования символов первой строки на противоположный, в противном случае заменить все символы второй строки на “!”
13. Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки, который первым совпал с одним из символов второй. Вывести первую строку, исключив из нее слово, в которое входит этот символ. Вторая строка пробелами не разделена.
14. Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ.
15. Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать три символа второй строки к первой. Поменять местами в измененной первой строке первое и последнее слово.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: