現在、2 つのベクトルの合計を計算する単純な関数を作成中です。私は C に慣れていないので、ベクトルに対していくつかの「擬似乱数」値を生成し、それらの長さをランダム化することも考えました。これは、この演習で必要以上のものです。
基本的に、コードを書き始めたばかりで、配列の値がどうなるかを確認したかったのです。
コードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int vectorSum(int x[], int y[], int n, int sum[]) {
}
void display_Array(int *a, int len){
//Declerations
int i;
for(i=0; i<len; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
//Implement a nice randomizing function...Fisher-Yates shuffle
int main(void){
//Generate a random length for the array
srand(time(NULL));
int N = (rand()*rand())%100;
//Declarations
int *x = (int *) malloc(N * sizeof(*x)); //Because I don't know how large my array is ahead of time
int *y = (int *) malloc(N * sizeof(*y));
int i;
//Fill the arrays
for(i=0; i<10; ++i) {
x[i] = (rand()*rand())%100000;
y[i] = (rand()*rand())%100000;
}
display_Array(x, N);
getchar();
//Main execution...
}
このコードは完成間近ではないことに注意してください。お好きなだけ批評してください。洗練されていないことは承知しています。しかし、私は奇妙なことに気づきました。私の出力は、多くの場合、次のパターンに従います。
w, x, y...z, 0, 0, 0, 0, 0, 0, 0, 0.
多くの場合、配列の最後の値は 0 です。常にではありませんが、多くの場合、そうではありません。さらに、このパターンは通常複数発生します。たとえば、最後の 2 つの値が 0、0 である場合、プログラムを再度実行すると、最後の 4 桁は 0、0、0、0 のようになります。
それで、なぜこれが起こるのですか?疑問はありますが、他の方の意見をお聞きしたいです。