Текст состоит только из цифр, причем их числовые значения образуют арифметическую прогрессию (например: 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;
}