Распечатать введенную строку, исключив из неё те символы, которые находятся между скобками '(' ')' - 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); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с памятью и вводом/выводом данных
include
include
include
- Объявляем переменные, которые будут использоваться в программе int main(void){ char buf[BUFSIZ], pOpen, pClose;
- Выводим приглашение для ввода строки
printf(
String:
); - Считываем строку с помощью функции fgets в буфер buf
if ( !fgets(buf, BUFSIZ, stdin) ){
fprintf(stderr,
Can't get some string!\n
); exit(1); } - Ищем символ '(' в строке и сохраняем его адрес в переменной pOpen
if ( ( pOpen = strchr(buf, '(') ) == NULL ){
fprintf(stderr,
No open bracket found!\n
); exit(1); } - Ищем символ ')' в строке и сохраняем его адрес в переменной pClose
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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д