Ход работы
Таблица соответствия переменных:
Имя в программе |
Тип |
Комментарий | |
s |
Char |
Строка | |
k |
Int |
Кол-во «w» | |
i,j |
Int |
Переменные-счетчики | |
n |
int |
Длина строки |
Листинг программы:
//Подключение директив предпроцессоров
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
//Введение в программу пространства имен
using std::cout;
using std::endl;
using std::cin;
//Начало программы
main ()
{
//Установка русского языка
setlocale (LC_ALL, "Russian");
//Объявление переменных
char s[50];
int i(0), k(0), j, n;
//Ввод исходной строки
cout << "Введите строку" << endl;
cin >> s;
//Вывод исходной строки
cout << "Исходная строка\n" << s << endl;
//Получение длины исходной строки
n=strlen(s);
/*///////////////////////////////
ЭТАП 1 ////
Поиск пары *+цифра и вставка ////
между ними пробела. ////
/*///////////////////////////////
while(i<n)
{
//Условие поиска пары
if(s[i]=='*'&&isdigit(s[i+1]))
//Если нашло такую пару
{
//Увеличение длины строки
n=n+1;
/*///////////////////////////////
Цикл сдвига символов ////
строки-результата по сравне- ////
нию с исходной строкой. ////
/*///////////////////////////////
for(j=n-1;j>i;j--)
s[j+1]=s[j];
//Встатвка пробела между парой
s[i+1]=' ';
}
//Увеличение переменной-счетчика
i++;
}
/*///////////////////////////////
ЭТАП 2 ////
Поиск символов 'W', стоящих ////
после пары 'A+' и подсчет их ////
количества ////
Присвоение переменной-счет- ////
чику исходного значения ////
/*///////////////////////////////
i=0;
while(i<n)
{
//Условие поиска пары
if(s[i]=='a'&& s[i+1]=='+'&& s[i+2]=='w')
//Если нашло такую пару
//Переменная подсчета количетва +1
k=k+1;
i++;
}
//Вывод полученных результатов
cout << "Строка-результат\n" << s << endl;
cout << "Количество символов 'W', стоящих после пары 'A+'\n" << k << endl;
//Ожидание ввода символа
_getch();
//Возвращение главной функции исходного значения
return(0);
}
Тест:
Блок-схема:
|
Определить количество слов, вторая буква которых 'P'. |
Ход работы
Таблица соответствия переменных:
Имя в программе |
Тип |
Комментарий |
S |
char |
Строка |
i |
int |
Переменные-счетчики |
n |
int |
Длина строки |
k |
int |
Кол-во «P» |
Листинг программы:
//Подключение директив предпроцессоров
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
//Введение в программу пространства имен
using std::cout;
using std::endl;
//Начало программы
main()
{
//Установка русского языка
setlocale (LC_ALL, "Russian");
//Объявление переменных
char s[100];
int i(0), k(0), n;
//Ввод исходной строки
cout << "Введите строку" << endl;
gets(s);
cout << "Исходная строка" << endl;
//Вывод исходной строки
puts(s);
//Получение длины исходной строки
n=strlen(s);
/*///////////////////////////////
Алгоритм 1 ////
Проверка первого слова на ////
личие второй буквы 'Р' ////
/*///////////////////////////////
if(s[1]=='p')
/*///////////////////////////////
Если условие выполняется, то ////
счетчик буквы 'Р' увеличива- ////
ется на +1 ////
/*///////////////////////////////
k++;
/*///////////////////////////////
Алгоритм 2 ////
Поиск слов, в которых вторая ////
буква - 'Р' ////
/*///////////////////////////////
while(i<=n)
{
//Условие поиска разделителей и буквы после него
if ((isspace(s[i]) && isalpha(s[i+1])) || (ispunct(s[i]) && isalpha(s[i+1])))
{
//Условие поиска буквы 'Р'
if(s[i+2]=='p')
/*///////////////////////////////
Если все эти условия выпол- ////
няются, то счетчик буквы 'Р' ////
увеличивается на +1 ////
/*///////////////////////////////
k++;
}
//Увеличение переменной-счетчика
i++;
}
//Вывод полученных результатов
cout << "Количество слов, в которых вторая буква - 'Р' = " << k << endl;
//Ожидание ввода символа
_getch();
//Возвращение главной функции исходного значения
return(0);
}
Тест:
Блок-схема: