Подпрограммы: удалять из строки символы, имеющие нечетный номер - C (СИ)
Формулировка задачи:
Помогите составить программу.
Задание: создать программу, с помощью которой можно будет задавать строку символов с консоли и которая будет удалять имеющие нечетный номер символы. Что-то типо этого:
#include <stdio.h>
#include <string.h>
Функция()
{
Нахождение нечетных символов и их удаление
}
int main()
{
Задание строки из символов
}Решение задачи: «Подпрограммы: удалять из строки символы, имеющие нечетный номер»
textual
Листинг программы
#include <stdio.h>
void delDig(char *S)
{
int i,j;
i=0;
for (j=0; S[j]; j++){
if ((S[j] >= '0') && (S[j] <= '9') && S[j]&1)
;
else
S[i++] = S[j];
}
S[i] = '\0';
}
int main(int argc, char* argv[])
{
char Q[100];
printf( "Vvod stroki:\n" );
gets(Q);
delDig(Q);
printf("%s\n",Q);
return 0;
}
Объяснение кода листинга программы
В данном коде представлена функция delDig, которая принимает в качестве аргумента строку S. Цель функции — удалить из строки все символы, имеющие нечётный номер.
- Внутри функции объявляются две переменные:
i- счётчик, который будет использоваться для перебора символов в строке;j- счётчик, который будет использоваться для перебора символов в строке.
- Затем происходит инициализация счётчика
iв ноль. - Далее в цикле перебираются все символы строки
S. Если текущий символ:- больше или равен '0' и меньше или равен '9';
- и при этом имеет нечётный номер (т.е.
S[j] & 1не равно нулю), то в тело цикла не происходит никаких действий (пустая инструкция;). Это означает, что все символы с нечётными номерами удаляются из строки.
- В противном случае (т.е. текущий символ не является цифрой с нечётным номером) символ копируется из строки
Sв переменнуюS[i++]. При этомiувеличивается на единицу после каждого добавления символа. - После завершения цикла в строку
S[i]добавляется символ'\0', который является маркером конца строки. - В функции
mainсоздаётся массивQтипаcharразмером 100. - Затем пользователю предлагается ввести строку, которую необходимо обработать.
- Введённая строка сохраняется в массиве
Q. - Функция
delDigвызывается для обработки строкиQ. - Результат обработки выводится на экран.
- Программа завершается с возвращаемым значением 0, что означает успешное выполнение.