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

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

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

Массивы, поиск последовательных элементов, создающих прогрессию - C++

29.04.2012, 22:54. Просмотров 762. Ответов 14
Метки нет (Все метки)

Привет!
Программа заключается в том, что она ищет в массиве три последовательных элемента которые создают арифметическую или геометрическую прогрессию. Но у меня вылетает ошибка при запуске программы, но считает первую партию чисел правильно. Помогите пожалуйста!
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
#include<stdio.h>
#include<stdlib.h>
 
 
int main(void)
{
   int n=100,i,f=0;
   int a[n];
   srand(6);
    for(i=0;i<n;i++)
     a[i]=rand()%11;
    printf("\n\nArray A\n\n");
     for(i=0;i<n;i++)
      printf("%8i",a[i]);
 
    for(i=0;i<n-2;i++)
     if((a[i]-a[i+1]==a[i+1]-a[i+2])||(a[i+2]/a[i+1]==a[i+1]/a[i]))
       {
           printf("\nYes");
           printf("\na[%i]=%i",i,a[i]);
           printf("\na[%i]=%i",i+1,a[i+1]);
           printf("\na[%i]=%i",i+2,a[i+2]);
           f=1;
       }
       if(f==0)
       printf("\nNO");
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2012, 22:54     Массивы, поиск последовательных элементов, создающих прогрессию
Посмотрите здесь:

Массивы. Найти минимум из сумм 3-х его последовательных элементов - C++
Вводится массив. Найти минимум из сумм 3-х его последовательных элементов. Например, для массива 1 3 4 6 7 данные суммы равны 8, 13 и 17,...

Многомерные массивы. Поиск количества тех элементов матрицы,которые больше суммы остальных элементов своего столбца - C++
Здравствуйте, пожалуйста помогите с программой. Дана целочисленная матрица из N строки и M столбцов (1&lt;N&lt;=100,1&lt;M&lt;=50).Выполнить заданную...

Массивы: поиск элементов с заданными свойствами - C++
Обработка массива:а)определение суммы элементов,кол-во элементов удовлетворяющих некоторому условию,минимальный и максимальный элемент в...

Поиск суммы последовательных узлов в бинарном дереве - C++
Дано: бинарное дерево (Например созданное по этому алгоритму). Число S. Нужно найти последовательность узлов (только с вверху вниз или...

Найти тройку последовательных элементов массива F с наименьшей суммой - C++
найти наибольший элемент массива А,меньший произведения элементов с нечетными номерами найти тройку последовательных элементов массива F...

Определить подвектор, как один или более последовательных элементов массива - C++
Всем привет) я полный ноль в программирование, прошу о помощи.. Задан массив целых чисел. Определить подвектор, как один или более...

Массивы и последовательный поиск - C++
Помогите пожалуйста. Дан массив X.Определить, есть ли в массиве число Z, с использованием метода последовательного поиска.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
29.04.2012, 23:10     Массивы, поиск последовательных элементов, создающих прогрессию #2
в выражении
C++
1
 (a[i+2]/a[i+1]==a[i+1]/a[i])
деление на 0
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
29.04.2012, 23:11     Массивы, поиск последовательных элементов, создающих прогрессию #3
(a[i+2]/a[i+1]==a[i+1]/a[i])
здесь деление на ноль
upd: + стоит учитывать, что деля целое на целое получаем целое, т.е. дробную часть потеряете, и результат будет неверный.
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
29.04.2012, 23:11  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #4
ТОЧНО!!! Как я сразу не увидел?! А подскажите пожалуйста как обойти это деление на 0?
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
29.04.2012, 23:16     Массивы, поиск последовательных элементов, создающих прогрессию #5
Цитата Сообщение от fenixgaurd Посмотреть сообщение
a[i]=rand()%11;
+ 1 добавляйте, число будет в интервале [1; 11].
C++
1
a[i] = rand()%11 + 1;
или поменяйте
C++
1
if((a[i]-a[i+1]==a[i+1]-a[i+2])||(a[i+2]/a[i+1]==a[i+1]/a[i]))
на
C++
1
if ((a[i] - a[i+1] == a[i+1] - a[i+2]) ||(a[i] != 0 && a[i + 1] != 0 && (a[i + 2] / a[i + 1] == a[i + 1] / a[i])))
т.е. проверяйте на 0 перед делением.
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
29.04.2012, 23:18  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #6
Цитата Сообщение от gray_fox Посмотреть сообщение
здесь деление на ноль
upd: + стоит учитывать, что деля целое на целое получаем целое, т.е. дробную часть потеряете, и результат будет неверный.
А у меня целый массив, не вещественный. Разве это тут отразится?

