Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 268
#1

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

23.02.2016, 16:43. Просмотров 662. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как заполнить массив случайными числами с плавающей точкой? (C++):

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

Как заполнить трехмерный массив случайными числами - C++
Добрый день, товарищи! Подскажите как заполнить трёхмерный массив случайными числами имеется код: int ***arr = new int**; ...

Заполнить массив случайными числами от -50 до 50 - C++
Нужно заполнить массив числами от -50 до 50 .Написал такой код #include &quot;stdafx.h&quot; #include&lt;iostream&gt; int...

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

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

Заполнить одномерный массив X 10 случайными числами от -5 до 7 - C++
Вычислить (x1 + x2 + x3) * x2 + (x2 + x3 + x4) * x3 + ... + (x8 + x9 + x10) * x9

4
maxm
63 / 35 / 8
Регистрация: 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 / 0
Регистрация: 20.10.2013
Сообщений: 268
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
gru74ik
Модератор
Эксперт CЭксперт С++
4344 / 1920 / 206
Регистрация: 20.02.2013
Сообщений: 5,105
Записей в блоге: 22
23.02.2016, 20:55 #4
VitekSR, используйте новый <random> из C++11. Вот пример. Вот подробно разжёвано.
0
maxm
63 / 35 / 8
Регистрация: 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
Привет! Вот еще темы с ответами:

Заполнить массив случайными числами в диапазоне - C++
Помогите, пожалуйста, найти ошибку :( Нужно заполнить двумерный массив случайными простыми числами, которые могут повторяться. ...

Заполнить массив случайными не повторяющимися числами - C++
Здравствуйте! Подскажите пожалуйста, случайными числами заполнить как бы не проблема, но как сделать, что бы они не повторялись - вот это...

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

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


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

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

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