Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
1

Вывести на экран количество пар чисел, которые в сумме дают заданное число s

27.11.2015, 13:46. Просмотров 595. Ответов 1
Метки нет (Все метки)

Условия программы:
Дан целочисленный массив чисел,(не отсортированный) и полож число "s" типа int . В массиве нет одинаковых элементов.

Задача:
Вывести на экран коло-во ПАР чисел которые при сумме дают это самое число "s"

Вот код. Сначало сортирую,потом вот алгоритм.(Такая морока с отриц числами)
1)Складываю все отриц с каждым полож
2)Пока полож число не станет <s
3) Как только оно таковым стало прекращаю перебирать отриц числа и работаю только с полож
4)если данная сумма равна s то двигаю левый и правый концы навстречу друг другу
5)Если данная сума больше s то двигаю только правый конец навстречу левому
6)если меньше,то двигаю только левый
Так вот,вот в чем суть моего вопроса
1-ый вопрос)Для каждого пункта алгоритма написать строки кода ему соответствующие
2-ой) детально объяснить 5 и 6 пункты
Извините,что я такая глупая и задаю такие вопросы.Спасибо большое за понимание

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "stdafx.h"
using namespace std;
int A[100];
 
void quickSort(int l, int r)
{
    int x = A[l + (r - l) / 2];
    int i = l;
    int j = r;
    while (i <= j)
    {
        while (A[i] < x) i++;
        while (A[j] > x) j--;
        if (i <= j)
        {
            swap(A[i], A[j]);
            i++;
            j--;
        }
    }
    if (i<r)
        quickSort(i, r);
 
    if (l<j)
        quickSort(l, j);
};
 
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> A[i];
    }
    quickSort(0, n - 1);
    for (int i = 0; i < n; i++)
    {
        cout << A[i] << " ";
    }
 
    int s = 0;
    cin >> s;
    int sum = 0;
    int lk = 0;
    int pk = n - 1;
    int counter = 0;
    int firstPositive = 0;
    while (lk < pk)
    {
        if (A[pk]>s)
        {
            while (A[lk] < 0)
            {
                sum = A[lk] + A[pk];
                if (sum == s)
                {
                    counter++;
                    lk++;
                    sum = 0;
                }
                else
                {
                    lk++;
                    sum = 0;
                }
            }
            if (A[pk] >= s)
            {
                lk = 0;
                pk--;
            }
        }
        else
        {
            firstPositive = lk;
            while (lk < pk)
            {
                sum = A[lk] + A[pk];
                if (sum == s)
                {
                    counter++;
                    lk++;
                    sum = 0;
                }
                else
                {
                    lk++;
                    sum = 0;
                }
            }
            lk = firstPositive;
            pk--;
 
        }
    }
    cout << "Par naideno: " << counter << endl;
    cout << endl;
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2015, 13:46
Ответы с готовыми решениями:

Поиск пар чисел в массиве, которые в сумме дают определенное число
Условия программы: Дан целочисленный массив положительных чисел,(не отсортированный) и полож число...

Класс, выясняющий, сколько среди заданных чисел пар, которые дают в сумме четное число
Добрый вечер. Помогите пожалуйста, нужно написать класс.:cry: Заданы три числа. Выяснить, сколько...

Определить сколько существует пар чисел, которые в сумме (по правилам планеты Олимпия) дают число Х
Мегапопулярный Дзидзьо посетил планету Олимпия, где живет много поклонников спорта. Тяжелая...

Заданы три числа. Сколько пар в сумме дают четное число?
Добрый вечер. Помогите пожалуйста с задачкой :) Заданы три числа. Выяснить сколько пар в сумме...

Вывести на экран все числа, на которые заданное число делится без остатка
Нужно написать программу с использованием процедуры, которая выводит на экран все числа, на которые...

1
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
27.11.2015, 13:55 2
достаточно сделать полный перебор за n2, если время не поджимает
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2015, 13:55

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

Посчитать, сколько среди пар чисел таких, которые дают в сумме число, кратное 13
(Цикл с постусловием) Вводятся пары целых чисел. Посчитать, сколько среди них пар, дающих в сумме...

Напечатайте от 1 до 4 натуральных чисел, квадраты которых дают в сумме заданное число
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы четырех...

Узнать количество пар чисел, в сумме дающих простое число
Олимпиадная задача. Помогите, пожалуйста, написать код: С клавиатуры вводится массив, состоящий...


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

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

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