Добавлено через 1 минуту
Хорошо, но поймите, меня, препод копает под нас ужас как, он введет массив с 0 и скажет вот она и не работает. Это вообще курсовая моя, точнее ее часть. Подскажите тогда как сделать? Помоему если деление на 0, то просто прогрессия меняет знак. А вот как это сделать?
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
29.04.2012, 23:24     Массивы, поиск последовательных элементов, создающих прогрессию #7
ну т.к член геом. прогрессии не может равняться нулю, то так
C++
1
2
3
...
if((a[i]-a[i+1]==a[i+1]-a[i+2]) || (a[i+1] != 0 && a[i] != 0 && a[i+2]/a[i+1]==a[i+1]/a[i]))
...
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
29.04.2012, 23:25     Массивы, поиск последовательных элементов, создающих прогрессию #8
Цитата Сообщение от fenixgaurd Посмотреть сообщение
А у меня целый массив, не вещественный. Разве это тут отразится?
4, 6, 9 - геом. прогрессия? 9 / 6 == 1 и 6 / 4 == 1. А 4, 6, 8 ? 8 / 6 == 1 и 6 / 4 == 1 )))
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
29.04.2012, 23:31  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #9
Ну ребят спасибо вам огромное!
Так на вскидочку вот код, правильно? Так то вроде не ругается.
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
#include<stdio.h>
#include<stdlib.h>
 
 
int main(void)
{
   int n=50,i,f=0,k=0;
   int a[n];
   srand(6);
    for(i=0;i<n;i++)
     a[i]=rand()%61-10;
    printf("\n\nArray A\n\n");
     for(i=0;i<n;i++)
      printf("%8i",a[i]);
 
    for(i=0;i<n-2;i++)
     if(a[i]-a[i+1]==a[i+1]-a[i+2])
       {
           k++;
           printf("\n\nArifm progressiv #%i",k);
           printf("\na[%i]=%i",i,a[i]);
           printf("\na[%i]=%i",i+1,a[i+1]);
           printf("\na[%i]=%i",i+2,a[i+2]);
           f=1;
       }
       if(f==0)
       printf("\nArifm progressiv NO");
       k=0;
       printf("\n\n\n");
     for(i=0;i<n-2;i++)
      if((a[i]!=0 && a[i+1]!=0 && (a[i+2]/a[i+1]==a[i+1]/a[i])))
       {
           k++;
           printf("\n\nGeometr progressiv #%i",k);
           printf("\na[%i]=%i",i,a[i]);
           printf("\na[%i]=%i",i+1,a[i+1]);
           printf("\na[%i]=%i",i+2,a[i+2]);
           f=1;
       }
       if(f==0)
       printf("\nNO");
 return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от gray_fox Посмотреть сообщение
4, 6, 9 - геом. прогрессия? 9 / 6 == 1 и 6 / 4 == 1. А 4, 6, 8 ? 8 / 6 == 1 и 6 / 4 == 1 )))
Я тебя понял! То есть для геометр прогрессии нужно вводить тип данных вещественный?
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
29.04.2012, 23:38     Массивы, поиск последовательных элементов, создающих прогрессию #10
Цитата Сообщение от fenixgaurd Посмотреть сообщение
То есть для геометр прогрессии нужно вводить тип данных вещественный?
Да. Т.е. примерно так:
C++
1
if (a[i + 1] != 0 && a[i] != 0 && (std::fabs((double)a[i + 2] / a[i+1] - (double)a[i+1] / a[i]) < epsilon))
где epsilon - некое малое число (два числа с плавающей точкой просто сравнивать нельзя, т.к. имеет место потеря точности)
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
29.04.2012, 23:43  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #11
Цитата Сообщение от gray_fox Посмотреть сообщение
(std::fabs((double)a[i + 2]
Что такое std fabs? а то в си++ я не силен
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
29.04.2012, 23:47     Массивы, поиск последовательных элементов, создающих прогрессию #12
Цитата Сообщение от fenixgaurd Посмотреть сообщение
Что такое std fabs?
абсолютное значение http://www.cplusplus.com/reference/clibrary/cmath/fabs/
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 00:25  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #13
предупреждение: warning: implicit declaration of function 'fabs'
warning: incompatible implicit declaration of build-in function 'fabs'
Что означает?
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
30.04.2012, 00:28     Массивы, поиск последовательных элементов, создающих прогрессию #14
Цитата Сообщение от fenixgaurd Посмотреть сообщение
implicit declaration of function 'fabs'
C++
1
#include <cmath>
Цитата Сообщение от gray_fox Посмотреть сообщение
implicit declaration of function 'fabs'
Это значит функция не объявлена, но используется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 01:28     Массивы, поиск последовательных элементов, создающих прогрессию
Еще ссылки по теме:

Двумерные массивы. Определить произведение элементов в тех строках, которые не содержат отрицательных элементов - C++
Дана целочисленная квадратная матрица. Определить произведение элементов в тех строках, которые не содержат отрицательных элементов;...

Слить массивы А и В по 100 элементов в массив С из 200 элементов так,чтобы элементы А и В чередовались по 10 - C++
слить массив А и В по 100 элементов в массив С из 200 элементов так,чтобы элементы А и В чередовались по 10

и снова массивы (поиск, сортировка) - C++
ребят, пытаюсь написать код который: 1) выводит двумерную массив 2) осуществляет последовательный поиск 3) переводит в одномерный...

