close

Вход

Забыли?

вход по аккаунту

?

Задача 2 (4)

код для вставкиСкачать

Задача №2.
Условие задачи.
Ввести стоку. Если в ней нет малых латинских букв, то оставить ее без изменений, иначе каждый из символов, следующих за первой группой малых латинских букв, заменить точкой.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные:
*str - символьный указатель для записи строки,
*tmp - символьный указатель для дополнительной обработки заданной строки;
int f=0 - используется как сигнализатор;
Результаты: Измененная строка по условию задачи
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блока III.
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов II. Локальное описания переменных char *str, *tmp; int f=0;
III. Получение необходимого результата и вывод его на экран
III. 1. МРЗ:
* резервируем место в памяти для ввода строки символов 30 байтов и адрес первого байта записываем в str: str=new char[30];.
* вводим строку (gets(str); функция считывает строку из stdin и записывает адрес первого байта строки в str, добавляя символ '\0')
* в указатель tmp сохраняем адрес из str. В дальнейшем пригодится для возврата в начало строки str.
* в цикле "перебора элементов строки" - while(*str != '\0'): если не конец строки, то
- проверяем, очередной символ является малой латинской буквой? if(islower(*str)), если Да, то
* флаг устанавливаем в 1: f=1; * выходим из данного цикла - break;
если Нет, то - в теле цикла увеличиваем адрес переменной str на одну ячейку (str++), иначе из цикла не выйдем
проверяем, если флаг f равен 1 if(f==1).
Если Да,то
- в цикле "перебора элементов строки" - while(*str != '\0'): если не конец строки, то
- проверяем очередной символ не является малой латинской буквой?
Если Да, то выходим из цикла
Если Нет, то в теле цикла увеличиваем адрес переменной str на одну ячейку (str++), иначе из цикла не выйдем
- в цикле "перебора элементов строки" - while(*str != '\0'): если не конец строки, то
заменяем очередной символ на символ '.'
* Возвращаем в str адрес начала строки - str=tmp;
* Выводим измененную или не измененную строку.
- операция "Ввод"- трапеция
- операция "Присвоить"- прямоугольник
- операция "Сравнить"- ромб
- операция "Переход"- стрелки
- операция "Вывод"- параллелограмм
Блок - схема задачи № 2
-
+ -
+
+ -
- +
+ -
Программа, реализующая данный алгоритм
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
void main()
{
char *str, *tmp;
int f=0;
str=new char[30];
printf("\nVvedi stroku cimvolov ->\n");
gets(str);
tmp=str;
while(*str!='\0')
{
if(islower(*str)) {f=1; break;}
str++;
}
if(f==1)
{
str++;
while(*str!='\0')
{
if(islower(*str)==0) break;
str++;
}
while(*str!='\0')
{
*str='.';
str++;
}
}
str=tmp;
printf("\n%s",str);
getch();
}
Документ
Категория
Рефераты
Просмотров
6
Размер файла
23 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа