Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
RuslanBogd
1 / 1 / 0
Регистрация: 15.09.2015
Сообщений: 87
1

Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел

21.05.2016, 09:35. Просмотров 493. Ответов 21
Метки нет (Все метки)

Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2016, 09:35
Ответы с готовыми решениями:

Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел
Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно...

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

Среди чисел а, b, с есть хотя бы одна пара взаимно противоположных.
Запишите логическое выражение, принимающее значение true, если указанное выше...

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

Определить, имеется ли среди чисел хотя бы пара равных между собой
Помогите решить, Пожалуйста) 3.Даны 3 вещественных числа a,b,c. Определить,...

21
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 10:13 2
Код писал в текстовом редакторе, не знаю рабочий ли, но принцип думаю поймёшь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    int a[3] = {4, 2, -4};
    for(unsigned i = 0; i < 3; i++)
    {
        for(unsigned j = i; j < 3; j++)
        {
            if(-a[i] == a[j])
            {
                cout << "elem " << i << ": " << a[i] " and elem " << j << ": " << a[j] << endl;
            }
        }
    }
    return 0;
}
1
RuslanBogd
1 / 1 / 0
Регистрация: 15.09.2015
Сообщений: 87
21.05.2016, 10:25  [ТС] 3
shezu, а можно сделать ввод с клавиатуры?
1
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:04 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
        int a[3];
    for(unsigned i = 0; i < 3; i++)
    {
        cout << "Enter elem " << i << ": "; cin >> a[i];
    }
    for(unsigned i = 0; i < 3; i++)
    {
        for(unsigned j = 0; j < 3; j++)
        {
            if(-a[i] == a[j])
            {
                i += j - i; // пропускаем элементы, не нуждающиеся больше в проверке
                cout << "elem " << i << ": " << a[i] " and elem " << j << ": " << a[j] << endl;
            }
        }
    }
    return 0;
}
Конечно
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
21.05.2016, 11:15 5
shezu, можно еще так, думаю (код проверить нет сейчас возможности)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    signed a[3] = {4, 2, -4};
    for(unsigned i = 0; i < 3; i++)
    {
        for(unsigned j = i; j < 3; j++)
        {
            if(!(a[i] + a[j]))
            {
                cout << "elem " << i << ": " << a[i] " and elem " << j << ": " << a[j] << endl;
            }
        }
    }
    return 0;
}
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:19 6
Так не сработает код правильно. a[i] + a[j] (или представим -4 + 2 = -2 - условие пройдёт) может стать меньше 0, а отрицательные числа это тоже false в плюсах.
Вот если if((a[i] + a[j]) == 0) - сработает.
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
21.05.2016, 11:23 7
Цитата Сообщение от shezu Посмотреть сообщение
отрицательные числа это тоже false в плюсах
с чего бы?
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:24 8
if(!(-1)) - условие пройдёт, получается это false.
0
RuslanBogd
1 / 1 / 0
Регистрация: 15.09.2015
Сообщений: 87
21.05.2016, 11:25  [ТС] 9
shezu,
C++ (Qt)
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
#pragma hdrstop
#pragma argsused
 
#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif
using namespace std;
#include <stdio.h>
#include <iostream>
 int _tmain(int argc, _TCHAR* argv[])
{   int a[3];
    for(unsigned i = 0; i < 3; i++)
    {
        cout << "Enter elem " << i << ": "; cin >> a[i];
    }
    for(unsigned i = 0; i < 3; i++)
    {
        for(unsigned j = 0; j < 3; j++)
        {
            if(-a[i] == a[j])
            {
                i += j - i;
                cout << "elem " << i << ": " << a[i] <<" and elem " << j << ": " << a[j] << endl;
            }
        }
    }
    system("pause");
    return 0;
}
Вот этот код работает, спасибо.
Но можно его исправить, не заметил полное условие задания.
Вот с этим надо сделать "Получение результата должно быть реализовано в виде функции, а исходные данные передаваться в нее как параметры. Ввод значений исходных данных и вызов функции должны производиться в функции main. "
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
21.05.2016, 11:28 10
shezu, ну не знаю, у меня код работает корректно
Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:29 11
У тебя старый код)
Там лишняя строка i += j - i; - из-за неё может перепрыгнуть через элемент и код не покажет все нужные результаты.
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
21.05.2016, 11:30 12
Цитата Сообщение от shezu Посмотреть сообщение
if(!(-1)) - условие пройдёт
опять-таки, с чего бы
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:30 13
Ferrari, а теперь поставь значения -4, 1, 1
0
RuslanBogd
1 / 1 / 0
Регистрация: 15.09.2015
Сообщений: 87
21.05.2016, 11:33  [ТС] 14
shezu, код работает, но можно его переделать под данное условие "Получение результата должно быть реализовано в виде функции, а исходные данные передаваться в нее как параметры. Ввод значений исходных данных и вызов функции должны производиться в функции main. " ??
Только тот код где сам вводишь элементы.
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
21.05.2016, 11:33 15
shezu,
Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 11:54 16
ferrari, человеку надо чтобы 2 числа через операцию a[i] + a[j] возвращали 0. То есть (-4 + 4) например, а (-4 + 1 == -3) - не правильно и не соблюдает его условию.

Добавлено через 16 минут
Ууу, я похоже от жизни отстал. И правда работает условие if(-1) - возвращает true в visual studio, но с компиляторами g++, mingw - нет, я считаю это логичнее нежели в visual studio.

Ну вот так вот сделал я
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
#include <iostream>
#include <vector>
using namespace std;
 
vector<int> foo(const vector<int> &a)
{
    vector<int> result;
    for (unsigned i = 0; i < a.size(); i++)
    {
        for (unsigned j = i + 1; j < a.size(); j++)
        {
            if (-a[i] == a[j])
            {
                result.push_back(a[i]);
                result.push_back(a[j]);
                break;
            }
        }
    }
    return result;
}
 
int main()
{
    vector<int> a;
    for (unsigned i = 0; i < 3; i++)
    {
        int n;
        cout << "Enter value " << i << ": "; cin >> n;
        a.push_back(n);
    }
    auto result = foo(a);
    for (auto a : result)
    {
        cout << a << " ";
    }
    cout << endl;
    system("pause");
    return 0;
}
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
21.05.2016, 12:01 17
Цитата Сообщение от shezu Посмотреть сообщение
условие if(-1) - возвращает true в visual studio
условное выражение и так принимает значение true, потому что под истиной понимается любое ненулевое значение
1
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
21.05.2016, 12:09 18
Ferrari F1, и правда, почему я думал раньше что ноль и ниже - false?
Запомню теперь.
0
RuslanBogd
1 / 1 / 0
Регистрация: 15.09.2015
Сообщений: 87
28.05.2016, 11:14  [ТС] 19
shezu, Слушай запускаю твой код мне выдает ошибку "vector <int> foo(const vector<int> &a)" в этой строчке, говорит мол синтаксис не правильный, не подскажешь как исправить?
0
shezu
4 / 4 / 1
Регистрация: 20.01.2016
Сообщений: 24
28.05.2016, 13:33 20
RuslanBogd, понятия не имею что там не так. Текст ошибки бы.
0
28.05.2016, 13:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2016, 13:33

Определить, имеется ли в одномерном числовом массиве хотя бы одна пара совпадающих по величине соседних чисел
Определить, имеется ли в одномерном числовом массиве хотя бы одна пара...

Определить имеется ли в заданных массивах хотя бы одна пара одинаковых элементов
Дан массив целых чисел a(30). Определить имеется ли в данных массивпх хотя бы...

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


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

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

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