C/C++

Кто поможет в языке Си, с массивом. Не могу понять как сделать

Вводится строка, состоящая из слов разделенных точками.Длина строки может быть разной.Сформировать и вывести подстроку, расположенную между второй и пятой точками исходной строки.Если в строке менее пяти точек, то вывести всю исходную строку.
#include <stdio.h>

int main()
{
int count_point = 0; /* счётчик точек */
const int size = 1024; /* максимальный размер строки */
char str1[size],str2[size]; /* строка и подстрока */
scanf("%s",str1); /* вводится строка, scanf_s для visual c */
int i = 0, j = 0; /* для индексов массивов */
while(str1[i])
{
if(count_point < 2) /* точек меньше 2 */
{
if(str1[i] == '.') count_point++; /* нашли точку, увеличили счётчик */
}
else if(count_point < 5) /* точек меньше 5 */
{
if(str1[i] == '.')
{
count_point++;
if(count_point >= 5) break; /* чтобы не скопировать пятую точку
и то, что после неё */
}
str2[j] = str1[i]; /* копируем по одному символу */
j++; /* увеличить счётчик индекса второй строки */
str2[j] = '\0'; /* чтобы после строки не было мусора */
}
i++; /* увеличить счётчик индекса первой строки */
}
if(count_point < 5) /* если точек меньше 5 */
{
printf("%s\n",str1); /* вывод исходной строки */
}
else /* иначе */
{
printf("%s\n",str2); /* вывод новой строки */
}
return 0;
}
Дмитрий Слезкин
Дмитрий Слезкин
55 824
Лучший ответ
Дмитрий Слезкин Только не вводите пробелы и знаки табуляции.
Кол. точек = 0
Цикл считывания символов из строки пока не конец (0 символ)
встречена точка, то кол. точек + 1
Если кол точек >= 2 && <5 то вывести этот символ на экран

Это было бы удобно для вывода, но у вас сказано что если менее 5, то выводить всю строку...а это не так эффективно.
Допустим строка из триллион символов, где там эта точка будет еще вопрос. Если это кидать на экран, то может и зря, а хранить все до 2 точки тоже не хватит никакой памяти. Скорее придется выяснить, что в строке есть более 5 точек и выйти. А уже исходя из этого или алгоритм выше или алгоритм по выводу всей этой огроменной строки.
Кадыр Ергалиев
Кадыр Ергалиев
59 734
- Между словами может быть только одна точка или несколько?
- Они разделены ТОЛЬКО точкой? или еще и пробелом?
Дмитрий Слезкин На сколько я понял, пробелов и табуляций нет. Только точки, как разделители и их может быть сколько угодно.