Возведение в квадрат каждого элемента с указателями (C) - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь написать программу на C, которая возводит в квадрат каждый элемент массива:

Ввод:

 v = {1,2,3}

Вывод:

 v = {1,4,9}

Вот мойКод C:

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


 void squaredVector(int *rowVector[] , int arrayLength);

 int main(void)
 {
    int result;
    int a[] = {1 , 2 , 3};
    result = squaredVector(&a , 3); /* use the address of array a */
    printf("%d" , result);
    return 0;
 }

Функция, которая возводит в квадрат мой вектор:

 void squaredVector(int *rowVector[] , int arrayLength) 
 {
   int i;
   for(i = 0; i < arrayLength; i++)
   {
      *rowVector[i] = (*rowVector[i]) * (*rowVector[i]);
   }
}

Я не совсем уверен, что делает функция, но я предполагаю, что значения массива передаютсяк квадратной векторной функции.Я предполагаю, что:

 *rowVector[i] = (*rowVector[i]) * (*rowVector[i]);

берет элемент a [i] и возводит его в квадрат, используя немаскированные указатели

1 Ответ

0 голосов
/ 04 октября 2018

Вы используете одномерный массив, поэтому не следует использовать

void squaredVector(int *rowVector[] , int arrayLength);  // This is an array of pointers

Вместо этого правильное объявление функции:

void squaredVector(int rowVector[] , int arrayLength);   //1D array

ИЛИ

void squaredVector(int *rowVector , int arrayLength);   //1D array

Внутрифункция, цикл for должен измениться на

for(i = 0; i < arrayLength; i++)
{
    rowVector[i] = (rowVector[i]) * (rowVector[i]);
}

Вызвать функцию в main с помощью

result = squaredVector(a , 3);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...