Заменить точками все символы, встречающиеся в строке ровно K раз - C (СИ)
Формулировка задачи:
Дана строка. Заменить точками все символы, встречающиеся в строке ровно K раз.
Значение K вводит пользователь.
Решение задачи: «Заменить точками все символы, встречающиеся в строке ровно K раз»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
void fun(char*, int);
int main(){
char str[]="fgijdsijfsicsaoaxaxaqwvcmyyiukiuk";
int k, m;
printf("Input K: ");
scanf("%d", &k);
printf("%s\n\n", str);
fun(str, k);
printf("%s", str);
getch();
return 0;
}
void fun(char* str, int k){
int i, j, dl, kol, *mas;
dl=strlen(str);
mas=(int*)malloc(dl*sizeof(int));
for(i=0; i<dl; i++){
kol=0;
for(j=0; j<dl; j++)
if(str[i]==str[j]){
kol++;
mas[i]=kol;
}}
for(i=0; i<dl; i++)
if(mas[i]==k)
str[i]='.';
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем функцию
fun, которая принимает в качестве аргументов строку и число - В функции
mainзадаем исходную строку, вводим число K и вызываем функциюfun - В функции
funобъявляем локальные переменные: i, j, dl, kol, mas - Вычисляем длину строки и выделяем память под массив целых чисел
- Проходим по каждому символу строки и подсчитываем сколько раз он встречается в строке
- Заменяем символы в строке на точки, если количество их вхождений равно K
- Выводим измененную строку на экран
- Ждем нажатия клавиши
- Возвращаем 0, чтобы указать, что программа успешно завершилась