Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов - C (СИ)
Формулировка задачи:
Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов, выделив их в отдельную строку
#include <stdio.h> #include <conio.h> #include <locale.h> #include <malloc.h> #include <string.h> void substringToSpace(char*, char*); int firstSpace(char*); void main() { setlocale(LC_CTYPE,"Russian"); char str[100]; //выделение памяти под строку char brackets[]="[{()}]"; puts("Введите строку максимум из 100 символов:"); gets_s(str); int n = strlen(str); if(n %5==0) { char k = *brackets; (str); if(k == -1) { puts("Скобок в строке не найдено"); } else { char* str2 = new char[k+1]; substringToSpace(str, str2); printf("Исходная строка:%s\n", str); printf("Преобразованная строка (скобки):%s\n", str2); delete str2; } } else puts("Строка не кратна 5."); } void substringToSpace(char* str, char* str2) { int k = firstSpace(str); for(int i=0; i<k; i++) str2[i] = str[i]; str2[k] = '\0'; } int firstSpace(char* str) { char str2[]="[{()}]"; char k; int n = strlen(str); for(int i=0; i < n; i++) if ((*(str + i)) == '(' || (*(str + i)) == ')' || (*(str + i)) == '[' || (*(str + i)) == ']' || (*(str + i)) == '{' || (*(str + i)) == '}') str2[k] = *(str + i); return k; }
Решение задачи: «Ввести строку символов, если ее длина кратна 5, посчитать количество скобок всех видов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 100 int main() { char samples[] = "[]{}()<>"; char str[N], braces[N]; int i, j, k = 0; for(i = 0; ((str[i] = getchar()) != '\n') && i < N; i++){ for(j = 0; samples[j]; j++){ if(str[i] == samples[j]){ braces[k++] = str[i]; break; } } } braces[k] = '\0'; if(k == 0) puts("Braces not found"); else{ if(i % 5 == 0){ printf("Quantity of braces = %d\n", k); puts(braces); } else puts("Line length is not divide of 5"); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д