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

Удалить из отсортированного вектора, числа которые являются "квадратными" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка операторов http://www.cyberforum.ru/cpp-beginners/thread1048447.html
Создайте класс Fraction (обыкновенная дробь), в котором реализовать перегрузку: оператора суммирования дробей, оператора суммирования дроби и целого числа, оператора умножения, деления, вычитания...
C++ Вычисление тангенса с заданой точностью Задача. Решить уравнение x*tg(x)=a методом половинного деления с заданой точностью е=0,0001. Спасибо заранее. http://www.cyberforum.ru/cpp-beginners/thread1048422.html
Вызов функции C++
#include "stdafx.h" #include <locale> #include <iostream> using namespace std; class Bankomat { public: Bankomat(){}; ~Bankomat(){};
C++ SF алгоритм
Можете предоставить мне самый простой, понятный любому школьнику код SF алгоритма. Я не знаю, что такое SF алгоритм, но подозреваю, что это хэш функция
C++ Циклы.Посчитать количество чисел http://www.cyberforum.ru/cpp-beginners/thread1048363.html
Посчитать количество чисел от a до b(a и b вводятся с клавиатуры), у которых все цифры разные(не используя массива).Помогите пожалуйста! Вот набросок:int a, b, p, v, n = 0; int n0 = 0, n1 = 0, n2 =...
C++ Запуск консольного приложение на форме Имеется ли возможность запустить консольное приложение по нажатию кнопки на форме? (В приложении windows forms) Хотелось бы, что бы кнопка не просто вызывала окно консоли, а чтобы консоль... подробнее

Показать сообщение отдельно
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
21.12.2013, 20:28  [ТС]
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
Да, это проверял другое. У меня есть еще zifra и zifra2
Там просто не изменил.
Ошибка по прежнему выходит. Я определенно, где-то что-то не правильно делаю.
Точнее не понимаю, как правильнее сделать, хотя читал и смотрел неоднократно примеры.
Полная версия:

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
#include <iostream>
#include <ostream>
#include <iomanip>
#include <math.h>
#include <ctime>            // для генерации случайных чисел начиная с произвольного числа
 #include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
 
int f1 (int n, int a, int b) //генерация чисел
    {   int total;
        for(int i=0; i<n; i++) 
             {
                 total = a + rand() % ( b - a + 1 ); //генерация случайных чисел в диапазоне а б
                 
             }
        return total;
    }
 
void show_vector( vector<int>&v1) //    Написать функцию, выводящую на экран элементы вектора – в столбик с указанием индекса или в строку через пробел без указания индекса
    {
        vector<int>::iterator it; //Объявляем итератор
        for (it=v1.begin();it!=v1.end();it++)
        cout<<" "<<*it; //с помощью итератора выводим элементы вектора на экран
        cout<<endl;
        return;
    }
 
bool zifra(int a)
{
    bool res=true;
    if(a<0) a=-a;
    int z=a%10;
    while(a>0 && z%2!=0) // пока есть в числе цифры и текущая цифра нечётная
    {
        a/=10; //отрбросить последнюю цифру
        z=a%10; // взять новую текущую
    }
    if(a>0) res=false; // искать есть где -- попалась чётная цифра
    return res;
}
unsigned int kvadrat(unsigned int tmp)
{
    return tmp*tmp;
}
bool zifra2(int a)
{
    int i=0;
    bool res=false;
    if(a<0) a=-a;
    int z=a%10;
 
    while( kvadrat(i)<a) // пока есть в числе цифры и текущая цифра нечётная
    {
        a/=10; //отрбросить последнюю цифру
        z=a%10; // взять новую текущую
    }
    if(kvadrat(i)==a) res=true; // искать есть где -- попалась чётная цифра
    else ++i;
    return res;
}
void BubbleSort(vector<int>&v1,int &n)// Отсортировать по убыванию те элементы вектора, которые содержат только нечётные цифры
{  
int tmp;
int n1=n-1;
for(int i = 0; i < n1; ++i) // i - номер прохода
    {            
        for(int j = i; j < n; ++j) // внутренний цикл прохода
            {    
                if(zifra(v1[i]) &&  zifra(v1[j]) && v1[i]<v1[j]) 
                    {
                        tmp = v1[j ]; 
                        v1[j ] = v1[i]; 
                        v1[i] = tmp;
                    }
            }
    }
}
 
 
void delet (vector<int>&v1, int &n)
{
for (int i=0;i<n; i++)
{
if(zifra2(v1[i]))
v1.erase(v1.begin()+i);
}
}
int main()
{ 
setlocale(LC_ALL, "Russian"); // функция локализации вызывается только один раз
const int NotUsed = system( "color 2" );
    int n, a, b;
    srand((unsigned)time(NULL));   // для генерации случайных чисел начиная с произвольного числа
    cout<<" Задание по варианту:"<< endl;
    cout<<" "<< endl;
    cout<<" 1) Отсортировать по убыванию те элементы вектора, которые содержат только нечётные цифры"<< endl;
    cout<<" "<< endl;
    cout<<" 2) Удалить из вектора все элементы, которые являются полными квадратами."<< endl;
    cout<<" "<< endl;
    cout<<" 3) Перед элементами второго вектора, являющимися двузначными числами, вставить наибольшее по модулю число из первого вектора "<< endl;
    cout<<" "<< endl;
    cout<<" Введите Данные:"<< endl;
    cout<<" "<< endl;
    cout<<" Количество элементов вектора: "<< endl; cin>>n;
    cout<<" "<< endl;
    cout<<" Диапазон значений: "<< endl; cin>>a>>b;
    cout<<" "<< endl;
    system ("cls");
std::vector <int> v1, v2, v3; //Объявили вектор в n элементов. ВОЗМОЖНО нужно сразу резервировать и задавать кол-во элементов????
for (int i=0;i<n;i++) v1.push_back(f1(n,a,b)); //заполняем вектор n случайными числами
cout<<" "<< endl;
//заполнили вектор и вывели
cout<<" Вектор 1 заполнен: "<<endl; show_vector(v1);
cout<<" "<< endl;
//задание 1 
BubbleSort(v1,n);
cout<<" Вектор 1 отсортированы только нечетные числа: "<<endl; show_vector(v1);
//задание 2
 
delet(v1,n);
v1=v2;
cout<<" Вектор 2 были удалены все квадратные числа: "<<endl; show_vector(v2);
 
//cout<<" Задание.1 Вектор отсортирован: "<<endl; show_vector(v1);
cout<<" "<< endl;
 
 
 
 
 
system("PAUSE"); 
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.