Форум программистов, компьютерный форум CyberForum.ru

Не может удалить элемент из вектора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить класс для рациональных чисел http://www.cyberforum.ru/cpp-beginners/thread664491.html
Начало изучения понятия класса и объекта в С++, для меня много не ясного. Помогите, пожалуйста. Задача: необходимо Определить класс (Rational) для рациональных чисел. Рациональное число - число кот может быть представлено как отношение двух целых чисел: 1/2, 3/4, 64/2 и т.д. Включить конструктор с 2 аргументами, кот может быть использован для установления member переменных объекта с любыми...
C++ не проходит инцилизация вектора #include <iostream> #include <vector> #include <ctime> // function RandomInitializationVector void PrintElementVector(std::vector <int> vector); void RandomInitializationVector(std::vector <int> vector, int size); int main() { std::cout << "Test Vector" << std::endl << std::endl; http://www.cyberforum.ru/cpp-beginners/thread664480.html
C++ Программа, которая помогает найти число х между 0 и 1000
Программа, которая помогает найти число х между 0 и 1000. Это число х выбирается программой. Использовать функцию rand. Когда вводишь число, программа должна сказать "слишком большое" или "слишком маленькое", либо "угадал"! И еше она должна подсчитивать число попыток. помогите написать! Ниче не получается
Вектор C++
Заполните вектор случайными числами. Напишите вывод на экран. Отсортируйте вектор. Напишите функцию, которая удалит из вектора все простые числа. Напишите функцию, которая копирует все простые числа из одного вектора в другой. как это можно реализовать?
C++ Вычислить значение функции http://www.cyberforum.ru/cpp-beginners/thread664425.html
Ребят помогите написать код двух задач. Задача 1 Роздилите абитуриентов, что выдержали конкурс, между двумя группами с ближайшим количественным составом. Задача 2 Заданно значение функции sin(a). Вычислить главное значение аргумента этой функции в градусах. Добавлено через 15 часов 42 минуты Ну что ребят ктонибудь знает как написать код к этим задачам???
C++ Как правильно обьявить геометрические точки? Здраствуйте! Задача стоит такая : Добавить геометрическую точку с указанными координатами. (х у) Отсортировать геометрические точки в сторону увеличения расстояния от начала координат. Теперь основной вопрос : как правильно обьявить точку, для последующей сортировки ( по гипотенузе ), а также обращения к етой точке. Дополнительный, необязательный вопрос : для дальнейшего удаления етой точки... подробнее

Показать сообщение отдельно
KostyaKulakov
Заблокирован
06.10.2012, 09:42     Не может удалить элемент из вектора
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <iostream>
#include <vector>
#include <ctime> // function RandomInitializationVector
#include <algorithm>
 
void PrintElementVector(std::vector <int> vector);
void RandomInitializationVector(std::vector <int> &vector, int size);
bool Resheto_Atkina(int number);
void DeletePrimes( std::vector<int> & vec );
void primes_up(std::vector <int> &vector1, std::vector <int> &vector2);
 
int main()
{
    std::cout << "Test Vector" << std::endl << std::endl;
 
    //std::vector <type> name; //здесть type - тип данных в векторе, а name - имя вектора
 
    std::vector <int> test;
 
    std::cout << "initialization vector \"test\" " << std::endl << std::endl;
 
    RandomInitializationVector(test, 10);
 
    PrintElementVector(test);
 
    std::cout << "\nGo to Sort vector! Please push key" << std::endl;
 
    std::cin.get();
    
    system("cls");
 
    std::sort(test.begin(), test.end());
 
    PrintElementVector(test);
 
    std::cout << "\nGo to Copy vector! Please push key" << std::endl;
 
    std::cin.get();
    
    system("cls");
 
    std::vector <int> test2;
 
    primes_up(test, test2);
 
    auto size = test.size();
 
    PrintElementVector(test2);
 
    std::cout << "\nGo to Removal of primes in vector! Please push key" << std::endl;
 
    std::cin.get();
    
    system("cls");
 
    DeletePrimes(test);
 
    PrintElementVector(test);
}
 
void RandomInitializationVector(std::vector <int> &vector, int size)
{
    srand(time(0));
 
    for(int i=0; i < size; ++i)
        vector.push_back(rand() % 999);
}
 
void PrintElementVector(std::vector <int> vector)
{
    auto size = vector.size();
 
    for(int i=0; i < size; ++i)
        std::cout << "vector[" << i << "] : " << vector[i] << std::endl;
}
 
void primes_up(std::vector <int> &vector1, std::vector <int> &vector2)
{
    auto size = vector1.size();
 
    int cnt=0;
 
    for(int i=0; i < size; ++i)
    {
        if(Resheto_Atkina(vector1[i]))
            vector2.push_back(vector1[i]);
    }
            
}
 
void DeletePrimes(std::vector<int> &vec)
{
  size_t i, place = 0, limit = vec.size();
 
  for (i = 0; i < limit; ++i) 
  {
     if(Resheto_Atkina(vec[i]))
     {
        vec.erase(vec.begin() + i);
     }
  }
}
 
bool Resheto_Atkina(int number) // [url]http://ru.wikipedia.org/wiki/Решето_Аткина[/url]
{
    int limit = 1000;
    int sqr_lim;
    bool is_prime[1001];
    int x2, y2;
    int i, j, n;
 
    // Инициализация решета
    sqr_lim = (int)sqrt((long double)limit);
    for (i = 0; i <= limit; i++) is_prime[i] = false;
    is_prime[2] = true;
    is_prime[3] = true;
 
    // Предположительно простые - это целые с нечетным числом
    // представлений в данных квадратных формах.
    // x2 и y2 - это квадраты i и j (оптимизация).
    x2 = 0;
    for (i = 1; i <= sqr_lim; i++) {
        x2 += 2 * i - 1;
        y2 = 0;
        for (j = 1; j <= sqr_lim; j++) {
            y2 += 2 * j - 1;
 
            n = 4 * x2 + y2;
            if ((n <= limit) && (n % 12 == 1 || n % 12 == 5))
                is_prime[n] = !is_prime[n];
 
            // n = 3 * x2 + y2; 
            n -= x2; // Оптимизация
            if ((n <= limit) && (n % 12 == 7))
                is_prime[n] = !is_prime[n];
 
            // n = 3 * x2 - y2;
            n -= 2 * y2; // Оптимизация
            if ((i > j) && (n <= limit) && (n % 12 == 11))
                is_prime[n] = !is_prime[n];
        }
    }
 
    // Отсеиваем кратные квадратам простых чисел в интервале [5, sqrt(limit)].
    // (основной этап не может их отсеять)
    for (i = 5; i <= sqr_lim; i++) {
        if (is_prime[i]) {
            n = i * i;
            for (j = n; j <= limit; j += n) {
                is_prime[j] = false;
            }
        }
    }
 
    if(number == 2 || number == 3 || number == 5)
        return true;
 
    for (i = 6; i <= limit; i++) {  // добавлена проверка делимости на 3 и 5. В оригинальной версии алгоритма потребности в ней нет.
        if ((is_prime[i]) && (i % 3 != 0) && (i % 5 !=  0))
        {
 
           if(i == number)
               return true;
        }
 
        }
     return false;
}
DeletePrimes не получается удалить. проблема в том что вылетает программа.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru