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

Генератор случайных чисел. Как прикрепить?

06.03.2015, 16:34. Просмотров 891. Ответов 15
Метки нет (Все метки)

Как к генератору случайных чисел прикрепить "Введите размер массива"?
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
#include <iostream>
#include <cstdlib>
#include <ctime> 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    
    const int n=10;
    int i;
    int a[n];
    cout << "massiv" << endl<< endl;
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =a[0]; max = a[0];
    for ( i=0;i<n; ++i)
    {
        if ( min > a[i])  {min = a[i];}
        if (max <a[i]) {max =a[i];}
    }
    cout << "min = " << min;
    cout << " max = " << max;
 
    
    cout << endl<< endl;
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2015, 16:34
Ответы с готовыми решениями:

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

Как сделать генератор случайных чисел?
Привет всем. Возник очередной вопрос за это утро. Как сделать генератор...

Как сделать генератор случайных чисел?
как правильно сделать генератор случайных чисел?? Приведите пожалуйста примеры??

Как создать генератор случайных чисел
Здравствуйте!Я работаю в dev c++ 4.9.9.2 киньте готовый исходник.Зарание...

Как использовать генератор случайных чисел?
Помогите, пожалуйста, разобраться и исправить программу .Как в этой программе...

15
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
06.03.2015, 16:40 2
Цитата Сообщение от gleb414 Посмотреть сообщение
Как к генератору случайных чисел прикрепить "Введите размер массива"?[TABLE]#include <iostream>
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
#include <iostream>
#include <cstdlib>
#include <ctime> 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    
    const int n=10;
    int i;
    int a[n];
    cout << "massiv" << endl<< endl;
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =a[0]; max = a[0];
    for ( i=0;i<n; ++i)
    {
        if ( min > a[i])  {min = a[i];}
        if (max <a[i]) {max =a[i];}
    }
    cout << "min = " << min;
    cout << " max = " << max;
 
    
    cout << endl<< endl;
    system("pause");
    return 0;
}
Тебе ещё нужно добавить это, иначе у тебя будут генерироваться одни и те же числа
C++
1
srand(time(NULL));
И не совсем понятен вопрос. Ты хочешь узнать размер массива, а потом его создать?
Если так используй конструкцию:
C++
1
2
3
int* a=new int [n];
 
delete [] a;
Последняя строчка - освобождение динамической памяти.
1
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
06.03.2015, 17:00  [ТС] 3
Да, это я пропустил. Спасибо.
Мне надо ввести размер массива по запросу и чтобы он сгенерировался.

Добавлено через 6 минут
И куда это прикрепить?

Добавлено через 10 секунд
И куда это прикрепить?

Добавлено через 1 минуту
C++
1
2
3
int* a=new int [n];
 
delete [] a;
Это понятно что прикрепить , но не пашет.

Добавлено через 1 минуту
Выдает VS c++ 2010/
error C2065: n: необъявленный идентификатор
error C2372: a: переопределение; различные типы косвенного обращения
cpp(9): см. объявление "a"

Добавлено через 8 минут
Хотел бы как то так.
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
#include <iostream>
#include <cstdlib>
#include <ctime> 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    /*int* a=new int [n];
    const int n=10;*/
    int i;
    int a[n];
    cout << "Введите количество элементов"<< endl;
    cin >> n;
    cout << "massiv" << endl<< endl;
    srand (time(NULL));
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =a[0]; max = a[0];
    for ( i=0;i<n; ++i)
    {
        if ( min > a[i])  {min = a[i];}
        if (max <a[i]) {max =a[i];}
    }
    cout << "min = " << min;
    cout << " max = " << max;
 
    
    cout << endl<< endl;
    //delete [] a;
    system("pause");
    return 0;
}
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
06.03.2015, 17:05 4
Лучший ответ Сообщение было отмечено gleb414 как решение

Решение

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
#include <iostream> 
#include <random>
#include <time.h>
 
using namespace std;
 
int main()
{   
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    int i,n;
    cout << "Введите количество элементов"<< endl;
    cin >> n;
    int* a=new int [n];
    cout << "massiv" << endl<< endl;
  
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =a[0]; max = a[0];
    for ( i=0;i<n; ++i)
    {
        if ( min > a[i])  {min = a[i];}
        if (max <a[i]) {max =a[i];}
    }
    cout << "min = " << min;
    cout << " max = " << max;
 
    cout << endl<< endl;
    delete [] a;
    system("pause");
    return 0;
}
2
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
06.03.2015, 17:15  [ТС] 5
Спасибо большое от начинающих.
Работает

Добавлено через 17 секунд
Спасибо большое от начинающих.
Работает
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
06.03.2015, 17:19 6
Цитата Сообщение от gleb414 Посмотреть сообщение
Спасибо большое от начинающих.
Работает

Добавлено через 17 секунд
Спасибо большое от начинающих.
Работает
Всегда пожалуйста. У Вас что-то сообщения по несколько раз отправляются. Инет тормозит что ли.
0
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
06.03.2015, 17:49  [ТС] 7
А к этой программе можно добавить .
сумму элементов между первым и вторым положительными.
преобразовать массив первая половина нечетные, вторая-четные.
Пожалуйста.

Добавлено через 13 минут
А к этой программе можно добавить .
сумму элементов между первым и вторым положительными по модулю. Применяется вроде для int- abs.
преобразовать массив первая половина нечетные, вторая-четные.
Пожалуйста.
C++
1
2
3
4
5
for  (i=min+1; i<<max:i++)
{
s=a[i]+s
}
cout<< "summa= " <<s;
0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
06.03.2015, 18:08 8
C++
1
2
3
4
5
6
int n;
cout<<"Введите размер массива:";
cin>n;
int* a=new int[n];
....
delete[] a;
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
06.03.2015, 18:17 9
Цитата Сообщение от gleb414 Посмотреть сообщение
преобразовать массив первая половина нечетные, вторая-четные.
Добавьте это в конец до освобождения динамической памяти.
C++
1
2
3
4
5
6
7
8
9
10
string s("");
    for(i=0;i<n;i++)
        if(a[i]%2!=0) s+=a[i];
    for(i=0;i<n;i++)
        if(a[i]%2==0) s+=a[i];
    for(i=0;i<s.length();i++)
        a[i]=s[i];
    for(i=0;i<n;i++)
        cout << a[i] << " ";
    cout << endl;
0
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
06.03.2015, 18:34  [ТС] 10
Не то.
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
#include <iostream> 
#include <random>
#include <time.h>
 
using namespace std;
 
int main()
{   
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    int i,n;
    cout << "Введите количество элементов"<< endl;
    cin >> n;
    int* a=new int [n];
    cout << "massiv" << endl<< endl;
  
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =abs(a[0]); max =abs( a[0]);
    for ( i=0;i<n; ++i)
    {
        if ( min > abs(a[i]))  {min =abs( a[i]);
        }
        if (max <abs(a[i])) {max =abs(a[i]);
        }
    }
    cout << "min = " << min;
    cout << " max = " << max;
 
 
    cout << endl<< endl;
    string s("");
    for(i=0;i<n;i++)
        if(a[i]%2!=0) s+=a[i];
    for(i=0;i<n;i++)
        if(a[i]%2==0) s+=a[i];
    for(i=0;i<s.length();i++)
        a[i]=s[i];
    for(i=0;i<n;i++)
        cout << a[i] << " ";
    cout << endl;
    delete [] a;
    system("pause");
    return 0;
}
Результат не тот. Сортирует неверно.
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
06.03.2015, 18:50 11
Цитата Сообщение от gleb414 Посмотреть сообщение
Не то.
Результат не тот. Сортирует неверно.
Почему? У меня всё работает.
Генератор случайных чисел. Как прикрепить?

Только вот 0 Вы не сказали куда пристроить. Так он вместе с чётными будет стоять.
1
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
07.03.2015, 12:11  [ТС] 12
Вы не поняли.
Например
-12 -9 -6 -4 -2 2 5 7 9 14
Как то так.

Добавлено через 35 минут
С этим разобрался.
Делается методом сортировки.
А вот как найти сумму элементов массива между первым и вторым положительными?
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
07.03.2015, 15:39 13
Лучший ответ Сообщение было отмечено gleb414 как решение

Решение

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
#include <iostream> 
#include <random>
#include <time.h>
 
using namespace std;
 
int main()
{   
    srand(time(NULL));
    int i,n;
    cout << "Enter number of items: ";
    cin >> n;
    int* a=new int [n];
    cout << "Array" << endl<< endl;
  
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
        
    }
    cout << endl << endl;;
    int min,max;
    min =abs(a[0]); max =abs( a[0]);
    for ( i=0;i<n; ++i)
    {
        if ( min > abs(a[i]))  {min =abs( a[i]);
        }
        if (max <abs(a[i])) {max =abs(a[i]);
        }
    }
    cout << "min = " << min;
    cout << " max = " << max;
    cout << endl<< endl;
 
     int pos1(-1),pos2(-1);
    for (i=0;i<n;i++)
    {
        if (a[i]>0 ) 
        {
            if(pos1!=(-1)) pos2=i;
            else pos1 = i;
        }
        if(pos1!=(-1) && pos2!=(-1)) break; 
    }
    int sum = 0;
    for (i=pos1;i<=pos2;i++)
        sum+=abs(a[i]);
    cout << "Summa between fisrt positiv "<< a[pos1] <<" and second positiv "<< a[pos2] <<" : " << sum << endl;    
    delete [] a;
    system("pause");
    return 0;
}
Сумма считается, включая первое и второе положительные числа
2
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
07.03.2015, 16:22  [ТС] 14
Прокомментируйте пожалуйста вот этот кусок кода
C++
1
2
if ( min > abs(a[i]))  {min =abs( a[i]);
        }
фигурные скобки для чего?
0
alexa45
6 / 6 / 3
Регистрация: 03.03.2015
Сообщений: 6
07.03.2015, 16:30 15
Цитата Сообщение от gleb414 Посмотреть сообщение
Прокомментируйте пожалуйста вот этот кусок кода
C++
1
2
if ( min > abs(a[i]))  {min =abs( a[i]);
        }
фигурные скобки для чего?
В фигурных скобках заключено тело условного оператора, но здесь тело состоит лишь из одного оператора, поэтому можно обойтись без них.
1
gleb414
0 / 0 / 2
Регистрация: 05.01.2015
Сообщений: 73
07.03.2015, 17:26  [ТС] 16
Все, спасибо разобрался.

Добавлено через 12 минут
Вот полное условие и решение.

В одномерном массиве, состоящем из n целых элементов, вычислить:
1. минимальный и максимальный по модулю элемент массива;
2. сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив так, чтобы в первой его половине располагались элементы, стоящие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях.

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
    
#include <iomanip>
#include <iostream> 
#include <random>
#include <ctime>
 
using namespace std;
 
int main()
{  
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    int i,n;
    cout << "Введите количество элементов: ";
    cin >> n;
    int* a=new int [n];
    cout << "массив" << endl<< endl;
  
    for (i=0; i<n; ++i)
    {
        a[i] = rand() %200-100;
        cout << a[i]<< "  " ;
    }
    cout << endl << endl;
 
    // Максимальное и минимальное
    //________________________________________________________________________________________
 
    int min,max;
    min =abs(a[0]); max =abs( a[0]);
    for ( i=0;i<n; ++i)
    {
        if ( min > abs(a[i])) 
        {
            min =abs( a[i]);
        }
        if (max <abs(a[i])) 
        {
            max =abs(a[i]);
        }
    }
    cout << "мин = " << min;
    cout << " макс = " << max;
    cout << endl<< endl;
    
    // Сумма
    //___________________________________________________________________________________________
 
     int pos1(-1),pos2(-1);
    for (i=0;i<n;i++)
    {
        if (a[i]>0 ) 
        {
            if(pos1!=(-1)) pos2=i;
            else pos1 = i;
        }
        if(pos1!=(-1) && pos2!=(-1)) break; 
    }
    int sum = 0;
    for (i=pos1+1;i<=pos2-1;i++)
        sum+=a[i];
    cout << "Сумма между первым положительным "<< a[pos1] <<" и вторым положительным "<< a[pos2] <<" : " << sum << endl << endl; 
 
    // Сортировка
    //___________________________________________________________________________________________
 
    for (i = 0; i < n; i++)  // по убыванию
       for (int j = i+1; j < n; j++)
        if (a[i] > a[j]) // Знак <> сортирует по возраст или убыв
      {
         int buf = a[i];
         a[i] = a[j];
         a[j] = buf;
      }
      cout<< endl;
      cout <<" Массив после сортировки "  << endl;
    cout << endl << endl;
    for (i = 0; i < n; i++)
       cout << " " << a[i] ;
    cout << endl << endl;
 
    delete [] a;
    system("pause");
    return 0;
}
0
07.03.2015, 17:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2015, 17:26

Как создать генератор случайных чисел ?
Доброго всем времени суток. У меня возник вопрос, как создать генератор...

Как сделать быстрый генератор случайных чисел?
Доброго времени суток. Нашёл в сети пример, но меня не устраивает, что...

Генератор псевдо-случайных чисел, как хэш-функция
Анализируя генератор псевдослучайных чисел Я пришел к выводу, что (Учитывая...


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

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

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