close

Вход

Забыли?

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

?

Задача 2 (3)

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

.
Задача №2. Условие задачи. В заданной строке в первой половине строки все точки заменить символом ~.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: char *str - символьный указатель для ввода строки с клавиатуры;
char *tmp - символьный указатель для дублирования введенной строки;
int len1 - для записи длины строки;
int len2 - для записи длины половины введенной строки;
Результаты: Вывод количества найденных символов'*' и '+'.
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блока VIII. Укрупненная схема
I. Подключение всех необходимых заголовочных файлов.
II. Локальное описание переменных char *str, *tmp; int len1,len2=0;
III. Ввод строки символов с символами '.' IV. Определение длины строки в переменную len1.
V. Определение половины длины введенной строки в len2.
VI. Сохранение адреса введенной строки в указателе tmp.
VII. Вставка в строку по адресу tmp на место после середины строки признака конца строки '\0' с предварительным запоминанием символа на этом месте.
char ch; ch=tmp[len2];
len2=len1/2; tmp[len2]='\0';
VIII. Поиск символа '.' и замена его на символ '~' в строке по адресу tmp
IX. Вывод измененной строки.
VIII. Поиск символа '.' и замена его на символ '~' в строке по адресу tmp:
while(*tmp != '\0')
{
if(*tmp=='.')
*tmp='~'
tmp++;
}
Суть использования вспомогательного указателя состоит в том, что:
* Присвоив в tmp адрес участка памяти введенной строки tmp=str, мы получили доступ к введенной строке.
* Изменяя значение адреса в цикле while, мы не изменяем str, т.е. он всегда указывает на начало введенной строки.
* Оператором printf("\nResultat: %s",str); мы выводим на экран измененную строку.
Программа, реализующая данный алгоритм
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void main()
{
char *str, *tmp;
int len1,len2=0;
str = new char [20];
clrscr();
printf("Vvedi stroku s mnojestvom tochek: \n");
gets(str);
len1=strlen(str);
len2=len1/2;
tmp=str;
char ch;
ch=tmp[len2];
tmp[len2]='\0';
while(*tmp != '\0')
{
if(*tmp=='.')
*tmp='~';
tmp++;
}
str[len2]=ch;
printf("\nResultat: %s",str);
getch();
getch();
}
Документ
Категория
Рефераты
Просмотров
9
Размер файла
17 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа