Форум программистов, компьютерный форум, киберфорум
Наши страницы

В неубывающей последовательности целых чисел найти количество пар чисел с заданной разностью "D" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задание на строки и символы http://www.cyberforum.ru/cpp-beginners/thread606566.html
Выполнить надо на С++ Дана строка символов. Напечатать слова, которые начинаются и заканчиваются одной и той же буквой
C++ Функция fread и матрицы Подскажите, как правильно исп. эту ф-ию для считывания информации из файла в матрицу. Есть маленькая программка, которая никак не хочет работать верно. В чём ошибка, не пойму. Вот код:... http://www.cyberforum.ru/cpp-beginners/thread606540.html
Динамическая матрица. вставка столбца C++
не получается вставка. задание таково, что после столбцов, не содержащих отрицательные элементы нужно вставить 2 столбец. вылетаю на строке t=stroka с ошибкой Access violation writing location...
C++ Изменить расширение файла
имя файла заранее не известно
C++ Ограничение char http://www.cyberforum.ru/cpp-beginners/thread606479.html
var c:char; if c in then begin ... end; Как сделать в с++?
C++ Если в строке есть элемент, равный среднему арифметическому элементов этой строки, то вставьте после него строку, состоящую из этих элементов Я нахожу среднее ариф., элемент равный среднему арифметическому, но не пойму как вставить строку из этих элементов..то есть нужно вставлять все те же самые элементы? вот что я написала int... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.06.2012, 05:23
MilitaNt, Вам поможет двоичный поиск.
C++ (Qt)
1
2
3
4
5
6
for (int i = 1; i < vec.size(); i++)
{
    t=vec[i]+d;
    // и вот с этого места ищите в диапазоне от i+1 до vec.size()-1 элемент со значением t
    // как только его нашли, то влево и вправо просматриваете и считаете общее количество элементов со значением t, увеличивая при этом значение  counter
}
Если значение d может быть отрицательным, то сразу после считывания этого значения умножаете его на -1 (результат все равно посчитает правильно).
Если значение d может быть равным 0, то можно сделать так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 1; i < vec.size(); i++)
{
    j=i+1;
    while(j<vec.size() &&  vec[i]==vec[j])
    {
        j++;
    }
    if(j>i+1)
    {
        t=j;
        while(t>i+1)
        {
            counter+=t-i+1;
            t--;
        }
        i=j-1;
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.