1 / 1 / 2
Регистрация: 28.09.2014
Сообщений: 87
1

Определить, образуют ли элементы массива геометрическую прогрессию

09.10.2014, 01:48. Показов 7807. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
определить, образуют ли элементы массива геометрическую прогрессию;
Помогите решить.
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2014, 01:48
Ответы с готовыми решениями:

Проверить образуют ли элементы массива геометрическую прогрессию
Вот задание: Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы...

Проверить, образуют ли элементы массива геометрическую прогрессию
Помогите пожалуйста выполнить задание, С++ только начинаю осваивать, незнаю с чего начать....

Определить, образуют ли элементы массива прогрессию
Помогите решить задачку.Проверить образует ли элементы целочисленного массива N арифметическую1 и...

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

8
584 / 487 / 371
Регистрация: 05.11.2013
Сообщений: 1,263
Записей в блоге: 6
09.10.2014, 06:38 2
тут на Си без "плюсов", переделать ввод/вывод, думаю, не проблема.
еще сравнение вещественных чисел
C
1
if (a[i]/a[i-1] != q)
теоретически может оказаться некорректным из-за погрешностей вычислений с ними. Тогда вместо выделенного пишется
C
1
2
3
#include <math.h> //в начале программы
//...
if (fabs(a[i]/a[i-1]-q)>eps)
где eps - малое число, допустимая погрешность сравнения, например
C
1
double eps = 1e-8;
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int geopro (int n, double a[]) {
 double q=a[1]/a[0];
 for (int i=2; i<n; i++) {
  if (a[i]/a[i-1] != q) return 0;
  q = a[i]/a[i-1];
 }
 return 1;
}
 
void main () {
 const int n = 10;
 double *a = new double [n];
 a[0] = 2;
 double q = 0.5;
 for (int i=1; i<n; i++) a[i] = a[i-1] * q; //делаем геом.прогрессию
 //a[4]=100; //если раскомментарить - нарушит прогрессию и ответ="нет"
 printf ("\nResult = %s",(geopro(n,a)?"Yes":"No"));
 getchar();
}
0
4023 / 3280 / 920
Регистрация: 25.03.2012
Сообщений: 12,266
Записей в блоге: 1
09.10.2014, 10:25 3
Цитата Сообщение от ПерС Посмотреть сообщение
C++
1
2
3
4
5
6
7
int geopro (int n, double a[]) {
 double q=a[1]/a[0];
 for (int i=2; i<n; i++) { 
if (a[i]/a[i-1] != q) return 0;
 q = a[i]/a[i-1]; 
} return 1;
 }
пффф... зачем деление??? зачем вычислять q?
C++
1
2
3
4
5
6
7
int geopro (int n, double a[]) {
 const double eps=1e-3;
 for (int i=1; i<n-1; i++) {
    if (fabs(a[i]*a[i]-a[i-1]*a[i+1])>eps) return 0;
 }
 return 1;
}
0
1 / 1 / 2
Регистрация: 28.09.2014
Сообщений: 87
09.10.2014, 11:55  [ТС] 4
а без функции можно?
0
4023 / 3280 / 920
Регистрация: 25.03.2012
Сообщений: 12,266
Записей в блоге: 1
09.10.2014, 13:02 5
I3I, а какие проблемы с функциями? Ты без функции main тоже писать будешь?
1
1 / 1 / 2
Регистрация: 28.09.2014
Сообщений: 87
09.10.2014, 15:04  [ТС] 6
Цитата Сообщение от ПерС Посмотреть сообщение
C++
1
2
3
4
5
6
7
int geopro (int n, double a[]) {
*double q=a[1]/a[0];
*for (int i=2; i<n; i++) {
* if (a[i]/a[i-1] != q) return 0;
* q = a[i]/a[i-1];
*}
*return 1;
}
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а какие проблемы с функциями? Ты без функции main тоже писать будешь?
я об этом мы еще функции не учили.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
09.10.2014, 15:13 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// al.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "windows.h"
#include <time.h>
using namespace std;
 
int main()
{
    const int n = 10;
    int n; double a[n];
    cout << "Enter array." << endl;
    for (int i = 0; i < n; i++)
        cin >> a[i];
        const double eps = 1e-3;
        for (int i = 1; i<n - 1; i++) {
            if (fabs(a[i] * a[i] - a[i - 1] * a[i + 1])>eps)cout << "yes" << endl;
            else cout << "no" << endl;
 
            return 0;
}
1
1 / 1 / 2
Регистрация: 28.09.2014
Сообщений: 87
09.10.2014, 15:32  [ТС] 8
(10): error C2373: n: переопределение; различные модификаторы типа
(9): см. объявление "n"
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
09.10.2014, 16:04 9
Лучший ответ Сообщение было отмечено I3I как решение

Решение

пардон.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    const int n = 10;
   double a[n];
    cout << "Enter array." << endl;
    for (int i = 0; i < n; i++)
        cin >> a[i];
        const double eps = 1e-3;
        for (int i = 1; i<n - 1; i++) {
            if (fabs(a[i] * a[i] - a[i - 1] * a[i + 1])>eps)cout << "yes" << endl;
            else cout << "no" << endl;
 
            return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2014, 16:04
Помогаю со студенческими работами здесь

Определить, образуют ли элементы массива арифметическую прогрессию
Здравствуйте, помогите пожалуйста решить задачки, а то за целый день уже башка не варит а то завтра...

Определить, образуют ли элементы массива арифметическую прогрессию
Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если...

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

Определить, образуют ли элементы одномерного массива арифметическую прогрессию
Определить,образуют ли элементы одномерного массива арифметическую прогрессию, начиная с любого...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru