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

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

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

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

01.04.2012, 16:38. Просмотров 1038. Ответов 7
Метки нет (Все метки)

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

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

Имеются ли в массиве пары взаимно обратных соседних чисел? - C++
Дан одномерный массив x, x,..., x. Определить, имеется ли в нем пары взаимно обратных соседних чисел. Определить число таких соседств.

Проверить, имеется ли в заданном числовом массиве хотя бы одна пара чисел, совпадающих по величине. - C++
7.5.1. Помогите, пожалуйста, решить задачу в С++. Проверить, имеется ли в заданном числовом массиве хотя бы одна пара чисел,...

Определить, имеется ли среди чисел a, b, c хотя бы одна пара взаимно противоположных чисел - C++
Напишите пожалуйста вкратце хотя бы программу. Благодарю заранее

Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел - 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
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
01.04.2012, 17:41 #6
Совершенно верно. Только надо учесть, что данные типа double обрабатываются с погрешностью (примерно 10 в минус шестнадцатой) нельзя просто сравнивать произведение с единицей. Нужно брать разность и ловить случай, когда она (разность) очень мала.
lisoner
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 4
01.04.2012, 18:15  [ТС] #7
а если сделать надо чтоб ввод элементов я сам вводил.. как тогда это делается?
Catstail
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 20:35
Привет! Вот еще темы с ответами:

Дан массив из N целых чисел. Выяснить имеется ли в массиве хотя бы одно нечетное отрицательное число и определить его местонахождение в массиве - C++
1. Дан массив из N целых чисел. Выяснить имеется ли в массиве хотя бы одно нечетное отрицательное число и определить его местонахождение в...

В чём ошибка.4. Определить в одномерном числовом массиве A, из n элементов число соседств из взаимно обратных - C++
#include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;iostream&quot; int main() { setlocale(0, &quot;Rus&quot;); const int N = 5; float a; ...

Функции: определить, сколько среди заданных чисел взаимно обратных - C++
Заданы три числа с клавиатуры определить сколько среди них взаимно обратных чисел с помощью функции Добавлено через 13 часов 6 минут ...

Определить, имеется ли в одномерном числовом массиве хотя бы одна пара совпадающих по величине соседних чисел - C++
Определить, имеется ли в одномерном числовом массиве хотя бы одна пара совпадающих по величине соседних чисел. Slender, пожалуйста,...


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

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

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