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

Массив размерностью 100 заполнить случайными числами

22.10.2013, 13:52. Показов 2443. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с заданием,кому не трудно.

Массив размерностью 100 заполнить случайными числами, лежащими в диапазоне
от –10 до 10. Во всех последовательностях положительных чисел заменить значения элементов
с максимальным и минимальным значением на среднее для этой последовательности

Буду благодарен)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2013, 13:52
Ответы с готовыми решениями:

Массив размерностью 30 заполнить случайными числами, лежащими в диапозоне от -100 до 100
Массив размерностью 30 заполнить случайными числами, лежащими в диапозоне от -100 до 100. Заменить все элементы с отрицательными значениями...

Заполнить двумерный массив случайными числами от 10 до 100
Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки,...

Заполнить массив случайными числами, лежащими в интервале от 0 до 100
Доброе время суток уважаемые форумщики. Помогите решить задачу по С++. Нужно заполнить массивы случайными числами, лежащими в интервале...

4
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
22.10.2013, 15:32
С виду вроде среднее задание для студентов, но при решении наступил на не мало подводных камней..
Поэтому получился некомпактный код. В принципе можно переделать покомпактнее, но думаю и так сойдёт:
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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <ctime>
 
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
    int const n=100;
    int mas[n],i,j,max=0,min=10,sred=0,istart=0,ifinish=0;
    bool y=true;
    for (i=0;i<n;i++)
    {
        mas[i]=rand() % 21 - 10;
    }
    cout<<"Рандомный массив:"<<endl;
    for (i=0;i<n;i++)
    {
        cout<<mas[i]<<" ";
        if((i+1)%10==0)
        {
            cout<<endl;
        }
    }
    for (i=0;i<n;i++)
    {
        if(mas[i]>0 && y)
        {
            istart=i;
            y=false;
        }
        if(mas[i]<=0 && !y)
        {
            ifinish=i;y=true;
            if(ifinish-istart>1)
            {
                max=mas[istart];min=mas[istart];
                for(j=istart;j<ifinish;j++)
                {
                    sred+=mas[j];
                    if(min>mas[j])
                    {
                        min=mas[j];
                    }
                    if(max<mas[j])
                    {
                        max=mas[j];
                    }
                }
                sred=sred/(ifinish-istart);
                for(j=istart;j<ifinish;j++)
                {
                    if(mas[j]==max || mas[j]==min)
                    {
                        mas[j]=sred;
                    }
                }
                sred=0;
            }
            ifinish=0;istart=0;
        }
        if (mas[i]>0 && i==n-1 && !y)
        {
            ifinish=i;
                max=mas[istart];min=mas[istart];
                for(j=istart;j<=ifinish;j++)
                {
                    sred+=mas[j];
                    if(min>mas[j])
                    {
                        min=mas[j];
                    }
                    if(max<mas[j])
                    {
                        max=mas[j];
                    }
                }
                sred=sred/((ifinish+1)-istart);
                for(j=istart;j<=ifinish;j++)
                {
                    if(mas[j]==max || mas[j]==min)
                    {
                        mas[j]=sred;
                    }
                }
                sred=0;
        }
    }
    cout<<"\nПреобразованный массив:"<<endl;
    for (i=0;i<n;i++)
    {
        cout<<mas[i]<<" ";
        if((i+1)%10==0)
        {
            cout<<endl;
        }
    }
    system("PAUSE > void");
    return 0;
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.10.2013, 16:16
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
#include <random>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
template<typename It, typename Cmp>
std::pair<It, It> find_range(It first, It last, Cmp comp)
{
   if (first == last)
   {
      return std::make_pair(last, last);
   }
   It range_start = last, range_end = last;
   while (first != last)
   {
      if (comp(*first))
      {
         if (range_start == last)
         {
            range_start = first;
         }
      }
      else
      {
         if (range_start != last)
         {
            range_end = first;
            break;
         }
      }
      ++first;
   }
   return std::make_pair(range_start, range_end);
}
 
int main()
{
   const size_t size = 100;
   std::mt19937 gen(time(0));
   std::uniform_int_distribution<> distr(-10, 10);
   std::vector<int> v(size);
   std::generate(v.begin(), v.end(), [&distr, &gen]() { return distr(gen); });
   std::cout << "generated: ";
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   auto lambda = [](int val) { return val > 0; };
   auto range = find_range(v.begin(), v.end(), lambda);
   while (range.first != v.end())
   {
      auto average = std::accumulate(range.first, range.second, 0) / std::distance(range.first, range.second);
      auto minmax = std::minmax_element(range.first, range.second);
      std::replace_if(range.first, range.second, [&minmax](int val)
      {
         return val == *minmax.first || val == *minmax.second;
      }, average);
      range = find_range(range.second, v.end(), lambda);
   }
   std::cout << "after replace vector is: ";
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.10.2013, 17:11
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <random>
#include <vector>
#include <numeric>
 
int main()
{
    typedef std::vector<int> v_int;
    typedef std::vector<int>::iterator v_it;
    typedef std::ostream_iterator<int> output_int;
 
    const size_t N = 100;
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid(-10, 10);
    v_int v(N);
 
    auto print_v = [](const v_int& p_vec)
    {
        std::copy(std::begin(p_vec), std::end(p_vec), output_int(std::cout, " "));
        std::cout << std::endl;
    };
    auto findPos = [](v_it begin, v_it end)
    {
        return std::find_if(begin, end, [](const v_it::value_type x) {return x > 0; });
    };
    auto findNotPos = [](v_it begin, v_it end)
    {
        return std::find_if(begin, end, [](const v_it::value_type x) {return x <= 0; });
    };
 
    std::generate(std::begin(v), std::end(v), [&uid, &gen] { return uid(gen); });
    print_v(v);
 
    v_it beg = findPos(v.begin(), v.end()), end = findNotPos(beg, v.end());
    while (beg != std::end(v))
    {
        if (beg + 1 != end)
        {
            v_it::value_type sum = std::accumulate(beg, end, 0);
            v_it::value_type ave = sum / (end - beg);
            auto p = std::minmax_element(beg, end);
            *p.first  = ave;
            *p.second = ave;
        }
 
        beg = findPos(end, v.end());
        end = findNotPos(beg, v.end());
    }
 
    std::cout << "\nResult:\n";
    print_v(v);
}
1
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 5
24.10.2013, 12:48  [ТС]
Спасибо огромное)
Очень выручили)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.10.2013, 12:48
Помогаю со студенческими работами здесь

Заполнить массив из 100 элементов случайными числами от 0 до 99 (что не так в коде?)
Задание: Заполнить массив из 100 элементов случайными числами от 0 до 99. Вывести его через указатель. Проверьте, что здесь не так? ...

Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы
Заполнить массив случайными числами в интервале и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а...

заполнить функцию случайными числами от 0 до 100, конец записи 0
заполнить функцию случайными числами от 0 до 100, конец записи 0. Найти максимальное значение, попав в файл (mах) и записать его значение в...

Матрицы: заполнить случайными числами от 0 до 100, найти среднее значение выше главной и обратной диагонали
Дана квадратная матрица целых чисел размером N&lt;=12. Заполнить матрицу случайными числами от 0 до 100 Найти среднее значение выше...

Заполнить массив случайными числами
Задается количество элементов массива не более 100. Программа должна запросить столько чисел у пользователя. Элементами массива будут целые...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru