Сформировать массив из заданного количества случайных целых чисел в заданном диапазоне - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Не могу въехать как написать эту задачу: Задана последовательность значений элементов некоторого массива до и после преобразования по некоторому правилу. Определите алгоритм преобразования и напишите программу, которая: 1) формирует массив из заданного количества случайных целых чисел в заданном диапазоне и выводит элементы массива на экран; 2) по определенному вами алгоритму преобразовывает этот массив и выводит на экран элементы преобразованного массива. 3) производит заданные вычисления (рекомендуется оформить в виде отдельной функции) и выводит результат на экран. Массив K = (5, –5, 4, 9, –7, –11, 0) преобразован к виду K = (0, 1, 0, 0, –1, –5, 0). Размер массива K - 21 элемент из диапазона [–56,56]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16]. Просто не понимаю куда и что, читаю статьи про массивы как об стенку горох.. буду признателен за подсказки и помощь в написании. Для начала как сформировать массив из заданного диапазона, в условии не понимаю по какому алгоритму преобразоваться массив и как это отобразить в программном коде.
Вот что то нашел похожее на мое задание и постарался адаптировать под себя.. ок допустим, верно адаптировал кхе кхе.. или все же чего то не хватает
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "iostream"
#include "time.h"
#include "stdlib.h"
 
const int N = 21;
int random(int N) { return rand() % N; }
 
int _tmain(int argc, _TCHAR* argv[])
{
    system("CLS");
    int i, A[N], a = -56, b = 56, sum;
    for (i = 0; i < N; i++)
        A[i] = random(b - a + 1) + a;
    printf("\nmassiv1\n");
    for (i = 0; i < N; i++)
        printf("%4d", A[i]);
    printf("\nmassiv2\n");
    for (i = 0; i < N; i++)
    {
        if (A[i]<0) A[i] = 0;
    }
    A[i] = random(b - a + 1) + a;
    for (i = 0; i < N; i++)
        printf("%4d", A[i]);
    printf("\nsum\n");
 
    printf("%4d", A[i]);
    for (i = 0; i < N; i++)
        sum = 0;
    for (i = 0; i<N; i++)
    {
        if (A[i]>-16 && A[i]<6)
        sum += A[i];
    }
    printf("%4d", sum);
    system("PAUSE");
    return 0;
}

Решение задачи: «Сформировать массив из заданного количества случайных целых чисел в заданном диапазоне»

textual
Листинг программы
const int N = 21, MIN_NUM = -56, MAX_NUM = 56;//MIN_NUM - нижний предел диапазона значений, MAX_NUM - верхний предел
int array[N];
srand(time(0));
for (int i = 0; i < N; ++i)
    array[i] = rand() % (MAX_NUM - MIN_NUM + 1) + MIN_NUM; // общая формула для диапазонов, указанных в квадратных скобках

Объяснение кода листинга программы

  1. В первой строке объявляется константа N, которая задает количество элементов в массиве (21), и константы MIN_NUM и MAX_NUM, которые задают границы диапазона случайных чисел (-56 и 56 соответственно).
  2. Далее объявляется массив array типа int с фиксированным размером N.
  3. Затем инициализируется генератор случайных чисел srand(time(0)), который будет использоваться в коде.
  4. В цикле for, который выполняется N раз (от 0 до N-1), каждый элемент массива array заполняется случайным числом в заданном диапазоне. Формула для этого - array[i] = rand() % (MAX_NUM - MIN_NUM + 1) + MIN_NUM.
  5. В конце каждого элемента массива добавляется MIN_NUM, чтобы гарантировать, что все числа будут в заданном диапазоне.
  6. В конце цикла i увеличивается на 1, чтобы перейти к следующему элементу массива.
  7. В конце функции или программы не указано, что делает дальнейшие действия с массивом array.

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы