Не удается переставить первый массив в соответствии со вторым массивом - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь переставить мой первый массив (vector1) в соответствии с последовательностью второго массива индексов (vector2)

Например, если: vector1 = 1 2 3 4 и vector2 = 0 3 12

мой желаемый вывод должен быть: 1 4 2 3

Однако выполнение моего кода непрерывно прерывается из-за использования «недопустимого индекса массива». Кто-нибудь сможет указать, где я иду не так? Большое спасибо заранее.

#include <stdio.h>
#include <math.h>

int main(void) {

int n;

printf("Enter vector length: ");
scanf("%d", &n);

printf("Enter vector: ");

int vector1[n];

int i = 0;
while (i < n) {
scanf("%d", &vector1[i]);
i++;
}

printf("Enter permutation: ");

int vector2[n];

i = 0;
int j = 0;
while (i < n) {
scanf("%d", &vector2[j]);

i++;
}

i = 0;
int vector3[n];
while (i < n) {
vector3[i] = vector1[vector2[i]];
i++;
}

printf("%d", vector3[i]);


}

1 Ответ

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

При использовании vector2 вы получаете значение vector2[j], но увеличиваете значение i. Вы присвоили j=0 выше, чтобы цикл снова и снова сканировал одно и то же значение, т. Е. vector2[0], пока цикл не отключится. Таким образом, чтобы исправить вашу программу, либо увеличьте j в цикле, заменив j++ вместо i++, либо вы можете просто заменить vector2[j] на vector2[i] в цикле.

#include <stdio.h>
#include <math.h>

int main(void) 
{
    int n;

    printf("Enter vector length: ");
    scanf("%d", &n);
    printf("Enter vector: ");
    int vector1[n];

    int i = 0;
    while (i < n) 
    {
        scanf("%d", &vector1[i]);
        i++;
    }
    printf("Enter permutation: ");
    int vector2[n];
    i = 0;
    while (i < n) 
    {
        scanf("%d", &vector2[i]);
        i++;
    }
    i = 0;
    int vector3[n];
    while (i < n) 
    {
        vector3[i] = vector1[vector2[i]];
        i++;
    }
    for(i=0;i<n;i++)
    printf("%d", vector3[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...