Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] работа с вектором 
V
    Опции темы
VampirDX
Дата 2.12.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



в общем, я уже писал по поводу этой проги, но все равно, она глючит немного. нестабильная(проверял на нескольких визуал студиях 2005. где-то что-то обязательно не работает, при том, везде по разному((. 
Код

#include <iostream>
#include <vector>
#include <algorithm>//объявления стандартных алгоритмов
#include <functional>//стандарт. функциональных объектов
#include <numeric>//обобщенные численные алгоритмы

 using namespace std;

 bool IsOdd (double x) { return x<0; }

int main(int i, int n=NULL, int q =NULL, double a = NULL, double mul = NULL)
{
 //вводим длину вектора
 cout<<"Length of sequence of numbers in a vector:    ";
 cin >> n;
 cout<<endl;
 //создаем вектор
 vector<double>v1(n);
 //вводим последовательность
 cout<<"Enter this sequence of numbers"<<endl;
 for (i = NULL; i < n; i++)
 {
  cout<<i+1<<".      ";   
  cin >> v1[i];
  cout<<endl;
 }
 //считаем кол-во отрицательных чисел
 q = count_if(v1.begin(), v1.end(), bind2nd(less<double>(),NULL));
 cout<<"The quantity of negative elements is   "<<q<<endl;
 //считаем сумму отрицательных чисел, если число отрицательно
 vector<double>::iterator dd;
 vector<double>::iterator II;
 vector<double>::iterator min = min_element(v1.begin(), v1.end());
 vector<double>::iterator max = max_element(v1.begin(), v1.end());

 if (q = 0)
 {
     cout<<"No one negative number"<<endl;
     cout << "The smallest element is " << *min << endl;
     cout << "The largest element is " << *max << endl;
     //находим произведение между минимальных и максимальным
     mul = accumulate(++min, max, 1, multiplies<double>());
     cout << "Product of sequence between elements    " <<mul<<endl;}
 else if (q = n)
 {
     cout<<"q=n"<<endl;
     dd = stable_partition (v1.begin(), v1.end(), IsOdd);
     for(II=v1.begin(); II!=dd; II++)
     {    a += *II; }    
     cout<< "The sum of negative numbers in sequence is   "<<a<<endl;}
 else if (q != NULL && q !=n)
 {
     cout << "q!=NULL"<<endl;
     dd = stable_partition (v1.begin(), v1.end(), IsOdd);
     for(II=v1.begin(); II!=dd; II++)
     {    a += *II; }        
     cout<< "The sum of negative numbers in sequence is   "<<a<<endl;
     cout << "The smallest element is " << *min << endl;
     cout << "The largest element is " << *max << endl;
     //находим произведение между минимальных и максимальным
     mul = accumulate(++min, max, 1, multiplies<double>());
     cout << "Product of sequence between elements    " <<mul<<endl;
 }
 system("pause");
 return 0;
}

терь надо добавить исключение, при вводе всех отрицательных прога не возникала с ошибкой. не знаю, мож с try-блоком надо было написать, но не слишком в нем разбираюсь.
PM MAIL   Вверх
under_sun
Дата 3.12.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: 7
Всего: 17



Цитата(VampirDX @  2.12.2007,  15:19 Найти цитируемый пост)
все равно, она глючит немного

И не удивительно... Исправь:
Код

 if (q == 0)
 {
//...
else if (q == n)
{
//...



Цитата(VampirDX @  2.12.2007,  15:19 Найти цитируемый пост)
при вводе всех отрицательных прога не возникала с ошибкой.

Какая ошибка возникает и при каких данных?

Да, и NULL ни к месту используешь. NULL-ом, как правило, обозначают нулевой указатель. 
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
VampirDX
Дата 3.12.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



under_sun спасибо.  работает как часы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.2180 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.