Заменить в строке все удвоенные символы на один - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Разработать алгоритм и программу по следующим условием : Ввести строку длиной до 30 символов , заменить в ней все удвоенные символы на один, пробел - в знак подчеркивания , сообщения ' ** ' на многие точку " ...". Организовать простой диалог с пользователем для повторения работы программы. Выходные данные каждого цикла работы программы записать в отдельный файл. Реализация должна быть рациональной и работать для общего случая .

Решение задачи: «Заменить в строке все удвоенные символы на один»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.     char *str, *name;
  7.     int index, i, j, loop, counter=0, nIndex;
  8.     FILE* oFile;
  9.  
  10.     do{
  11.         index=-1;
  12.         nIndex=-1;
  13.         i=0;
  14.         j=0;
  15.         loop=0;
  16.         str=(char*)malloc(sizeof(char)*31);
  17.         name=(char*)malloc(0);
  18.  
  19.         printf("Enter sequence of characters: ");
  20.         do{
  21.             index++;
  22.             if((str[index]=getchar())=='\n'){
  23.                 str[index]='\0';
  24.                 str=(char*)realloc(str, sizeof(char)*(index+1));
  25.             }
  26.  
  27.             if(index==29){
  28.                 index++;
  29.                 str[index]='\0';
  30.             }
  31.         }while((str[index]!='\0'));
  32.  
  33.         printf("Enter name of file: ");
  34.         do{
  35.             nIndex++;
  36.             name=(char*)realloc(name, sizeof(char)*(nIndex+1));
  37.             if((name[nIndex]=getchar())=='\n'){
  38.                 name[nIndex]='\0';
  39.             }
  40.         }while((name[nIndex]!='\0'));
  41.  
  42.         oFile=fopen(name, "w");
  43.  
  44.         fflush(stdin);
  45.  
  46.         while(i<index-1){
  47.             if((str[i]=='*') && (str[i+1]=='*')){
  48.                 index++;
  49.                 str=(char*)realloc(str, sizeof(char)*(index));
  50.                 for(j=index-1; j>i+1; j--){
  51.                     str[j]=str[j-1];
  52.                 }
  53.                 str[i]=str[i+1]=str[i+2]='.';
  54.                 i+=3;
  55.             }else if(str[i]==str[i+1]){
  56.                 for(j=i+1; j<index; j++){
  57.                     str[j]=str[j+1];
  58.                 }
  59.                 index--;
  60.                 str=(char*)realloc(str, sizeof(char)*(index));
  61.             }else{
  62.                 i++;
  63.             }
  64.         }
  65.         i=0;
  66.  
  67.         while(i<index-1){
  68.             if(str[i]==' '){
  69.                 str[i]='_';
  70.             }
  71.  
  72.             i++;
  73.         }
  74.  
  75.         fprintf(oFile, str);
  76.         fclose(oFile);
  77.         fflush(stdin);
  78.  
  79.         printf("Do you want to repeat(enter 1 to continue): ");
  80.         scanf("%i", &loop);
  81.         printf("\n");
  82.         counter++;
  83.         fflush(stdin);
  84.         free(str);
  85.         free(name);
  86.     }while(loop==1);
  87.  
  88.     return 0;
  89. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.583 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы