0

整数のセット (cat1、cat2、cat3、cat4) で最大数を検索する方法 == の代替を除くすべての代替を検討して、これをコーディングします (より長いコード!!) より効率的で単純なものはありますか?可能性のあるすべてのソリューションに対してIFステートメントを作成するよりも、それを行う方法はありますか? 数字の数が多い場合は?(例: 10!!!!) ありがとうございます。これは私のコードです

if (cat1 > cat2 && cat1> cat3 && cat1>cat4)
    printf("cat 1 is the biggest", cat1);  


if (cat2 > cat1 && cat2> cat3 && cat2>cat4)
    printf("cat 2 is the biggest", cat2) ;  


if (cat3 > cat1 && cat3> cat2 && cat3>cat4)
    printf("cat 3 is the biggest", cat3) ;  


if (cat4 > cat1 && cat4> cat2 && cat4>cat3)
    printf("cat 4 is the biggest", cat4);  
4

4 に答える 4

3

配列を使用すると非常に簡単です。

int data[10] = // ... your ints;
int max = data[0];
for (int i = 1 ; i < 10 ; i++ ) 
    if (data[i] > max ) max = data[i];
于 2012-10-08T20:11:40.083 に答える
1

配列を使用するだけです。これは、任意のサイズの配列の最大数を見つける例です。

int main(){
  int size,i,biggest;
  int *a = NULL;      

  printf("\nEnter the size of the array: ");
  scanf("%d",&size);

  a = malloc(size * sizeof(int));
  printf("\nEnter %d elements in to the array: ”, size);
  for(i=0; i<size; i++)
      scanf("%d",&a[i]);

  // assume the first number is the biggest
  biggest=a[0];

  // iterate on the array and update the biggest number if the current value is bigger than 'biggest'
  for(i=1; i<size; i++){
      if( biggest < a[i])
           biggest=a[i];
  }
  printf("\nYour biggest number is: %d",biggest);

  free(a)
  return 0;
}
于 2012-10-08T20:11:35.840 に答える
1

この関数は、配列とそのサイズを入力として受け入れます。

int biggest(int *nn,int n) {
    int rv = *nn;
    for(++nn,--n;n;--n,++nn) if(rv<*nn) rv = *nn;
    return rv;
}
于 2012-10-08T20:13:04.267 に答える
0
int MAX(int a, int b) {
     return a > b ? a : b;
}

// later on...

return MAX(cat1, MAX(cat2, MAX(cat3, cat4)));
于 2012-10-08T20:12:43.090 に答える