Код работает нормально в моей IDE Dev C++, но продолжает давать сбои в IDE HackerRank.
Я делаю какую-то ошибку?
Вот ссылка на проблему:
https://www.hackerrank.com/challenges/arrays-ds/problem?isFullScreen=true
Функция, которую я написал, выглядит следующим образом, пожалуйста, объясните мне, где я ошибаюсь?
int* reverseArray(int a_count, int* a, int* result_count) {
int i, j;
for(i=0; i<a_count; i++) {
result_count[i] = a[i];
}
for(j=a_count-1; j>=0; j--) {
printf("%d ",result_count[j]);
}
return result_count;
}
вы не упомянули, что работает в вашей IDE и что не работает в HR, но код не переворачивает массив, он просто печатает
Ваш ответ правильный, вы копируете элементы массива 1 с конца в начало в массиве 2
если вы хотите изменить свой массив в том же массиве, вы просто используете временную переменную для замены элементов следующим образом:
#include<stdio.h>
void* reverseArray(int a_count, int* a) //you return an array (type complexe) so ,you should use void
{
int temp=0;
for(int i=0; i<a_count/2; i++)
{
temp= a[a_count-i-1];
a[a_count-i-1]=a[i];
a[i]=temp;
}
for(int i=0; i<a_count; i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int t[5] = {1,2,3,4,5};
reverseArray(5,t);
}
Я понимаю ваше решение. И я его тоже реализовал. Я передал все элементы перевернутого массива a в массив result_count. Он показывает вывод на моем ide, но не проходит тест на hackerrank. Печатаются только первые два элемента после реверсирования.
спасибо за помощь, @MED LDN. Я думаю, что IDE hackerrank не работает для C.
вы должны инициализировать свое первое значение в цикле отображения for на 0, и он остановился на длине массива -1, например, 'for(int i=0;i<N;i++'
Вы должны перевернуть массив, а не печатать его в обратном порядке.