Подскажите пожалуйста как сформировать массив положительных из уже существующего массива ,как именно работать с размерностью нового массива,если по правилу его значение размерности должно быть фиксированным,но ведь при изменении изначального массива ,количество положительных чисел может изменяться.
Можно использовать статический массив, в котором мы работаем с первыми элементами
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#define MAX 1000
using namespace std;
int main(){
int array1[MAX];
int array2[MAX];
int size1 = 30;
int size2 = 0;
//Формируем первый массив и выводим на экран
for (int i = 0; i < size1; i++) {
array1[i] = -50 + rand() % 100;
cout << array1[i] << " ";
}
cout << endl;
//Формируем второй массив
for (int i = 0; i < size1; i++) {
if (array1[i] > 0) {
array2[size2] = array1[i];
size2++;
}
}
//выводим на экран второй массив
for (int i = 0; i < size2; i++) {
cout << array2[i] << " ";
}
cout << endl;
return 0;
}
Или использовать контейнер vector
vector<int> mas1;
vector<int> mas2;
for (int i = 0; i < size1; i++) {
mas1.push_back(-50 + rand() % 100);
cout << mas1[i] << " ";
}
cout << endl;
for (int i = 0; i < mas1.size(); i++) {
if (mas1[i] > 0) {
mas2.push_back(mas1[i]);
}
}
Для начала я посоветую всё же разобраться в том, что такое динамическая область памяти и как там хранятся данные. Вы наверняка привыкли использовать простой массив с фиксированным количеством хранящих в себе объектов. Но есть "динамические массивы", которые хранятся в куче. Если Вы знаете, что такое указатели, тогда Вам будет не трудно в этом разобраться.
Вот пример динамического массива:
int* array; // указатель на тип данных int
array = new int [5]{1,5,3,6,2}; // выделение памяти под массив на 5 объектов {1,5,3,6,2}
// теперь указатель содержит адрес данного массива и с ним можно работать, как с простым массивом
std::cout << array[1] << std::endl; // output: 5
array[2] = 99;
std::cout << array[2] << std::endl; // output: 99
delete[] array; // но при окончании работы с массивом нужно очистить память
// после очистки памяти указатель array хранит адрес, но на пустой участок памяти
// и мы можем продолжить работать
array = new int [2]{1,5}; // создадим массив на 2 объекта
// а что если мы хотим добавить еще один объект? - Пожалуйста
int *temp = new int[3];
for(int i < 2)
{
temp[i] = array[i];
}
temp[2] = 888;
delete[] array; // вновь очищаем память
array = temp; // говорим, что наш указатель будет знать про наш новый массив
// и дальше можно работать с массивом так же, как и ранее
std::cout << array[2] << std::endl; // output: 888
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Суть задания: есть список покупок по днямСписок является вектором векторов
Мне надо пробежаться по list,который хранит имеет тип структурыКаким образом можно в цикле перебрать каждый элемент и распечатать? Допустим...
У меня обычный "пустой проект" в VS2019(С++), я нашёл как найти координаты окна и курсора,
При попытке компиляции программы на C++ выдаёт ошибку reinterpret_cast from 'const char *' to