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