Двумерные массивы. Простой поиск. - C++
Определить индексы максимального элемента матрицы. Вычислить произведение элементов над главной диагональю

одномерные массивы и сложный поиск - C++
помогите пажалуста я не могу понять как создать и вывести масив Ук=sin(pow(x,2))*cos(pow(x,3))-sin(x)+5.2 с элементами к = 1,2...,7....


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

Или воспользуйтесь поиском по форуму:
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 01:28  [ТС]     Массивы, поиск последовательных элементов, создающих прогрессию #15
Цитата Сообщение от gray_fox Посмотреть сообщение
C++
1
#include <cmath>
Написал вопрос и сразу же в нем разобрался, забыл мат библиотеку. Всем спасибо кто помогал мне)!!

Добавлено через 1 час 0 минут
Задача была решена, всем спасибо кто мне помог. Выкладываю код программы, может кому в будущем пригодится!
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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
 
int main(void)
{
    float epsilon=0.0001;
   int n=50,i,f=0,k=0;
   int a[n];
   srand(6);
    for(i=0;i<n;i++)
     a[i]=rand()%11+1;
    printf("\n\nArray A\n\n");
     for(i=0;i<n;i++)
      printf("%8i",a[i]);
 
    for(i=0;i<n-2;i++)
     if(a[i]-a[i+1]==a[i+1]-a[i+2])
       {
           k++;
           printf("\n\nArifm progressiv #%i",k);
           printf("\na[%i]=%i",i,a[i]);
           printf("\na[%i]=%i",i+1,a[i+1]);
           printf("\na[%i]=%i",i+2,a[i+2]);
           f=1;
       }
       if(f==0)
       printf("\nArifm progressiv NO");
       k=0;
       printf("\n\n\n");
     for(i=0;i<n-2;i++)
      if(a[i]!=0 && a[i+1]!=0 && (fabs((double)a[i+2]/a[i+1]-(double)a[i+1]/a[i])<epsilon))
       {
           k++;
           printf("\n\nGeometr progressiv #%i",k);
           printf("\na[%i]=%i",i,a[i]);
           printf("\na[%i]=%i",i+1,a[i+1]);
           printf("\na[%i]=%i",i+2,a[i+2]);
           f=1;
       }
       if(f==0)
       printf("\nArifm progressiv NO");
       k=0;
       printf("\n\n\n");
 return 0;
}
Yandex
Объявления
30.04.2012, 01:28     Массивы, поиск последовательных элементов, создающих прогрессию
Ответ Создать тему
Опции темы

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