C/C++
Помоги с программированием(С++)
Дан одномерный числовой массив определить является ли массив арифметической прогрессией
#include <iostream>
#include <iomanip>
using namespace std;
bool ap(int* seq, int n) {
if (n < 2) return false;
if (n == 2) return true;
auto d = seq[1] - seq[0];
for (int i = 1, j = 2; j < n; ++i, ++j) if (seq[j] - seq[i] != d) return false;
return true;
}
void show(const char* msg, int* seq, int n) {
cout << msg;
for (int i = 0; i < n; ++i) cout << setw(4) << seq[i];
puts("");
}
int main() {
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
show("a:", a, size(a));
puts(ap(a, size(a)) ? "a: yes" : "a: no");
puts("");
int b[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
show("b:", b, size(b));
puts(ap(b, size(b)) ? "b: yes" : "b: no");
puts("");
int c[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
show("c:", c, size(c));
puts(ap(c, size(c)) ? "c: yes" : "c: no");
puts("");
int d[] = { 1, 2, 3, 4, 6, 8, 10, 12, 14 };
show("d:", d, size(d));
puts(ap(d, size(d)) ? "d: yes" : "d: no");
system("pause > nul");
}
#include <iomanip>
using namespace std;
bool ap(int* seq, int n) {
if (n < 2) return false;
if (n == 2) return true;
auto d = seq[1] - seq[0];
for (int i = 1, j = 2; j < n; ++i, ++j) if (seq[j] - seq[i] != d) return false;
return true;
}
void show(const char* msg, int* seq, int n) {
cout << msg;
for (int i = 0; i < n; ++i) cout << setw(4) << seq[i];
puts("");
}
int main() {
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
show("a:", a, size(a));
puts(ap(a, size(a)) ? "a: yes" : "a: no");
puts("");
int b[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
show("b:", b, size(b));
puts(ap(b, size(b)) ? "b: yes" : "b: no");
puts("");
int c[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
show("c:", c, size(c));
puts(ap(c, size(c)) ? "c: yes" : "c: no");
puts("");
int d[] = { 1, 2, 3, 4, 6, 8, 10, 12, 14 };
show("d:", d, size(d));
puts(ap(d, size(d)) ? "d: yes" : "d: no");
system("pause > nul");
}
вычисли разницу между вторым и первым элементом и пробегая по массиву проверяй равны ли ей разницы между остальными элементами. Если где то не равно- это не прогрессия. Иначе- прогрессия
Берёшь разность первого и нулевого элементов (r). Вводишь логическую переменную (например b), инициируешь её значением true и организуешь цикл от 1 до N-1 (N - количество элементов), в котором проверяешь соответствие всех остальных разностей элементов: b=b&&(a[i+1]-a[i]==r);
После такого цикла в переменной b будет сохранён ответ на вопрос. Если хоть одна разность не совпадает с первой, то конъюнкция даст false.
После такого цикла в переменной b будет сохранён ответ на вопрос. Если хоть одна разность не совпадает с первой, то конъюнкция даст false.
Не могу помочь, нет армянского компилятора
Похожие вопросы
- Помогите с программированием на C++
- Помогите с программированием на с++
- Помогите с программированием
- Помогите с программированием на Си
- Помогите по программированию!!! с++ используя структуры
- ПОМОГИТЕ ПО ПРОГРАММИРОВАНИЮ!! C++
- Помогите с программированием на Си Работа с последовательностями элементов
- Кто поможешь сделать программирование на С++, задача с переводом СС?
- Здравствуйте помогите пожалуйста программирование c++
- Помогите с программированием на си