Пытаюсь выполнить задание:
Создать вещественный массив и преобразовать его таким образом, чтобы в первой его половине располагались элементы, модуль которых не превышает 1, потом все остальные.
Никак не могу сгенерировать значения - получаются либо меньше единицы, либо больше. Дошло до того, что начал делать "примитивно", как в коде ниже, без подобных конструкций:
(double)(rand()) / RAND_MAX * (max - min) + min
Проблема в том, что массив заполняется теперь 0 или 1, не знаю, что делать с заданием.
Прошу вашей помощи.
Код ниже:
#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include "time.h"
#include <iomanip>
using namespace std;
int main()
{
int N;
cout << "Enter matrix size: ";
cin >> N;
double *A = new double[N];
srand((unsigned)time(NULL));
for (int i = 0; i < N; i++) {
int A2 = rand() % 100 -50;
if (A2 / 2 == 0) {
A[i] = 1.0 + (double)(A2 / 100);
}
else {
A[i] = (double)(A2 / 100);
}
cout << setw(2) << A[i];
}
cout << endl;
system("pause");
return 0;
}
Не нужно создавать массив в куче, если потом не удаляете, условие поставлено не верное для инициализации отрезков массива и нужно убрать скобочки вокруг A2 / 100
иначе это целочисленный тип, значение которого равно нулю, так как А2 < 100
, а после этого вы преобразуете в тип double
...
int N;
cout << "Enter matrix size: ";
cin >> N;
double A[N];
srand((unsigned)time(NULL));
for (int i = 0; i < N; i++) {
int A2 = rand() % 100 -50;
if (i >= N / 2) {
A[i] = 1.0 + (double)A2 / 100;
}
else {
A[i] = (double)A2 / 100;
}
cout << setw(8) << A[i];
}
cout << endl;
Для ваших целей будет достаточно
rand()*a/RAND_MAX
где a
- число типа double
, равное там 2 или 3 - словом, чтоб генерировались числа от 0 до a
.
Если числа от double a
до double b
, то
rand()*(b-a)/RAND_MAX+a
Ваша проблема в том, что вы неверно применяетте
(double)(A2 / 100)
так что превращаете в double
результат целочисленного деления, а надо
double(A2) / 100
или того проще -
A2 / 100.
Программа работает, но в конце выдает эту ошибку:
Задача популярнаяПросто нужно сделать бинарное возведение в степень по модулю