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

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

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

Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел.
http://www.cyberforum.ru/cpp-beginners/thread1666796.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2016, 09:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Заданы три числа. Определить, имеется ли среди них хотя бы одна пара взаимно противоположных чисел (C++):

Определить, имеется ли среди чисел 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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). Определить имеется ли в данных массивпх хотя бы...

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

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

Есть ли среди трех чисел хотя бы одна пара равных между собой
Даны три действительных числа a, b з. Определить, есть ли среди них хотя бы...


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

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

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