В строке определить количество символов между первым и вторым двоеточием ':' - C (СИ)

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

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

Затрудняюсь понять, как запихнуть в условие чтобы сначала проверял после первого двоеточия (считал символы), а потом на останавливался после второго двоеточия, объясните, пожалуйста, голова не варит (
#include <stdio.h>
#include <string.h>
 
void main ()
{
    char s[40];
    int i,j,count;
    printf ("input string: ");
    gets (s);
    for (i=0; s[i]!='\0'; i++ )
    {
        if (i==':')
            count++;
 
    }

Решение задачи: «В строке определить количество символов между первым и вторым двоеточием ':'»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define TRUE 1
#define FALSE 0
 
int main()
{
    char s[40];
    int i, j, count = 0;
    int SymFound = FALSE;
    printf("input string: ");
    gets(s);
    for (i = 0; s[i] != '\0'; i++)
    {
        if (SymFound && s[i] != ':')
            count++;
        if (s[i] == ':')
            SymFound = !SymFound;
    }
 
    printf("%d\n", count);
 
    system("pause");
    return 0;
}

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

В этом коде:

  1. Включаются необходимые заголовочные файлы
  2. Определяются значения TRUE и FALSE
  3. Создается переменная count для хранения количества символов между первым и вторым двоеточием ':'
  4. Создается переменная SymFound для отслеживания текущего символа
  5. Пользователю предлагается ввести строку
  6. В цикле происходит проход по каждому символу строки
  7. Если текущий символ не равен следующему символу (не считая символ двоеточия), и SymFound установлен в FALSE, то увеличивается счетчик count
  8. Если текущий символ равен символу двоеточия, то SymFound меняется на противоположное значение
  9. После прохода по всем символам выводится значение count
  10. Вызывается функция pause для приостановки выполнения программы до нажатия клавиши
  11. Программа возвращает 0, что означает успешное завершение работы программы

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

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