Member 13418611 Ответов: 2

Ошибка сегментации, неправильный ответ


Я хочу знать, в чем заключается ошибка сегментации...И скажите мне, почему моя программа показывает ошибку сегментации в Hackerrank.

Что я уже пробовал:

Вопрос>-
Дан массив из N чисел. Поверните элементы массива в указанном пользователем направлении (влево или вправо). Если индекс вращения отрицательный, поверните влево, в противном случае поверните вправо

входной формат

Входные данные будут содержать 2 строки.
Первая строка содержит 2 целых числа, указывающих количество элементов и индекс вращения.
Вторая строка содержит элементы массива, разделенные пробелами.

Ограничения

N >= 1

выходной формат

Элементы массива, разделенные пробелами

Пример Ввода 0

7 -2
1 2 3 4 5 6 7
Пример Результата 0

3 4 5 6 7 1 2
Пояснение 0

-2 означает 2 левых поворота.
Таким образом, 1, 2 идет в заднюю часть массива

Ответ>-

#include <stdio.h>
//#include<string.h>
int main()
{
    int i,j,n,k,z;
    int o=0;
    int A[99999],B[99999];
    scanf("%d%d",&n,&k);
    //int *A=malloc(sizeof(int)*n);
    //int *B=malloc(sizeof(int)*n);
    for(i=0; i<n; i++)
        scanf("%d",&A[i]);
if(k<0)
{
     z=(-1)*k;

    for(i=z; i<n; i++)
        B[o++]=A[i];
    for(i=0; i<z-1; i++)
        B[o++]=A[i];
    for(i=z-1; i<z; i++)
        B[o++]=A[i];
    //free(A);
        
    }
    else if(k>0)
    {
    for(j=n-k; j<n; j++)
        B[o++]=A[j];
    for(j=0; j<n-k-1; j++)
        B[o++]=A[j];
    for(j=n-k-1; j<n-k; j++)
        B[o++]=A[j];
       // free(A);
    }
    for(i=0; i<n; i++)
        printf("%d ",B[i]);
    return 0;
}

2 Ответов

Рейтинг:
2

Jochen Arndt

Видеть Ошибка сегментации - Википедия[^].

Почему это происходит с вашим кодом при проверке в HackerRank, здесь нельзя ответить, потому что мы не знаем, как он там выполняется.

Но может случиться так, что их тесты включают в себя передачу недопустимых входных значений, которые не обрабатываются вашей программой (например, n < 1, n >= 99999, abs(k) > n).


Рейтинг:
1

CPallini

Цитата:
з=(-1)*к;

для(i=z; i< n; i++)
B[o++]=A[i];

Когда k это странно, что вы получаете z = -1 и в конце концов вы получаете доступ A[-1]