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

Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел - C++

Восстановить пароль Регистрация
 
lisoner
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 4
01.04.2012, 16:38     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #1
Задан одномерный массив , состоящий из N вещественных элеметнов. Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 16:38     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел
Посмотрите здесь:

C++ Дан массив из N целых чисел. Выяснить имеется ли в массиве хотя бы одно нечетное отрицательное число и определить его местонахождение в массиве
Определить, имеется ли среди чисел a, b, c хотя бы одна пара взаимно противоположных чисел C++
C++ Среди чисел а, b, с есть хотя бы одна пара взаимно противоположных.
Проверить, имеется ли в двумерном числовом массиве C++
Имеются ли в массиве пары взаимно обратных соседних чисел? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Plazma
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
01.04.2012, 17:03     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #2
приведите пример, вы имеете ввиду(взаимно обратные) типа 2 и 1/2, 3 и 1/3 ?
lisoner
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 4
01.04.2012, 17:15  [ТС]     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #3
должны быть дробные, т.е 9/14 и 14/9 , 5/7 и 7/5.. такого плана вещественные ведь как
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
01.04.2012, 17:31     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #4
Придется выполнить примерно 0.5*N^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
#include "math.h"
#include "iostream.h"
 
double A[]={1,2,4,0.5,5.8,0.25};
 
int ChkInv( double *a, int n)
 
{
    int i,j,k=0;
 
    for (i=0; i <= n-1; i++)
        for (j=0; j <= n-1; j++)
            if ((i != j) && (fabs(*(a+i)*(*(a+j))-1.0) <= 0.0000001)) k++;
        
    return k/2;
 
}
 
 
int main(int argc, char* argv[])
{
 
    cout << ChkInv(A,6) << endl;
    return 0;
}
Результат делится на 2, т.к. каждое число учитывается дважды
lisoner
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 4
01.04.2012, 17:33  [ТС]     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #5
получается если перемножать два числа и если получается еденица в произведении то это и есть взаимно обратные числа
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
01.04.2012, 17:41     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #6
Совершенно верно. Только надо учесть, что данные типа double обрабатываются с погрешностью (примерно 10 в минус шестнадцатой) нельзя просто сравнивать произведение с единицей. Нужно брать разность и ловить случай, когда она (разность) очень мала.
lisoner
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 4
01.04.2012, 18:15  [ТС]     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #7
а если сделать надо чтоб ввод элементов я сам вводил.. как тогда это делается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 20:35     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел
Еще ссылки по теме:

Проверить, имеется ли в заданном числовом массиве хотя бы одна пара чисел, совпадающих по величине. C++
Обработка текстовых строк. Напечатать все слова, содержащие хотя бы одну цифру C++
C++ Определить, имеется ли среди целых чисел a, b и c хотя бы одно чётное

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,120
01.04.2012, 20:35     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел #8
А тогда, например, вот так:

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
#include "math.h"
#include "iostream.h"
#include "malloc.h"
 
//double A[]={1,2,4,0.5,5.8,0.25};
 
int ChkInv( double *a, int n)
 
{
    int i,j,k=0;
 
    for (i=0; i <= n-1; i++)
        for (j=0; j <= n-1; j++)
            if ((i != j) && (fabs(*(a+i)*(*(a+j))-1.0) <= 0.0000001)) k++;
        
    return k/2;
 
}
 
int main(int argc, char* argv[])
{
 
    double *A;
 
    int sz,i;
 
    cout << "Enter size of Array ";
 
    cin >> sz;
 
    if (A=(double *) calloc(sz,sizeof(double))) 
    {
 
       for (i=0; i<=sz-1; i++)
       {
            cout << "Enter " << i <<"-th element ";
            cin >> A[i];
       }
 
       cout << ChkInv(A,sz) << endl;
 
       free(A);
 
    }
    else
        cout << "Cannot allocate array" << endl;
 
    return 0;
}
Yandex
Объявления
01.04.2012, 20:35     Проверить имеется ли в массиве эл-мы, содержащие хотя бы одну пару взаимно обратных чисел
Ответ Создать тему
Опции темы

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