@YOYOGURTT

Не ведется подсчет в алгоритме. Как это можно исправить и что может быть не так?

Необходимо разработать программу, которая определяет содержится ли в числе последовательность цифр “777”.
Cпособы решения очень ограничены (vector, string как и указатели использовать нельзя). Не могу понять, почему не ведется подсчет, а точнее он не работает так, как было задумано.

//Разработать программу, которая определяет содержится ли в числе последовательность цифр “777”
#include <iostream>
int main() {
    const int size = 5;
    int arr[size];
    int count = 0;
    int term;
    long num;
    std::cout << "Введите ваше число:" ;
    std::cin >> num;
    for(int i= size-1; i >= 0; i--) {
        term = num % 10;
        num /= 10;
        arr[i] = term;
        if(i != 0 && i != size - 1) {
            if(arr[i-1] == 7 && arr[i] == 7 && arr[i+1] == 7) {
                count += 1;}
        }
    }
    if(count>0){
        std::cout << 'T' << std::endl;}
    else {std::cout << 'F' << std::endl;}
    std::cout << count << std::endl;
    for(int i= 0; i < size; ++i) {
        std::cout << arr[i] << " ";}
    return 0;
}
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 3
grantur5707
@grantur5707
Full Stack Web Developer
#include <iostream>

int main() {
    int count = 0;
    long num;
    
    std::cout << "Введите ваше число: ";
    std::cin >> num;

    int previous1 = -1;
    int previous2 = -1;
    int current;

    while (num > 0) {
        current = num % 10;
        num /= 10; 

        if (previous2 == 7 && previous1 == 7 && current == 7) {
            count += 1;
            break;
        }

        previous2 = previous1;
        previous1 = current;
    }

    if (count > 0) {
        std::cout << 'T' << std::endl;
    } else {
        std::cout << 'F' << std::endl;
    }

    return 0;
}
Ответ написан
Комментировать
@Gurthener
Это происходит, потому что при проверке (arr[i-1] == 7) вы проверяете позицию, которую ещё не заполнили.
Ответ написан
Комментировать
@alex_ak1

cin >> num;
for( ; num >= 1000; num /= 10 )
if (num % 1000 == 777)
cout << "содержит"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы