Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
1

Составить программу, в которой сформировать из случайных чисел два массива

11.04.2018, 07:17. Показов 2365. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить программу, в которой сформировать из случайных чисел два массива А[1..10], B[1..10]. Сформировать массив С[1..10] , где элементы массива c[i]=a[i]+b[i].
Помогите решить задачку на DevCpp (C++).
С массивами хромаю...
Заранее спасибо за любую помощь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2018, 07:17
Ответы с готовыми решениями:

Составить программу по которой компьютер генерирует последовательность из 10 случайных чисел и подсчитать сумму четных чисел
2. Составить программу по которой компьютер генерирует последовательность из 10 случайных чисел и...

С использованием датчика случайных чисел сформировать два массива X и Y
С помощью датчика случайных чисел сформировать два массива X и Y размерностью 100 и 200 чисел в...

Составить программу, в которой с помощью генератора случайных чисел получены три числа
составить программу, в которой с помощью генератора случайных чисел получены три числа. Распечатать...

Составить программу формирования динамического массива А из N случайных чисел, сделать возможным его редактирование
1. Составить программу формирования динамического массива А из N случайных чисел, сделать возможным...

20
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
11.04.2018, 07:30 2
Bebnikov_Nikita, попробуй не проверял
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 <cstdlib>
#include <ctime>
#include <thread>
#include <chrono>
 
int GetRandomNumber(int f, int d)
{
    static std::size_t fake = (std::srand(
        static_cast<unsigned int>(std::time(nullptr) ) ), 0);
    return f + std::rand() % (d - f + 1);
}
 
void SetArray(int* a, std::size_t size)
{
    std::cout << "array filling..." << std::endl;
 
    for (size_t i = 0; i < size; ++i)
    {
        a[i] = GetRandomNumber(-50, 50);
        std::this_thread::sleep_for(std::chrono::seconds(1) );
    }
}
 
void ShowArray(int* a, std::size_t size)
{
    for (std::size_t i = 0; i < size; ++i)
        std::cout << a[i] << ' ';
}
 
int main()
{
    constexpr std::size_t size = 10;
 
    int a[size];
    int b[size];
    int c[size];
 
    SetArray(a, size);
    SetArray(b, size);
    
    ShowArray(a, size);
    ShowArray(b, size);
 
    for (std::size_t i = 0; i < size; ++i)
        c[i]= a[i] + b[i];
 
    ShowArray(c, size);
 
    return 0;
}
0
308 / 289 / 116
Регистрация: 23.01.2018
Сообщений: 933
11.04.2018, 08:00 3
Вот, работает почти правильно, только почему-то оба массива заполняются одинаковыми значениями.

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
#include <algorithm>
#include <array>
#include <functional>
#include <iostream>
#include <iterator>
#include <random>
 
using namespace std;
 
int main()
{
    mt19937 rng;
    rng.seed(random_device()());
    uniform_int_distribution<> dist(-50, 50);
    array<int, 10> a;
    generate_n(begin(a), 10, bind(dist, rng));
    copy(begin(a), end(a), ostream_iterator<int>(cout, " "));
    cout << endl;
    array<int, 10> b;
    generate_n(begin(b), 10, bind(dist, rng));
    copy(begin(b), end(b), ostream_iterator<int>(cout, " "));
    cout << endl;
    array<int, 10> c;
    for (int i = 0; i < 10; ++i) c[i] = a[i] + b[i];
    copy(begin(c), end(c), ostream_iterator<int>(cout, " "));
    cout << endl;
    return 0;
}
1
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
11.04.2018, 08:14 4
Вадим Тукаев, как пример
C++
1
2
3
std::mt19937 gen(time(nullptr));
    std::uniform_int_distribution<> dist(-10, 10);
    std::generate(v.begin(), v.end(), bind(dist, gen));
А лучше почитать в справочном руководстве по стандартной библиотеке Джосаттиса.
1
308 / 289 / 116
Регистрация: 23.01.2018
Сообщений: 933
11.04.2018, 08:28 5
Цитата Сообщение от мановар Посмотреть сообщение
Вадим Тукаев, как пример
Чем это принципиально отличается от моего кода?

Цитата Сообщение от мановар Посмотреть сообщение
А лучше почитать в справочном руководстве по стандартной библиотеке Джосаттиса.
Спасибо за наводку, только фамилия Джосьютис.
1
Модератор
Эксперт CЭксперт С++
5287 / 2374 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
11.04.2018, 08:55 6
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
только фамилия Джосьютис.
Вообще-то, Йосуттис
0
Вадим Тукаев
11.04.2018, 10:32
  #7

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Вообще-то, Йосуттис
А может, и Джосаттис... :( https://www.ozon.ru/context/detail/id/27978215/

0
sourcerer
11.04.2018, 11:16
  #8

Не по теме:

Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
А может, и Джосаттис...
Не может. На Озоне - ошибка переводчика. А я Вам видео скинул, где Николаи сам говорит "Май нэйм из Николаи Йосуттис". Уже не раз обсуждалось. Йосуттис уже задолбался говорить, что он Йосуттис, а не "Джосаттис" и не "Джосьюттис".

0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
11.04.2018, 11:20  [ТС] 9
Оу, ничего себе кодики... я думал они как-то упрощенне выглядят, ну по крайне мере таких еще не писал.
Но все равно спасибо.
0
308 / 289 / 116
Регистрация: 23.01.2018
Сообщений: 933
11.04.2018, 11:34 10
Цитата Сообщение от gru74ik Посмотреть сообщение
Не может.
Спасибо. Но тут важно, что вбивать в гугл. Его книги продаются либо под фамилией Джосьютис, либо Джосаттис (новые).

Цитата Сообщение от Bebnikov_Nikita Посмотреть сообщение
Оу, ничего себе кодики... я думал они как-то упрощенне выглядят, ну по крайне мере таких еще не писал.
Может, вот так будет попроще и покороче.

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
#include <iostream>
#include <iterator>
#include <random>
#include <vector>
 
using namespace std;
 
int main()
{
    mt19937 rng;
    rng.seed(random_device()());
    uniform_int_distribution<> dist(-50, 50);
    vector<int> v[3];
    int i;
    for (i = 0; i < 20; ++i) {
        v[0].push_back(dist(rng));
        v[1].push_back(dist(rng));
        v[2].push_back(v[0].back() + v[1].back());
    }
    for (i = 0; i < 3; ++i) {
        copy(begin(v[i]), end(v[i]), ostream_iterator<int>(cout, "\t"));
        cout << endl;
    }
    return 0;
}
1
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
11.04.2018, 12:30 11
Цитата Сообщение от _stanislav Посмотреть сообщение
C++
1
static std::size_t fake = (std::srand( static_cast<unsigned int>(std::time(nullptr) ) ), 0);
зачем вот это?
чем начало main не устраивает?
Цитата Сообщение от _stanislav Посмотреть сообщение
C++
1
std::this_thread::sleep_for(std::chrono::seconds(1) );
а это зачем?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
11.04.2018, 12:33 12
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
Чем это принципиально отличается от моего кода?
Да ничем, не то скопировал второпях. По ходу проблема в bind(dist, gen). Видимо при его вызове во второй раз генератор имеет такое же начальное состояние как и при вызове в первый (это я так думаю, но могу ошибаться). Если немного подправить
C++
1
generate_n(begin(a), 10, [&dist, &rng] {return dist(rng); });
то все работает как надо.
1
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
11.04.2018, 12:35 13
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
почему-то оба массива заполняются одинаковыми значениями.
потому что std::bind копирует rng, надо так передавать: std::bind(dist, std::ref(rng));
2
Модератор
Эксперт CЭксперт С++
5287 / 2374 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
11.04.2018, 12:37 14
Цитата Сообщение от мановар Посмотреть сообщение
C++
1
[&dist, &rng] {return dist(rng)};
Емнип, можно просто амперсанд указать в квадратных скобках, если все захватываемые переменные захватываются по ссылке:
C++
1
[&] {return dist(rng)};
1
Manowar
11.04.2018, 12:43
  #15

Не по теме:

GbaLog-, gru74ik, с меня плюсы, как только блокаду снимут. :)

0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
11.04.2018, 21:28 16
Лучший ответ Сообщение было отмечено Bebnikov_Nikita как решение

Решение

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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    const size_t n = 10;
    double a[n], b[n], c[n];
    
    cout <<"Matrix a:\n";
    for (size_t i = 0; i < n; i++)
    { 
    a[i]=rand()%9 + 1;  
    cout <<a[i]<<" ";       
    }
    cout << endl;
    
    cout <<"Matrix b:\n";
    for (size_t i = 0; i < n; i++)
    { 
    b[i]=rand()%9 + 1;  
    cout <<b[i]<<" ";       
    }
    cout << endl;
    
    cout <<"Matrix c:\n";
    for (size_t i = 0; i < n; i++)
    { 
    c[i]=a[i]+b[i]; 
    cout <<c[i]<<" ";       
    }    
    cout << endl;
system("pause");
return 0;
}
0
308 / 289 / 116
Регистрация: 23.01.2018
Сообщений: 933
12.04.2018, 09:01 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <random>
 
using namespace std;
 
int main()
{
    mt19937 rng;
    rng.seed(random_device()());
    uniform_int_distribution<> dist(-5, 5);
    vector<int> v(20);
    generate(begin(v), end(v), bind(dist, ref(rng)));
    copy(cbegin(v), cend(v), ostream_iterator<int>(cout, " "));
    cout << '\n' << accumulate(cbegin(v), find(cbegin(v), cend(v), 0), 0) << endl;
    return 0;
}
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
12.04.2018, 09:54 18
Вадим Тукаев, это, наверное, с какого то другого задания. Типа: посчитать сумму элементов массива до первого 0. Единственное что бы добавил это проверку на нахождение 0. Может ведь и не сгенерировать.
0
308 / 289 / 116
Регистрация: 23.01.2018
Сообщений: 933
12.04.2018, 10:13 19
Да, не туда запостилось. А проверка не нужна, find выдаст v.end() и посчитается сумма всего массива.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
12.04.2018, 10:19 20
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
посчитается сумма всего массива.
Смотря конечно как условие задания составлено. Если до первого нуля, то считаю что надо.
0
12.04.2018, 10:19
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2018, 10:19
Помогаю со студенческими работами здесь

Составить программу формирования динамического массива А из N случайных чисел, сделать возможным его редактирование
Составить программу формирования динамического массива А из N случайных чисел, сделать возможным...

Составить программу формирования массива А из N случайных чисел, сделать возможным его редактирование, вычислить разност
Может, кто знает как сделать? Ибо я не понял ни черта, кроме того, что это нужно сделать через...

создать два массива из 10 целых случайных чисел из отрезка [1;9] и третий массив из 10 действительных чисел
Создайте два массива из 10 целых случайных чисел из отрезка и третий массив из 10 действительных...

Даны два одномерных массива целых чисел. Сформировать из них два новых по правилу
Помогите пожалуйста с задачей:help: :) Даны два одномерных массива целых чисел (массив А,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
Что такое паттерны программировани­я и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
Что такое javascript:void­­(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru