Преобразовать строку, заменив запятыми все двоеточия - C (СИ)
Формулировка задачи:
Помогите решить задачу!!!
Даны натуральное число n и символы S1, ..., Sn (строка). Преобразовать строку, заменив запятыми все двоеточия, встречающиеся среди S1, ..., Sn/2, и заменив точками все восклицательные знаки, встречающиеся среди Sn/2, ..., Sn.
Решение задачи: «Преобразовать строку, заменив запятыми все двоеточия»
textual
Листинг программы
#include <stdio.h>
int main ()
{
char s[1024];
int n;
printf("Line: ");
fgets(s, 1024, stdin);
printf("N: ");
scanf("%d", &n);
int i = 0;
n=n-1; // что бы счет длины строки, который мы взяли, начинался "как бы не с нуля"
//(т.e ввели мы значит 10 символов и получаем 0,1,2,3,4,...,8,9 всего 10,а если бы не было n=n-1, то 0,1,2...9,10 //всего 11 символов.)
for ( i = 0; i<=n/2; ++i)
if (s[i] == ':') s[i] = ',';
for ( i = (n/2)+1; i <= n; ++i)
if (s[i] == '!') s[i] = '.';
printf("%i\n",i);
printf("%s\n", s);
return;
}
Объяснение кода листинга программы
- Объявлены две переменные:
sтипаcharиnтипаint. - С помощью
printfвыводится приглашение для ввода строки. - С помощью
fgetsвводится строка в буферs. - Выводится приглашение для ввода числа.
- С помощью
scanfв переменнуюnсчитывается число. - Переменная
nуменьшается на единицу, чтобы корректно работать со строкой (см. комментарий). - В цикле заменяются двоеточия на запятые.
- В цикле заменяются восклицательный знак на точку.
- Выводится значение переменной
i(не понятно зачем, возможно, это номер строки). - Выводится измененная строка.
- Функция
mainвозвращаетvoid.