Изменение знака некоторых значений массива в C - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно написать функцию, которая принимает элементы в массиве и меняет знак (например, 3 -> -3 или -3 -> 3).Дело в том, что мне нужно изменить все значения, кроме первых 3 целых чисел в массиве, а затем отобразить весь массив с неизмененными и измененными значениями.Вот мой код

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

void change_sign(int x[], int n)
{
    int *ptr[n];
    int i;
    for(i = 0; i < n; i++)
    {
        ptr[i] = &x[i+3];
    }
    for(i = 0; i < n; i++)
    {        
        x[i] = *ptr[i] * (-1);
        printf("%d\n", x[i]);
    }
}

int main()
{

int arr [10] = {-5, 13, -2, 5, 8, -54, 82, -4, 9, -43};

change_sign(arr, 10);

return 0;    
}

Это, очевидно, не работает, он показывает только измененные числа и некоторые случайные числа в конце.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Ваша ошибка из-за пределов

Если вы не хотите использовать указатель, попробуйте что-то вроде

void change_sign(int x[], int n)
{
    for(int i = 3; i < n; i++)
    {
        x[i] = -x[i] ;
    }
}
0 голосов
/ 15 февраля 2019

Попробуйте это

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

void change_sign(int x[], int n)
{

    int i;
    for(i = 0; i < n; i++)
    {
        if(i>2)
        x[i] = -x[i];

        printf("%d\n", x[i]);
    }
}

int main()
{

int arr [10] = {-5, 13, -2, 5, 8, -54, 82, -4, 9, -43};

change_sign(arr, 10);

return 0;    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...