Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gamer0n
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 47
#1

Арифметическая прогрессия в массиве - C++

13.06.2013, 11:57. Просмотров 1035. Ответов 9
Метки нет (Все метки)

Дан целочисленный массив размером N, который не содержит одинаковых чисел. Проверить, образуют ли его элементы арифметическую прогрессию. Если да, то вывести разницу прогрессии, если нет то вывести 0.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 11:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Арифметическая прогрессия в массиве (C++):

Арифметическая прогрессия - C++
народ помогите отпишитесь кто знает как работает программа??? #include <iostream> #include <stdio.h> #include <stdlib.h> using...

Арифметическая прогрессия - C++
Вычислить (1+1/1^2)+(1+1/2^2)+(1+1/3^2)+...+(1+1/100^2). Найдите ошибку: #include <iostream> using namespace std; int main(){ ...

Прогрессия Арифметическая - C++
Добрый день! Я к сожалению, вообще не могу разобраться даже в елементарных вещах. Помогите пожалуйста написать формулу для...

Арифметическая прогрессия - C++
Добрый день всем, пытаюсь решить но никак помогите пожалуйста: На вход программы подаются три целых числа a1, a2 и n. a1 и a2 первые ...

Арифметическая прогрессия - C++
Задан целочисленный массив размера N. Определить, образуют ли элементы массива арифметическую прогрессию.

Арифметическая прогрессия - C++
Надо составить программу возведения натурального числа в квадрат, учитывая следующую закономерность: 12 = 1 22 = 1 + 3 32 = 1 + 3 + 5...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.06.2013, 12:05 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
template <typename T, typename Iterator>
T difference(Iterator first, Iterator last)
{
    if (first == last)
        return 0;
    if (first + 2 == last)
        return *(first + 1) - *first;
    Iterator next = first + 1;
    T diff = *next - *first;
    while (next != last)
        if (*next++ - *first++ != diff)
            return 0;
    return diff;
}
 
int main()
{
    int a[] = { 1, 3, 5, 7, 9, 11, 13 };
    std::cout << difference<int>(std::begin(a), std::end(a)) << std::endl;
    return 0;
}
gamer0n
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 47
13.06.2013, 12:09  [ТС] #3
Цитата Сообщение от Пaтрик Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
template <typename T, typename Iterator>
T difference(Iterator first, Iterator last)
{
    if (first == last)
        return 0;
    if (first + 2 == last)
        return *(first + 1) - *first;
    Iterator next = first + 1;
    T diff = *next - *first;
    while (next != last)
        if (*next++ - *first++ != diff)
            return 0;
    return diff;
}
 
int main()
{
    int a[] = { 1, 3, 5, 7, 9, 11, 13 };
    std::cout << difference<int>(std::begin(a), std::end(a)) << std::endl;
    return 0;
}
Не запускается не в висуале не в билдере....
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.06.2013, 12:15 #4
http://ideone.com/adc7Dj
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
13.06.2013, 12:19 #5
Это лишь по тому что наш многоуважаемый Патрик написал вам код в недавно вышедшем стандарте C++ 11
Вот для старого стандарта
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <iterator>
 
template <typename T, typename Iterator>
T difference(Iterator first, Iterator last)
{
    if (first == last)
        return 0;
    if (first + 2 == last)
        return *(first + 1) - *first;
    Iterator next = first + 1;
    T diff = *next - *first;
    while (next != last)
        if (*next++ - *first++ != diff)
            return 0;
    return diff;
}
 
int main()
{
 
    int a[] = { 1, 3, 5, 7, 9, 11, 13 };
    std::cout << difference<int>(a, a + sizeof(a) / sizeof(a[0]) ) << std::endl;
    return 0;
}
gamer0n
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 47
14.06.2013, 09:02  [ТС] #6
Спасибо, но когда я запускаю ее в билдере - выводит цифру 2 и все, вводу не подлежит
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
14.06.2013, 09:41 #7
gamer0n, а ты что хотел?
gamer0n
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 47
14.06.2013, 09:48  [ТС] #8
Цитата Сообщение от Пaтрик Посмотреть сообщение
gamer0n, а ты что хотел?
по крайней мере ввод размерности массива, вывод этого массива на экран, ну и вывод 0 или разницу прогрессии. Эт так, чисто элементарщина
Expocooky
56 / 56 / 2
Регистрация: 06.06.2013
Сообщений: 112
14.06.2013, 10:11 #9
Цитата Сообщение от gamer0n Посмотреть сообщение
по крайней мере ввод размерности массива, вывод этого массива на экран, ну и вывод 0 или разницу прогрессии. Эт так, чисто элементарщина
Ну так элементарщину сам наверно напишешь? Самое сложное за тебя уже сделали
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 10:20 #10
вариант с рекурсией:
C
1
2
3
4
5
6
7
8
9
10
11
12
int Check(int *a, int *end, int d)
{
   return a + 1 < end ? (*(a + 1) - *a == d) && Check(a + 1, end, d) : 1;
}
 
int main()
{
   int a[] = {1, 4, 7, 10}, n;
   n = sizeof(a) / sizeof(*a);
   printf("%d\n", Check(a, a + n, *(a + 1) - *a) ? *(a + 1) - *a : 0);
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 10:20
Привет! Вот еще темы с ответами:

Арифметическая прогрессия - C++
Вообщем, поиск по форму ничего не дал, а с++ я помню плохо. Есть задачка, дана последовательность, скажем из 5 чисел, в виде массив,...

Арифметическая прогрессия - C++
Вывести на экран 7ой член прогрессии если числа находящиеся по соседству различаются в 5 раз, а первое число равен 3ем Добавлено через...

Арифметическая прогрессия - C++
Здравствуйте, помогите со способом выполнения задания. Задание: Пользователь задает n кол-во целых чисел, необходимо определить можно ли...

Арифметическая прогрессия - C++
Дано N десятоков целых чисел. Определить, сколько из них могут составлять арифметическую прогрессию. Проверку оформить в виде функции. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.06.2013, 10:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru