Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Hubbitus
Статус: 7-й класс
Рейтинг: 99
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 83
∙ повысить рейтинг >>
Лысков Игорь Витальевич
Статус: Профессионал
Рейтинг: 45
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1271
от 31.03.2009, 00:35

Администратор:Dr_Andrew
В рассылке:Подписчиков: 501, Экспертов: 45
В номере:Вопросов: 2, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 163236: Здравствуйте.Помогите решить задачу: Поиск элементов ,встречающихся в векторе более одного раза.Из найденных элементов сформировать новый массив. Спасибо....


Вопрос № 163254: Здравствуйте уважаемые эксперты. У меня такой вопрос: как создать вдусвязный список из случайных чисел. Преобразовать его в кольцо. Предусматреть возможность движения по кольцу в обе стороны с отображением местоположения текущего элемента. Реализован...

Вопрос № 163.236
Здравствуйте.Помогите решить задачу: Поиск элементов ,встречающихся в векторе более одного раза.Из найденных элементов сформировать новый массив.
Спасибо.
Отправлен: 25.03.2009, 15:29
Вопрос задал: Strel0k (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Micren
Здравствуйте, Strel0k!
Программа. Проверял:VC++,BC++.
Код:

#include <limits>
#include <locale>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <cstdlib>

using namespace std;

// Ограничим максимальное количество элементов
const unsigned int MAX=1000000;

typedef vector<int> ivector;

int main()
{
locale::global(locale("russian_russia.866"));
srand(static_cast<unsigned int>(time(0)));
// Вводим количество элементов вектора
unsigned int N=0;
while(!N)
{
wcout<<L"Введите количество элементов вектора(1.."<<MAX<<L"):";
wcin>>N;< br> if(wcin.fail())
{
wcout<<L"Ошибочный ввод"<<endl;
wcin.clear();
}
else
{
if(N>MAX)
{
wcout<<L"Слишком большое количество элементов"<<endl;
N=0;
}
}
wcin.ignore(numeric_limits<streamsize>::max(),L' ');
}
try
{
// Наш вектор
ivector intVec(N);
wcout<<L"Исходный вектор:"<<endl;
// Заполняем вектор случайными числами в диапазоне 0..100 и выводим его
for(ivector::iterator it=intVec.begin();it!=intVec.end();++it)
{
*it=static_cast<int>(static_cast<double>(rand())/RAND_MAX*100);
wcout<<setw(4)<<*it<<L' ';
}
wcout<<endl;
// Вектор повторяющихся элементов
ivector repeatVec;
// Перебор всех элементов вектора
for(ivector::iterator it=intVec.begin();it!=intVec.end();++it)
{
// Если нет в списке повторяющихся
if(find(repeatVec.begin(),repeatVec.end(),*it)==repeatVec.end())
{
// Если встречается еще раз
if(find(it+1,intVec.end(),*it)!=intVec.end())
repeatVec.push_back(*it); // Добавим в список повторяющихся
}
}
// Если есть повторы
if(repeatVec.size())
{
/ / Выводим вектор
wcout<<L"Вектор повторяющихся элементов:"<<endl;
for(ivector::const_iterator it=repeatVec.begin();it!=repeatVec.end();++it)
{
wcout<<setw(4)<<*it<<L' ';
}
}
else wcout<<L"Повторяющихся элементов нет";
wcout<<endl;
}
// Обработка исключений
catch(bad_alloc)
{
wcout<<L"Невозможно выделить память"<<endl;
}
catch(...)
{
wcout<<L"Неизвестное исключение"<<endl;
}
system("PAUSE");
return 0;
}

Пример работы:
Код:

Введите количество элементов вектора(1..1000000):32
Исходный вектор:
75 87 56 85 86 80 69 49 48 43 2 90 82 32 63 8
62 60 74 2 59 55 65 89 45 76 89 78 40 79 80 5

Вектор повторяющихся элементов:
80 2 89
Ответ отправил: Micren (статус: Практикант)
Ответ отправлен: 25.03.2009, 16:14

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 246057 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вопрос № 163.254
    Здравствуйте уважаемые эксперты. У меня такой вопрос: как создать вдусвязный список из случайных чисел. Преобразовать его в кольцо. Предусматреть возможность движения по кольцу в обе стороны с отображением местоположения текущего элемента. Реализовано должно быть всё в среде C++Builder 6. Заранее спасибо
    Отправлен: 25.03.2009, 20:14
    Вопрос задал: Exot1k (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Micren
    Здравствуйте, Exot1k!

    Закольцованный список.
    Не знаю как насчет C++ Builder 6(староват будет), но в C++ Builder 2009 программа работает:
    Результат работы:
    Код:

    Заносим элементы в конец списка:
    14 19 14 5 18
    Список:
    14 19 14 5 18
    Заносим элементы в начало списка:
    8 15 15 13 0
    Список:
    0 13 15 15 8 14 19 14 5 18
    Проверка конструктора копирования:
    0 13 15 15 8 14 19 14 5 18
    Проверка метода clear(). Должен быть пустой список:

    Проверка оператора присваивания:
    0 13 15 15 8 14 19 14 5 18
    Проверка метода insert(). Начиная с первого и через один должно быть 999
    999 0 999 13 999 15 999 15 999 8 999 14 999 19 999 14 999 5 999 18
    Размер списка:20
    Проверка метода pop_back. Список должен изменить направ ление.
    18 999 5 999 14 999 19 999 14 999 8 999 15 999 15 999 13 999 0 999
    Проверка метода pop_back. Список должен изменить направление еще раз.
    999 0 999 13 999 15 999 15 999 8 999 14 999 19 999 14 999 5 999 18
    Проверка метода erase(). Должен быть список без 999.
    0 13 15 15 8 14 19 14 5 18

    Редактирование: Двойное обращение.
    --------
    ∙ Отредактировал: Зенченко Константин Николаевич, Профессор
    ∙ Дата редактирования: 27.03.2009, 20:44 (время московское)

    Приложение:

    Ответ отправил: Micren (статус: Практикант)
    Ответ отправлен: 27.03.2009, 18:16

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 246197 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Бизин Михаил Анатольевич
    Здравствуйте, Exot1k!
    Программа работает под Dev-C++
    Но в коде легко разобраться и функции легко адаптировать под C++Builder
    Главное в программе - это функции:
    AddElement() - Вставить элемент в кольцевой список
    DeleteElement() - Удалить элемент из кольцевого списка
    DeleteSpisok() - Удалить список
    В main() можно разобраться, как используются функции.

    Результат выводится на экран в виде значений элементов от 0 до 9 составляющих список
    при нажатии 'p' или 'n' текущий указатель становится на предыдущий или следующий элемент соответственно.
    И с этого элемента начинается вывод на экран.
    Выход по ESC.

    Приложение:

    Ответ отправил: Бизин Михаил Анатольевич (статус: 3-й класс)
    Ответ отправлен: 27.03.2009, 21:04

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 246207 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное