Создать функцию которая переставляет местами первые n элементов массива A с последними n элементами массива В
Написать функцию, которая переставляет местами первые n элементов массива A с последними n элементами массива В. Параметрами функции должны быть оба массива и число n.
Вот что выводить :( Process returned -1073741819
#include <stdio.h>
#include <stdlib.h>
void reparray(int *a, int *b, int n){
int i = 0;
int last_element = 4;
int help[5] = {};
for (i = 0; n; i++){
help[i] = a[i];
}
for (last_element; n; last_element--){
help[last_element] = b[last_element];
}
for (i = 0; n; i++){
a[i] = help [i];
}
for (last_element; n; last_element--){
b[i] = help [i];
}
}
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int b[5] = {6, 7, 8, 9, 10};
int n;
printf("Enter n");
scanf("%d", n);
reparray(a, b, n);
printf("Array A");
for (int i = 0; i<4; i++){
printf("%d\n", a[i]);
}
printf("Array B");
for (int i = 0; i<4; i++){
printf("%d\n", b[i]);
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Не буду далеко ходить... Что делает ваш код
for (i = 0; n; i++){
help[i] = a[i];
}
Сколько присвоений он сделает?
А вообще, вы как-то сильно привязались к массиву из 5 элементов. А если это будут 10 и 18 элементов, например?...
Я бы делал так:
void reparray(int *a, size_t asize,
int *b, size_t bsize,
size_t n)
{
assert(bsize > n && asize > n);
for(size_t i = 0; i < n; ++i)
{
int tmp = a[i];
a[i] = b[bsize-n+i];
b[bsize-n+i] = tmp;
}
}
(если порядок элементов должен сохраняться).