配列の足し算

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たきじゅん
記事: 3
登録日時: 2年前

配列の足し算

#1

投稿記事 by たきじゅん » 2年前

main 関数で定義した2つの1次元配列(int型 サ
イズは3,初期値0)について,任意の値を入力し
た上で,それらの足し算をする関数を作成する
という課題を解いています。

コード:

#include <stdio.h>
void getsumarray(int* data1, int* data2, int* data3);
int main(void)
{
	int i;
	int array1[3], array2[3], sum_array[3];
	getsumarray(array1, array2, sum_array);
	printf("\n");
	for (i = 0; i < 3; i++) {
		printf("array1 %d 番目の値 = %d\n", i + 1, *(array1 + i));
		printf("array2 %d 番目の値 = %d\n", i + 1, *(array2 + i));
	}
	printf("¥n");
	for (i = 0; i < 3; i++) {
		printf("array1 + array2 %d 番目の値 = %d\n", i + 1, *(sum_array + i));
	}
	return 0;
}

void getsumarray(int* data1, int* data2, int* data3)
{
	int i;
	for (i=0;i<3;i++){
		(data3+i) = (data1)+(data2);
	}
}
まで書いたところ、
式は変更可能な左辺値である必要があります
式には整数型が必要です
のエラーが出ました。ここからどう直せばいいでしょうか?

参照魚
記事: 109
登録日時: 6年前

Re: 配列の足し算

#2

投稿記事 by 参照魚 » 2年前

配列とポインターの操作で間違いがあります。

コード:

void getsumarray(int* data1, int* data2, int* data3)
{
	int i;
	for (i=0;i<3;i++){
		data3[i] = data1[i]+data2[i]; // *(data3+i) = *(data1+i) + *(data2+i) でも同じですが配列形式の方が見た目がシンプルかと思います
	}
}

box
記事: 2002
登録日時: 13年前

Re: 配列の足し算

#3

投稿記事 by box » 2年前

初期値0
どこで初期値を設定していますか?
任意の値を入力
どこで入力していますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: 配列の足し算

#4

投稿記事 by box » 2年前

コード:

#include <stdio.h>

#define N (3)

void inputData(int *a1, int *a2)
{
    int i;

    for (i = 0; i < N; i++) {
        printf("arr1 %d番目の値 = ", i + 1), scanf("%d", a1 + i);
        printf("arr2 %d番目の値 = ", i + 1), scanf("%d", a2 + i);
    }
}

void getSumArray(int *a1, int *a2, int *s)
{
    int i;

    for (i = 0; i < N; i++) {
        *(s + i) = *(a1 + i) + *(a2 + i);
    }
}

void printResult(int *a1, int *a2, int *s)
{
    int i;

    for (i = 0; i < N; i++) {
        printf("%d + %d = %d\n", *(a1 + i), *(a2 + i), *(s + i));
    }
}

int main(void)
{
    int arr1[N] = { 0 }, arr2[N] = { 0 }, sum[N] = { 0 };   // 初期化いらんけど

    inputData(arr1, arr2);
    getSumArray(arr1, arr2, sum);
    printResult(arr1, arr2, sum);
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

たきじゅん
記事: 3
登録日時: 2年前

Re: 配列の足し算

#5

投稿記事 by たきじゅん » 2年前

みなさん、ありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る