Как я могу обратить вспять вывод моего массива при вводе случайных чисел, сгенерированных компьютером? - PullRequest
0 голосов
/ 28 октября 2019

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мой код создает и печатает 40 чисел в массиве. При попытке напечатать этот набор кода в обратном порядке, он будет печатать только окончательное число в массиве регулярных / обычных файлов, когда мне понадобится распечатать весь первый массив в обратном порядке. Спасибо за помощь. Я использую c ++.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h>

int main(void) 
{ 
    int i;
    int lower = 0, upper = 100; //Random number between 1 and 100 is generated
    int rand_num; 
    int num[40];

    srand(time(0)); 

    printf("Your array is shown:\n");
    for(i = 0; i < 40; i++)
    {
        rand_num = (rand() % (upper - lower + 1)) + lower;
        num[rand_num] = rand_num;

        printf("%d ",num[rand_num]);

    }


    printf("\nYour array backwards is:\n");
    for(i = 39; i >= 0; i--)
    {
        printf("%d ", num[rand_num]);

    }


    return 0; 
} 

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Проблема в том, что вы используете num[rand_num]. Это означает, что ваш доступ к массиву контролируется случайным числом, а не i.

Решение простое: замените каждый экземпляр num[rand_num] на num[i].

0 голосов
/ 28 октября 2019

В вашем первом цикле for измените это num[rand_num] = rand_num для num[i] = rand_num и printf("%d ", num[rand_num]) для printf("%d", num[i]).

Во втором цикле for измените printf("%d ", num[rand_num]) на printf("%d", num[i]).

Проблема была в ваших for циклах, как вы можете видеть. Вы не использовали свою переменную итерации i для индексации в массиве num, вместо этого вы всегда индексировали ее с помощью rand_num, который является случайным числом, и, в частности, в вашем последнем цикле for это не делалось 't, поэтому он отображал num[rand_num] в каждой итерации цикла.

...