Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Класс шахматной фигуры https://www.cyberforum.ru/ cpp-beginners/ thread421291.html
Хочу написать решалку шахматных задач (перебор), и для начала решил написать класс каждой фигуры. Оно того стоит, или я вообще не в ту степь пошел? И если уж так, написал пока класс "Короля", взгляните, пожалуйста: class King { public: King( int = 1, int = 1 ); // конструктор по умолчанию void setCoordinates( int, int ); // установка координат
C++ Программа для настройки сети
Всем хай! Для упрощения настройки интернета решил написать программу, которая открывает три командных строки и в одной пингует роутер, в другой гугл, а третья просто cmd для выполнения инструкций. Программа, которую я написал работает некорректно, видимо из-за моего недостаточного знания библиотек. Вот код: #include <iostream> int main(){ using namespace std; system("start"); ...
C++ Введите 6 рвзных цыфр. Нужно найти найменьшее из них. С++ Введите 6 рвзных цыфр. Нужно найти найменьшее из них. (Решать по функций, которая находит найменьшее значение из двух цифр.) Ухх как пасиба https://www.cyberforum.ru/ cpp-beginners/ thread421280.html C++ Введите массив и определите являеться ли сумма элементов чётнай цифрой С++ Введите массив и определите являеться ли сумма элементов чётнай цифрой. Благадарю https://www.cyberforum.ru/ cpp-beginners/ thread421270.html
C++ Написать рекурсную функцию, которая общитает сумму введеных чисел.
С++. Ввести любое натурпльное число, написать рекурсную функцию, которая общитает сумму введеных чисел. Пасиба большое
C++ Двухмерный массив. Найдите каждай строчки симму чётных элементов https://www.cyberforum.ru/ cpp-beginners/ thread421259.html
Здрасте, есть проблемка решить. С++: Введите двухмерный массив и найдите каждай строчки симму чётных элементов. Пасиба
C++ Где используется "чистый" C++? Без .NET, QT, CLI и т.д. https://www.cyberforum.ru/ cpp-beginners/ thread421255.html
С наступившим!)
Консольный обмен сообщениями с использованием объектов ядра pipe. C++
Помогите пожалуйста, кто знает. Нужно реализовать приложение «Консольный обмен сообщениями», которое позволит обмениваться вводимыми в консоль сообщениями между двумя клиентами. Каждый пользователь может ввести произвольную строку с клавиатуры и нажатием клавиши «Enter» отправить ее противоположной стороне. При запуске приложения пользователь должен указать имя объекта ядра; если объект не...
C++ Ошибка при выполнения программы Всех с наступившем НОВЫМ ГОДОМ!!! У меня возникла ошибка при выполнение программы вот код: #include <iostream> #include <conio.h> using namespace std; int main() { int neprob=0; // число не плобедьных символов https://www.cyberforum.ru/ cpp-beginners/ thread421240.html C++ Подскажите аналог file_get_contents в C++ Привет. Подскажите аналог функции file_get_contents в С++. Или как вообще можно запросить удалённую картинку? PHP: file_get_contents("http://site.ru/image.gif"); C++: ??? Среда: Microsoft Visual Studio 2010 https://www.cyberforum.ru/ cpp-beginners/ thread421220.html
Ввод-вывод в файл на C++ C++
Есть txt файл "semiya.txt", в котором есть список: мама папа брат сестра (в столбике). Надо создать другой txt файл "ishod.txt", который выглядел бы так: 0="мама",
C++ Мне дали такую задачу: Найти сумму чисел кратных 5 и 10, от 1 до n. Мне дали такую задачу: Найти сумму чисел кратных 5 и 10, от 1 до n. Написал задачу но выходит ошибка : 20 C:\Documents and Settings\User\Ìîè äîêóìåíòû\Îèâò\main.cpp name lookup of `i' changed for new ISO `for' scoping #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { https://www.cyberforum.ru/ cpp-beginners/ thread421212.html
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.01.2012, 22:25 0

Динамический массив - C++ - Ответ 2348128

01.01.2012, 22:25. Показов 688. Ответов 5
Метки (Все метки)

Ответ

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
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iterator>
#include <numeric>
 
//Генерирует массив через rand() в пределах (up; down]
template <class Iterator, class T> void mygenerate(Iterator first, Iterator last, T up, T down)
{
    for( ; first != last; ++first)
        *first = rand() % (up - down) + down;
}
 
//Генерирует массив из потока std::istream
template <class Iterator, class T> void mygenerate(Iterator first, Iterator last, std::istream &stream)
{
    T num;
    for( ; first != last; ++first)
    {
        stream >> num;
        *first = num;
    }
}
 
//Возвращает true если num > 0, иначе false
template <class T> bool isPositive(T num) { return num > 0; }
 
//Копирует источник [first; last) в out
//Если какой либо элемент из [first; last) попадает в промежуток [a; b]
//то этот элемент не копируется.
template <class IteratorInput, class IteratorOutput, class T> 
void remove_copy_if_in_a_b(IteratorInput first, IteratorInput last, IteratorOutput out, T a, T b)
{
    for( ; first != last; ++first)
    {
        if(!((*first >= a) && (*first <= b)))
            *out++ = *first;
    }
} 
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::cout << "1 - random, 2 - you" << std::endl;
    int answ;
    std::cin >> answ;
    if(answ == 1)
    {
        int up, down;
        std::cout << "up, down" << std::endl;
        std::cin >> up >> down;
        if(down > up)
            std::swap(up, down);
        //Генерирует массив через rand()
        mygenerate(v.begin(), v.end(), up, down);
    }
    else if(answ == 2)
        //Генерирует массив через std::cin
        mygenerate<std::vector<int>::iterator, int>(v.begin(), v.end(), std::cin);
    else
    {
        //Ничего не генерирует :P
        std::cout << "you are really stupid... :\'(" << std::endl;
        return 1;
    }
    //Выводим массив путем копирования его в поток вывода
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    //Выводим максимальный элемент в массиве
    std::cout << *std::max_element(v.begin(), v.end()) << std::endl;
    //Находим последний положительный элемент
    std::vector<int>::iterator last = v.begin() + (v.rend() - std::find_if(v.rbegin(), v.rend(), isPositive<int>)) - 1;
    //Если его нет, пусть им будет первый элемент, так надо
    if(last == v.begin() - 1)
        last = v.begin();
    //Выводим сумму элементов массива с первого по last
    std::cout << std::accumulate(v.begin(), last, 0) << std::endl;
    int a, b;
    std::cin >> a >> b;
    std::vector<int> vec(10);
    //Копируем массив v в vec
    //Элементы, попадающие в промежуток [a; b] не копируются
    remove_copy_if_in_a_b(v.begin(), v.end(), vec.begin(), a, b);
    //Если надо, можно убрать комментарии у 2 строчек ниже и закомментировать 3-ю
    //Эти строчки копируют vec в v и выводят его
    //std::copy(vec.begin(), vec.end(), v.begin());
    //std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
Добавил комментарии

template. В двух словах это такая штука, с помощью которой функцию можно вызывать с разными типами параметров без перегрузки самой функции. К примеру
C++
1
template <class T> T max(T a, T b) { return ((a > b) ? (a) : (b)); }
можно вызывать, если a и b будут int, float, double, char и т.д. Соответсвенно, если вам потребуется изменить тип массива, то не нужно будет менять каждую функцию.
Можно применять не только к функциям, но тут речь только о них.

vector. "Обертка" над массивом. Записи
C++
1
2
std::vector<int> vec(10);
int arr[10];
относительно эквивалентны. Но, если в обычном массиве мы можем записать только 10 или меньше элементов, то в вектор мы можем добавить другие элементы путем v.push_back(<T>). Соответственно, std::vector можно считать динамическим массивом. Подробнее можно прочитать тут

Вернуться к обсуждению:
Динамический массив C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2012, 22:25
Готовые ответы и решения:

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

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

Создать динамический класс Book, содержащей динамический массив Authors
всем привет. может кто-то набросать код для такой вот задачи: Создать динамический класс Book,...

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают,...

5
01.01.2012, 22:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2012, 22:25
Помогаю со студенческими работами здесь

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой массив только...

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий...

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru