こんにちは皆さん、ご迷惑をおかけして申し訳ありませんが、ここでそれを失い始めています。最近、Cでプログラミングを再開しましたが、なんらかのバグが発生しました。プログラムは簡単なものであるため、次のことを行う必要があります。0が読み取られるまで、未定義の数の自然要素がキーボードから読み取られます。その後、すべての要素の積を計算し、その結果の最後にある0の数を計算する必要があります。
int input(int* v) {
int n = 0;
do
{
n = n + 1;
v = (int*) realloc(v,n*sizeof(int)); printf("Enter number %d: ",n); scanf("%d",&v[n-1]);
}
while(v[n-1] != 0);
n--;
return n; }
int tZeros(int* v, int eNb) {
int i;
int val = 1;
for(i = 0; i < eNb; i++)
{
val = val * v[i];
}
i=0;
while(val % 10 == 0)
{
i++;
}
return i; }
int main (int argc, char** argv) {
int* v = NULL;
int eNb = input(&(*v));
if(eNb>0)
{
int zeros = tZeros(v, eNb);
printf("The number of ending zeros in the product of the given numbers is: %d",zeros);
}
else
{
printf("No elements to do computations with!\n");
}
free(v);
return 0;
}
input関数は、動的配列内の要素の数と実際の要素の2つを返す必要があります。ただし、input関数を実行すると、入力された値はすべて失われます。引数をポインターとして入力に渡すので、変更する必要があります。正しいアドレスの値は正しいですか?
すべての提案は大歓迎です!Thnx!
PS問題は私の配列にあると思いますv..入力関数を終了した後、すべての値が失われます。