Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/47: Рейтинг темы: голосов - 47, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 16
1

Переписать из одного массива в другой все элементы, значения которых больше -1.8 и меньше 2.7

23.10.2014, 17:06. Просмотров 8576. Ответов 7
Метки нет (Все метки)

Сформировать вещественный массив A[15],элементами которого являются случайные числа из диапазона [-2;3].Переслать из него в массив A2 все элементы , значения которых больше -1.8 и меньше 2.7
Помогите написать программу с комментариями если можно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2014, 17:06
Ответы с готовыми решениями:

Из одного массива в другой переписать элементы, модуль которых меньше среднего значения
Помогите пожалуйста!=) Из массива а(100) в массив b(100) переписать элементы модулькоторых...

Все элементы массива, значения которых на 50% меньше среднего или на 50% больше среднего значения, заменить нулем
Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение. После этого...

Из одного массива переписать в другой все пары элементов, один из которых ноль, а другой-нечетный
из одномерного массива переписать в другой все пары элементов, один из которых ноль, а...

Переписать из исходного массива все элементы больше 5 в 1 массив, а все остальные в другой.
Не могу написать программу по условию: Переписать из исходного массива все элементы больше 5 в 1...

7
Guardian of Asgaard
376 / 318 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
23.10.2014, 18:25 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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main() {
    const int size = 15;
    int size2 = 0;
    float A[size];
    float A2[size]; //создаем новый массив размером, как и старый;
    
    //генерируем числа, записываем их в массив и одновременно
    //отсеиваем нужные по условию и заполняем ими новый массив:
    srand(time(NULL));
    for ( int i = 0; i < size; i++ ) {
        A[i] = rand() % 501-200;
        A[i] /= 100;
        if ( A[i] > -1.8 && A[i] < 2.7 ) {
            A2[size2] = A[i];
            size2 += 1; //считаем кол-во элементов записанных в новый массив;
        }
    }
    //выводим на экран элементы массива А:
    for ( int i = 0; i < size; i++ ) {
        cout << A[i] << " ";
    }
    cout << endl;
    //выводим на экран элементы нового массива А2 до размера нашего "счётчика":
    for ( int i = 0; i < size2; i++ ) {
        cout << A2[i] << " ";
    }
    cout << endl;
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 16
03.11.2014, 17:10  [ТС] 3
не совсем понял эту программу , в консоль выводит два одинаковых массива . А что означает эта строчка A[i] = rand() % 501-200; ?
0
Guardian of Asgaard
376 / 318 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
03.11.2014, 23:23 4
Цитата Сообщение от Ghyt Посмотреть сообщение
не совсем понял эту программу , в консоль выводит два одинаковых массива . А что означает эта строчка A[i] = rand() % 501-200; ?
1) Пересылает из первого массива А в массив A2 все элементы , значения которых больше -1.8 и меньше 2.7.
2) Строча означает (там еще ее продолжение A[i] /= 100 генерация случайных элементов массива от -2 до 3.
1
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 16
05.11.2014, 17:36  [ТС] 5
а почему именно 501-200 ?
0
Guardian of Asgaard
376 / 318 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
07.11.2014, 11:42 6
Цитата Сообщение от Ghyt Посмотреть сообщение
а почему именно 501-200 ?
Чтоб было более понятней:
Первая часть (501) равна сумме того "максимума", который тебе нужен (3) и модулю "минимума" (|-2|), но так как отсчёт положительных чисел начинается с 0, то нам всегда нужно добавлять ещё единицу. Итого
Код
3+|-2|+1 => 3+2+1 = 6;
Вторую часть мы записываем так, как есть (-2). Поэтому общий вид будет
Код
random() % 6-2;
Именно знак остатка (%) ограничивает диапазон чисел от минимума и максимума.
Чтоб протестировать самому используй вместо random() любое число. Для минимума это всегда будет 0, для максимума это твой максимум минус единица. Например:
Код
0 % 6-2 = -2; // для минимума
(6-1) % 6-2 = 3; // для максимума
А так как нам нужно найти вещественные числа, то для этого нам нужно сделать из целого числа нецелое число, поэтому используем трехзначное число и делим его на 100, отсюда у нас и выходит
Код
random() % ((3+|-2|)*100+1) - (|-2|*100) => random() % 501-200;
И затем получившееся трёхзначное целое число приводим к вещественному типу делением на 100.
Так и выходит:
C++
1
2
A[i] = rand() % 501-200;
A[i] /= 100;
1
Эксперт С++
1884 / 1232 / 354
Регистрация: 16.05.2013
Сообщений: 3,231
Записей в блоге: 6
07.11.2014, 11:47 7
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 <chrono>
#include <random>
#include <iomanip>
const int SIZE = 15;
int main()
{
  double A1[SIZE];
  double A2[SIZE];
/** Заполняем массив А1 и А2 */
  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
  std::default_random_engine generator (seed);
  std::uniform_real_distribution<double> distribution (-2.0,3.0);
 
/** Заполняем массив А1 и А2 */
  int c = 0;
  for (int i=0; i < SIZE; ++i) {
    A1[i] = distribution(generator);
    if(-1.8 < A1[i] && A1[i] < 2.7)
        A2[c++] = A1[i];
  }
/** Устанавливаем точность при выводе */
  std::cout.precision(2);
/** Выводим массив А1 */
  std::cout << "A1: ";
  for (int i=0; i < SIZE; ++i)
    std::cout << std::setw(3) << A1[i] << ' ';
  std::cout << std::endl;
 
/** Выводим массив А2 */
  std::cout << "A2: ";
  for (int i=0; i < c; ++i)
    std::cout << std::setw(3) << A2[i] << ' ';
  std::cout << std::endl;
  return 0;
}
1
Guardian of Asgaard
376 / 318 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
07.11.2014, 13:24 8
Ghyt, Более детально об этом в моём блоге Генерация случайных чисел через rand() и их ограничение.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2014, 13:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Переписать из массива Y(N) в массив X элементы, значения которых больше среднего гармонического
2.2. Переписать из массива Y(N) в массив X элементы, значения кото-рых больше среднего...

Как переписать все положительные элементы с одного массива в другой
Мои наработки: #include &lt;iostream&gt; using namespace std; int main() { int n; cout...

Переписать все ненулевые элементы из одного массива в другой, не меняя порядка следования
1. int removeZeroes (int *array, int *result, int n); Из массива array записать все ненулевые...

Увеличить на 5 все элементы массива, значения которых меньше 10
вввести массив б из девяти элементов увеличить на 5 все элементы значения которых меньше 10 и...


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

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

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