Текст состоит только из цифр, причем их числовые значения образуют арифметическую прогрессию (например: 2468)

Текст состоит только из цифр, причем их числовые значения образуют арифметическую прогрессию (например: 2468).

Написал данную программу, не могу понять почему не работает.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;
    int k = 0;
    getline(cin, s);

    for (int i = 0; i < s.size(); i++) {
        if ((isdigit(s[i])) and (s[i] = s[i]+1)) {
            k = 1;
        }
    else {
            k = 0;
        }
    }

    if (k == 1) {
        cout << "yes";
    }
    else {
        cout << "no";
    }
}

Ответы (1 шт):

Автор решения: Harry

Ну, я бы делал что-то вроде

string check(const string& s)
{
    if (!isdigit(s[0])) return "no";
    if (s.size()<2)     return "yes";
    if (!isdigit(s[1])) return "no";

    int d = s[1] - s[0];
    for(int i = 2; i < s.size(); ++i)
    {
        if (!isdigit(s[i]) || s[i] != s[i-1]+d) return "no";
    }
    return "yes";
}

int main()
{
    string s;
    getline(cin, s);
    cout << check(s) << endl;

}
→ Ссылка