Ввести строку символов, если ее длина кратна 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;
}