С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
VitekSR
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 269
1

Как заполнить массив случайными числами с плавающей точкой?

23.02.2016, 16:43. Просмотров 918. Ответов 4
Метки нет (Все метки)

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
136
137
138
139
140
141
#include <conio.h>
#include <iostream>
#include <ctime>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
int main ()
{      
    setlocale(LC_ALL, "Russian");
    int a, b, znach;
   int n = 50, m = 3;
       int i, j;
       double u1,u2,u3;
       double h;
       double x,h1=0,u11,u12,u13,u14,u15,u16,u17,u18,u19,a11,a22,a33,detx,dety,detz,aa,bb,cc,det;
    //int sum;
    double U[100][100];
    /*cout<<"Enter n: ";
    cin>>n;
    cout<<"\nEnter m: ";
    cin>>m;*/
    int **mas = new int *[n];
 
for (int i = 0; i < n; i++) {
  mas[i] = new int [m];
}
 
    cout << "S\t" << "U1\t" << "U2\t" << "U3\t" << "X\t" << endl;
 
    for (i=0; i<n; ++i)
    {
        cout << i <<"\t";
        for (j=0; j<m; ++j)
        {
           U[i][j]=double(rand()%4);
            cout <<U[i][j]<<"\t";
        }
        cout<<endl;
    }
 
    cout << "Выберите строку(0-49): ";
    cin >> a;
    cout << "Вы выбрали строку: " << a << endl;
    cout << "Вывести введенную строку? 1-YES/2-NO: ";
    znach=U[a][0];
    cin >> b;
    switch (b)
    {
    case 1:
        {
            for ( j=0;j<m;j++)
            {
                znach=U[a][j];
                cout << znach << "\t";
            }
            break;
        }
    default:
        {
        cout << "Хорошо" << endl;
        break;
        }
    }
    
                u1 = U[a][0];
                u2 = U[a][1];
                u3 = U[a][2];
                cout << endl;
                cout << "u1: " << u1 << endl;
                cout << "u2: " << u2 << endl;
                cout << "u3: " << u3 << endl;
 
                cout << "Выберите погрешность(0%,5%,10%): ";
                cin >> h1;
                
                switch (h1)
    {
    case 1:
        {
            h = 0;
            break;
        }
    case 2:
        {
            h = 0.5;
            break;
        }
    case 3:
        {
            h = 0.01;
            break;
        }
    default:
        {
        cout << "Вы не выбрали погрешность!" << endl;
        break;
        }
    }
                x = 2*u1+3*(u2*u2)+0.5*u3+h;
                cout << "X: " << x << endl;
 
                u11 = u1*u1; u12 = u1*u2; u13 = u1*u3;  a11 = u1*x;
                u14 = u1*u2; u15 = u2*u2; u16 = u3*u2;  a22 = u2*x;
                u17 = u1*u3; u18 = u2*u3; u19 = u3*u3;  a33 = u3*x;
 
                cout << endl 
                    << "\t" << u11 << "\t" << u12 << "\t" << u13 << "\t\t" << a11 << endl
                    << "\t" << u14 << "\t" << u15 << "\t" << u16 << "\t\t" << a22 << endl 
                    << "\t" << u17 << "\t" << u18 << "\t" << u19 << "\t\t" << a33 << endl;
 
                det = u11*u15*u19+u12*u16*u17+u13*u14*u18-u13*u15*u17-u12*u14*u19-u11*u16*u18;
                cout << " "<< det;
                if (det == 0)
                {
                    cout << "Детерминант равен нулю, решения нет!" << endl;
                }
                else
                {
                    detx = a11*u15*u19+u12*u16*a33+u13*a22*u18-u13*u15*a33-u12*a22*u19-a11*u16*u18;
                    dety = u11*a22*u19+a11*u16*u17+u13*u14*a33-u13*a22*u17-a11*u14*u19-u11*u16*a33;
                    detz = u11*u15*a33+u12*a22*u17+a11*u14*u18-a11*u15*u17-u12*u14*a33-u11*a22*u18;
                    aa = detx/det;
                    bb = dety/det;
                    cc = detz/det;
                }
 
                
 
    for (int i = 0; i < n; i++) 
    {
      delete []mas[i];
    }
     delete []mas;
    
  //  print(U, n, m);
    
    system("pause");
    return 0;
}
Никак не получается переделать тип данных, массив задается рандомно только в целочисленном типе от нуля до трех. Как сделать, чтобы рандомно задавались числа, допустим, 0.553, 1.441, 2.991? Ну и разумеется дальнейшая работа с этими же числами происходила
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2016, 16:43
Ответы с готовыми решениями:

Как заполнить трехмерный массив случайными числами
Добрый день, товарищи! Подскажите как заполнить трёхмерный массив случайными...

Как заполнить массив char случайными числами?
Доброе утро! Пытаюсь заполнить массив CHAR случайными числами! пытался через...

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

Заполнить массив случайными числами
Задайте с помощью генератора случайных чисел массив в диапазоне от 1 до 100....

Заполнить массив случайными числами от -50 до 50
Нужно заполнить массив числами от -50 до 50 .Написал такой код #include...

4
maxm
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
23.02.2016, 16:55 2
C++
1
double x = rand() / 10e3;
3 - Получишь с тремя цифрами после запятой

Добавлено через 1 минуту
Или вот, на stackoverlow загуглил:
C++
1
2
3
4
5
double fRand(double fMin, double fMax)
{
    double f = (double)rand() / RAND_MAX;
    return fMin + f * (fMax - fMin);
}
0
VitekSR
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 269
23.02.2016, 20:16  [ТС] 3
Цитата Сообщение от maxm Посмотреть сообщение
3 - Получишь с тремя цифрами после запятой
у меня массив, а не просто переменная, так что у меня как то по другому надо, но я не понимаю как

Добавлено через 2 часа 39 минут
C++
1
2
 U[i][j]=(rand()%4)/(double)(rand()%4);
            cout << setprecision(4) <<U[i][j]<<"\t";
попробовал сделать вот так, тоже не получается, помогите!
0
sourcerer
Модератор
Эксперт CЭксперт С++
4875 / 2061 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
23.02.2016, 20:55 4
VitekSR, используйте новый <random> из C++11. Вот пример. Вот подробно разжёвано.
0
maxm
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
25.02.2016, 21:59 5
Цитата Сообщение от VitekSR Посмотреть сообщение
у меня массив, а не просто переменная
Так а в чем проблема то ?
0
25.02.2016, 21:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 21:59

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

Заполнить случайными числами 5 значный массив
От программы требуется заполнить случайными числами 5 значный массив, так,...

Заполнить двумерный массив случайными числами
Заполнить двумерный массив с++ случайными числами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru