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

алгоритм поиска арифметической прогрессии в одномерном массиве на С - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Hagiga
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 10
17.11.2010, 16:47     алгоритм поиска арифметической прогрессии в одномерном массиве на С #1
Программа получает массив целых чисел, проверяет сколько есть последовательностей возрастающих на единицу чисел в массиве (минимум два числа). На выходе должно быть количество последовательностей и первая самая длинная последовательность.
например в массиве 12 3 4 23 5 46 5 6 7 78 67 68 134 45 46 47 67 11
выдаст количество - 4
длинная серия 5 6 7

буду очень признателен за помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2010, 16:47     алгоритм поиска арифметической прогрессии в одномерном массиве на С
Посмотрите здесь:

C++ Заполнить массив первыми 10 членами арифметической прогрессии с известным первым членом прогрессии А и разницей Р.
C++ Вычисление арифметической прогрессии
Функция поиска наибольшего значение в одномерном массиве C++
C++ Функция поиска в одномерном массиве: найти количество положительных и отрицательных элементов
Разработать приложение поиска суммы четных элементов в одномерном массиве C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
18.11.2010, 04:17     алгоритм поиска арифметической прогрессии в одномерном массиве на С #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>/*
   Программа получает массив целых чисел, проверяет сколько есть последовательностей
   возрастающих на единицу чисел в массиве (минимум два числа). На выходе должно быть
   количество последовательностей и первая самая длинная последовательность.
       например в массиве 12 3 4 23 5 46 5 6 7 78 67 68 134 45 46 47 67 11
       выдаст количество - 4
       длинная серия 5 6 7 */
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a[100];
    int i , n , k , j , len , maxlen ;
    printf("n=");
    scanf("%d",&n);
    maxlen=1;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    j=0;
    for(i=1;i<n;i++)
    {
        if(a[i]==a[i-1]+1)
        {
            len=2;
            i++;
            while(a[i]==a[i-1]+1)
            {
                len++;
                i++;
            }
            if(maxlen<len)
            {
                maxlen=len;
                k=i-len;
            }
            j++;
        }
    }
    printf("kol-vo: %d\n",j);
    for(i=k;i<k+maxlen;i++)
    {
        printf("%5d",a[i]);
    }
    getch();
}
Hagiga
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 10
19.11.2010, 21:02  [ТС]     алгоритм поиска арифметической прогрессии в одномерном массиве на С #3
Прежде всего, оромное спасибо за помощь.
C
1
2
 printf("n=");
        scanf("%d",&n);
вы имеете ввиду ввести размер массива?

думаю заменить на #define

C
1
2
3
4
for(i=k;i<k+maxlen;i++)
        {
                printf("%5d",a[i]);
        }
это решение особенно понравилось, я два дня бился, а оно так просто.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
19.11.2010, 21:09     алгоритм поиска арифметической прогрессии в одномерном массиве на С #4
Цитата Сообщение от Hagiga Посмотреть сообщение
вы имеете ввиду ввести размер массива?
да именно так

всегда пожалуйста!!!
Hagiga
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 10
19.11.2010, 21:22  [ТС]     алгоритм поиска арифметической прогрессии в одномерном массиве на С #5
Вот окончательный вариант, если вдруг еще кому-нибудь понадобится.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#define n 100
int main()
{
        int a[n];
        int i,k,j,len,maxlen;
        
        maxlen=1;
        printf("Enter 100 integer numbers\n");
        for(i=0;i<n;i++)
        {
                scanf("%d",&a[i]);
        } 
        j=0;
        for(i=1;i<n;i++)
        {
                if(a[i]==a[i-1]+1)
                {
                        len=2;
                        i++;
                        while(a[i]==a[i-1]+1)
                        {
                                len++;
                                i++;
                        }
                        if(maxlen<len)
                        {
                                maxlen=len;
                                k=i-len;
                        }
                        j++;
                }
        }
        printf("Number of series : %d\n",j);
        printf("Longest serie : ");
        for(i=k;i<k+maxlen;i++)
        {
            printf("%3d",a[i]);
        }
        printf("\n");
}
golf4man
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 13
20.05.2011, 18:50     алгоритм поиска арифметической прогрессии в одномерном массиве на С #6
Здравствуйте ув. форумчане!
Помогите начинающему прогеру как реализовать следующую задачку по арифметической прогрессии:
Дан набор целых чисел. Если они образуют арифметическую прогрессию, то вывести разность прогрессии, если же нет, то просто "No".
Вообщем нужен сам алгоритм, хотя бы зацепка (с математикой просто плохо)...дальше постараюсь реализовать сам.
Спасибо!

Добавлено через 3 минуты
Ах сорри, нашел на вашем форуме http://www.cyberforum.ru/cpp-beginne...ead184272.html
Отсортировать-то массив я забыл...
Еще раз спасибооо!
Yandex
Объявления
20.05.2011, 18:50     алгоритм поиска арифметической прогрессии в одномерном массиве на С
Ответ Создать тему
Опции темы

Текущее время: 07:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru