Распечатать введенную строку, исключив из неё те символы, которые находятся между скобками '(' ')' - C (СИ)

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

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

Распечатать введенную строку, исключив из неё те символы, которые находятся между скобками '(' ')'. Сами скобки не удалять. Если хотя бы одной скобки нет - сообщить об этом. Помогите плиз,а то шо то я туплю
#include<stdio.h>
#include <conio.h>
#define A 100
void main()
{
    char t[A];
    int i;
 
    printf("Vvedite text:\n");
    for(i=0;i<100;i++)
    scanf("%\n",&t[i]);
    
    for(i=0;i<100;i++) 
        
        if(t[i]!='(' || t[i]!=')')
            printf("DDD");
        else
            if(t[i]>'(' && t[i]<')')
            ;
        else
            printf("%s",t);
}

Решение задачи: «Распечатать введенную строку, исключив из неё те символы, которые находятся между скобками '(' ')'»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main(void){
    char buf[BUFSIZ], *pOpen, *pClose;
 
    printf("String: ");
    if ( !fgets(buf, BUFSIZ, stdin) ){
        fprintf(stderr, "Can't get some string!\n");
        exit(1);
    }
    if ( ( pOpen = strchr(buf, '(') ) == NULL ){
        fprintf(stderr, "No open bracket found!\n");
        exit(1);
    }
    if ( ( pClose = strrchr(buf, ')') ) == NULL ){
        fprintf(stderr, "No close bracket found!\n");
        exit(1);
    }
    if ( pOpen > pClose ){
        fprintf(stderr, "Close bracket before open!\n");
        exit(1);
    }
    memmove(pOpen + 1, pClose, strlen(pClose) + 1);
    printf("Result: %s", buf);
 
    exit(0);
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с памятью и вводом/выводом данных

    include

    include

    include

  2. Объявляем переменные, которые будут использоваться в программе int main(void){ char buf[BUFSIZ], pOpen, pClose;
  3. Выводим приглашение для ввода строки printf(String:);
  4. Считываем строку с помощью функции fgets в буфер buf if ( !fgets(buf, BUFSIZ, stdin) ){ fprintf(stderr, Can't get some string!\n); exit(1); }
  5. Ищем символ '(' в строке и сохраняем его адрес в переменной pOpen if ( ( pOpen = strchr(buf, '(') ) == NULL ){ fprintf(stderr, No open bracket found!\n); exit(1); }
  6. Ищем символ ')' в строке и сохраняем его адрес в переменной pClose if ( ( pClose = strrchr(buf, ')') ) == NULL ){ fprintf(stderr, No close bracket found!\n); exit(1); }
  7. Проверяем, чтобы символ ')' не находился перед символом '(' if ( pOpen > pClose ){ fprintf(stderr, Close bracket before open!\n); exit(1); }
  8. Перемещаем символы в строке, начиная с символа '(' до последнего символа ')' memmove(pOpen + 1, pClose, strlen(pClose) + 1);
  9. Выводим измененную строку printf(Result: %s, buf);
  10. Завершаем программу exit(0); }

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы