ユーザーが入力する整数のセットから最大値と最小値を見つけるためにポインターを使用して、動的配列を使用するプログラムを作成しました。
実際には最大の出力を取得できますが、最小の出力は取得できません。maxの関数からの計算後に動的配列が0になることがわかり、minが割り当てられた値の値になるようにしました。
なぜこのようになっているのかわかりません-多くの方法を試しましたが、これらは役に立たなかったので、誰かが理由を説明し、可能であれば解決策を提供するか、解決方法のヒントを教えてください。
返信ありがとうございます
私のコードがあなたと混同していたようです
ごめん
整数の量から最大桁数と最小桁数を取得するというプログラムの意図
私が言おうとしたのは、maxの関数から計算した後、動的配列のデータが0になり、プログラムがminの関数を通過すると、動的配列のデータが設定されているため実行されないということです0に
だから実際に私が聞きたいのは、動的配列からのデータが最大の関数の後に0にならないようにする方法があるということですか?
下手な英語でごめんなさい
#include <iostream>
using namespace std;
void max(int*, int);
void min(int*, int);
int main()
{
int *ptr;
int i;
int size;
cout << "how many integer: ";
cin >> size;
ptr = new int[size];
for (i = 0; i < size; i++)
{
cout << "integer#" << i << ": ";
cin >> *ptr + i;
}
max(ptr, size);
min(ptr, size);
delete [] ptr;
return;
}
void max(int* ptr, int size)
{
int i;
int j;
int max = 0;
for (i = 0; i < size; i++)
{
while (*ptr + i != 0)
{
j = *ptr + i % 10;
if (j > max)
{
max = j;
}
*ptr + i /= 10;
}
}
cout << max << endl;
}
void min(int* ptr, int size)
{
int i;
int j;
int min= 0;
for (i = 0; i < size; i++)
{
while (*ptr + i != 0)
{
j = *ptr + i % 10;
if (j < min)
{
min= j;
}
*ptr + i /= 10;
}
}
cout << min<< endl;
}