Дан массив размера
n, заполнить его случайными числами, Найти все нечётные числа массива.Читаем у нас на сайте — Как работать с массивами. После создания массива, его необходимо заполнить случайными числами, а для этого нужно воспользоваться генератором случайных чисел. Пример работы программы смотрим ниже:
// array_even_numbers.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int main(int argc, char* argv[])
{
srand(time(0)); // генерация случайных чисел
cout << "Enter size array: ";
int array_size;
cin >> array_size;
int *ptrarray = new int [array_size]; // создание динамического массива
for (int count = 0; count < array_size; count++)
ptrarray[count] = (rand() % 99 + 1); //заполнение массива случайными числами с масштабированием от 1 до 99
cout << "array = ";
for (int count = 0; count < array_size; count++)
cout << ptrarray[count] << " "; // печать первоначального массива
cout << "\nRezult = ";
for (int count = 0; count < array_size; count++)
if ((ptrarray[count] % 2) != 0) // отсеиваем чётные числа
cout << ptrarray[count] << " "; // печать нечётных значений элементов массива
delete [] ptrarray; // высвобождение памяти
cout << endl;
system("pause");
return 0;
}
Создаётся динамический массив, который заполняется случайными числами в диапазоне [1;99] и выполняется поиск нечётных чисел. Вот результат:
CppStudio.com
Enter size array: 20
array = 60 78 78 77 75 94 49 7 8 81 35 94 8 38 29 31 76 42 12 67
Rezult = 77 75 49 7 81 35 29 31 67
Комментарии
Lee Amstrong
#include <iostream> #include <vector> #include <chrono> #include <random> int main(int argc, char const *argv[]) { std::vector<int> numbers; std::default_random_engine generator(std::chrono::system_clock::now().time_since_epoch().count()); std::uniform_int_distribution<int> distribution(1,100); int size; std::cout << "Введите кол-во генерируемых чисел: "; std::cin >> size; if (std::cin.fail()) { std::cout << "Шота сломалось :(" << '\n'; return -1; } for (size_t i = 0; i < size; i++) { numbers.push_back(distribution(generator)); } std::cout << "Содержимое массива: "; for (auto iterator = numbers.begin(); iterator != numbers.end(); ++iterator) { std::cout << " " << *iterator; } std::cout << '\n'; std::cout << "Нечетные числа: "; for (auto iterator = numbers.begin(); iterator != numbers.end(); ++iterator) { if (*iterator % 2) { std::cout << " " << *iterator; } } std::cout << '\n'; return 0; }chachic
#include <iostream>
#include <time.h>
#include <valarray>
#include <queue>
using namespace std;
int main ()
{
setlocale(LC_CTYPE,»rus»);
queue<int> qw; // Очередь для хранения номеров в масиве
srand(time(NULL));
int n=0;
cout <<«Введите размерность массива :»;
cin>>n;
valarray<int> mas(n); //создаем массив
for(int i =0;i<n;i++) mas[i]=rand()%99; //заполняем рандомными 1-99
for(int i = 0;i<mas.size();i++)
{
if((mas[i]%2)!=1) //если 1 то четное если нет то не четное
{
qw.push(i); //записываем номера в очередь
}
}
cout<<endl;
for(int i = 0;i<mas.size();i++)
{
cout <<endl<<mas[i];
}
cout<<endl;
while (qw.size()) //пока очередь не пуста
{
cout <<endl<<mas[qw.front()]; //выводи елементы выборки
qw.pop(); //выталкиваем последний елеиент из очереди
}
cin.get();
return 0;
}
Eduard_P
То же, только с применением контейнера
и сортировкой значений по возрастанию (C++11)
//#include <cstdlib> #include <ctime>//для функции time() #include <iostream>//ввод вывод печати #include <vector>//для векторов #include <iterator>//ostream_iterator #include <algorithm>//для функции sort using namespace std; int main(int argc, char** argv) { srand(time(NULL)); vector <int>vecarray;//объявляем вектор (априоре динамич.массив) cout << "Enter size array: "; int n; cin >> n;//ввод количества элементов массива for (int i=0; i<n; i++)//заполнение массива vecarray.push_back(rand()%100); sort(vecarray.begin(), vecarray.end());//сортировка значений по возрастанию cout <<"array = "; //вывод на экран значений вектора copy(vecarray.begin(), vecarray.end(), ostream_iterator<int>(cout, " ")); cout << "\nRezult = "; //вывод на экран нечетных значений массива for ( int i=0; i<vecarray.size(); ++i ){ if(vecarray[i]%2 != 0) cout << vecarray[i]<<" ";} cout << "\n" ; return 0; }colt
#include "stdafx.h" #include "iostream" #include "windows.h" using namespace std; class Array1D { public: Array1D(short arraysize) { arr=new short[arraysize]; _length=arraysize; for (short i=0;i<arraysize;i++) arr[i]=rand()%100; } ~Array1D() {delete [] arr;} short at(short position) {return arr[position];} void at(short position, short value) {arr[position]=value;} short length() {return _length;} protected: short *arr, _length; }; bool isEven(short integer) //функция возвращает true, если число делится на 2 нацело и false если нет { if ((integer%2)==0) return true; else return false; } void runtime() { short arrsize; cout<<"Введите размер массива: "; cin>>arrsize; //вводим размер массива if (arrsize<1) { cout<<"Размер массива должен быть больше нуля\n"; } else { cout<<"Массив: "; Array1D random(arrsize); //конструируем массив из случайных чисел требуемого размера for (short i=0;i<arrsize;i++) cout<<random.at(i)<<" "; //выводим его cout<<"\nРезультат: "; for (short i=0;i<arrsize;i++) if (isEven(random.at(i))) cout<<random.at(i)<<" "; //выводим только чётные элементы cout<<endl; } } int _tmain(int argc, _TCHAR* argv[]) { SetConsoleCP(1251); //эти две функции вместе с заголовочным файлом windows.h SetConsoleOutputCP(1251); // и шрифтом командной строки Lucida Console обеспечивают корректный ввод и вывод кирилицы while (true) { system("CLS"); runtime(); system("PAUSE"); } return 0; }Anufree
#include <conio.h> #include <iostream> #include <random> #include <time.h> using std::cout; using std::cin; using std::endl; int main() { setlocale(LC_ALL, "Russian"); int *arr, size; cout << "Enter size array: "; cin >> size; srand(time(NULL)); arr = new int[size]; for (int i(0); i < size; i++) cout << (arr[i] = rand() % size + 1) << ' '; cout << endl; for (int i(0); i < size; i++) if (arr[i] & 1) cout << arr[i] << ' '; delete[]arr; _getch(); return 0; }