close

Вход

Забыли?

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

?

Задача 2 (2)

код для вставкиСкачать
Задача №2.
Условие задачи
В заданной строке заменить слово "дитя" на слово "ребенок". Подсчитать, на сколько удлинилась строка.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: исходная строка *str1- объявляется как указатель; переменная-указатель-*tmp, в неё будем записывать начальный адрес новой строки
len1- длина исходной строки
len2- длина полученной строки
k - определяет разность исходной и полученной строк
Результаты: новая строка str2
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блока III.
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов
II. Глобальные описания переменных char *str1,*tmp,*str2; int k=0,len1=0,len2=0;
III. Получение необходимого результата и вывод его на экран
III. 1. МРЗ:
* вводим строку (gets(str1); функция считывает строку из stdin и записывает адрес str1, добавляя символ '\0')
* в переменной tmp сохраняем начальный адрес новой строки tmp= str2;
* в переменную len1 записываем длину исходной строки - len1=strlen(str1);
* в цикле "перебора элементов строки" - while(*str1 != '\0'):
- проверяем четыре символа *str1,*(str1+1),*(str1+2) и *(str1+3), в программе это составное условие запишется следующим образом: if(*str1 == 'д' && *(str1+1)=='и' && *(str1+2)=='т'&& *(str1+3)=='я')
и, если совпадение есть, то: в новую строку *str2 записываем символ "р" - *str2='р'. Увеличиваем адрес переменной str2 на одну ячейку str2++ и в строку *str2 записываем символ "е" *str2='е', вновь увеличиваем адрес переменной str2 на одну ячейку str2++ и снова записываем символ "б" по этому адресу и так далее, пока в новую строку *str2 не будет посимвольно записано слово "ребенок"; после последнего записанного символа увеличиваем адрес переменной str2 на одну ячейку str2++ и исходную строку увеличиваем на три символа - str1+=3; иначе в новую строку переписываем символ из исходной строки - *str2=*str1; и увеличиваем адрес переменной str2 на одну ячейку str2++
- не забываем увеличивать адрес переменной str1 на одну ячейку (str1++), иначе из цикла не выйдем * после окончания цикла "перебора элементов строки str1" в новую строку записываем символ конца строки (*str2='\0';)
* в переменную len2 записываем длину новой строки - len2=strlen(str2);
* вычисляем насколько удлинилась новая строка - k=len2-len1;
* вывод результата: - предварительно нужно перейти на начало новой строки - str2=tmp;
- выводим на экран новую строку str2 и сообщение "строка удлинилась на k символов";
Блок - схема.
Программа, реализующая данный алгоритм
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
void main()
{
char *str1,*tmp,*str2;
int k=0,len1=0,len2=0;
clrscr();
printf("Введи строку ....\n");
gets(str1);
len1=strlen(str1);
tmp=str2;
while(*str1 !='\0')
{
if(*str1 == 'д' && *(str1+1)=='и' && *(str1+2)=='т'&& *(str1+3)=='я')
{*str2='р';str2++;*str2='е';str2++; *str2='б';str2++; *str2='е';str2++;*str2='н';str2++;*str2='о';str2++;*str2='к';str2++;str1+=3;}
else {*str2=*str1;str2++;}
str1++;
}
*str2='\0';
str2=tmp;
len2=strlen(str2);
k=len2-len1;
printf("\n%s",str2);
printf("\nстрока удлинилась ",k); printf(" символ(ов)");
getch();
}
Документ
Категория
Рефераты
Просмотров
23
Размер файла
20 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа