найти мин и макс - PullRequest
       3

найти мин и макс

0 голосов
/ 24 августа 2010

я написал код, но не могу получить максимальное значение, как найти максимальное значение

#include <stdio.h>
int main(void)
{
        double temp[0];
        float max,min;
        float i;
        short c,j,k;
        float sum=0;
        float nu[c];

        printf("Number of values :");
        scanf("%f",&i);

        for (c=1;i>=c;c++)
        {
          printf("values=");
          scanf("%f",&nu[c]);

          nu[c]=temp[0];

          for (j = 0; i>=j; j++)
          {
             if (temp[0]> nu[c])
             {
             //      nu[c]=temp[0];
                  max = temp[0];

             }
        }
        sum = sum + nu[c];
      }
      printf("sum = %f \n",sum);
      printf("maximum value = %f\n",max);
}

Ответы [ 6 ]

2 голосов
/ 24 августа 2010

Если вы запускаете компилятор с -Wall (как вы всегда должны делать), вы должны были увидеть проблемы:

gcc -Wall -o foo foo.c
foo.c: In function 'main':
foo.c:35:14: warning: unused variable 'k'
foo.c:33:14: warning: unused variable 'min'
foo.c:62:1: warning: control reaches end of non-void function
foo.c:37:4: warning: 'c' is used uninitialized in this function

Вот исходный код программы, которая работает:

#include <stdio.h>

int main(void)
{
   float max = 0; // hypothesis : numbers keyed by the users are > 0
   float min = 0; // hypothesis : numbers keyed by the users are > 0
   int i, c;
   float sum = 0;
   float nu[100]; // hypothesis : no more than 100 numbers keyed by user
                  // hypothesis : float type is enough to store numbers keyed by user
   printf("Number of values :");
   scanf("%d",&i);

   for (c = 0; c < i; c++)
   {
         printf("values=");
         scanf("%f",&(nu[c]));

         if (nu[c] > max) {
            max = nu[c];
         }

         if (min == 0) {
            min = nu[c];
         } else if(nu[c] < min) {
            min = nu[c];
         }

         sum = sum + nu[c];
   }
   printf("sum = %f \n",sum);
   printf("maximum value = %f \n", max);
   printf("minimum value = %f \n", min);

   return 0;
}
1 голос
/ 27 августа 2010

Или это

#include <stdio.h>

int main(void)

{ 
 float temp;

 int val,i,j,k;

 double sum = 0;

 double number[val];

 printf("Enter the number of values: ");

 scanf("%d", &val);

 double number[val];

 for(i=1; i <= val ;i++)
 { 
   printf("enter a value: ");

   scanf("%lf", &number[i]);

    sum = sum + number[i];

 }

 for(i=1;i<=val;i++)

        {

  for(j=i+1;j<=val;j++)

  {

   if(number[i] > number[j])

   { 

    temp=number[i];

    number[i]=number[j];

    number[j]=temp;

    }

  }

 }

 printf("Sum = %.lf\n", sum);

 printf ("Maximum element: %f\n",number[val]);  

 printf ("Minimum element: %lf\n", number[1]);  

}
1 голос
/ 24 августа 2010

Вот код с некоторыми полезными указателями:

#include <stdio.h>
int main(void)
{
        double temp[0];
        float max,min;
        float i;
        short c,j,k;                     // k isn't used anywhere.
        float sum=0;
        float nu[c];                     // c isn't set at this point so the
                                         //   runtime couldn't create an
                                         //   array anyway.

        printf("Number of values :");
        scanf("%f",&i);

        for (c=1;i>=c;c++)
        {
          printf("values=");
          scanf("%f",&nu[c]);
                                         // You should set min/max to nu[c]
                                         //   if c is 1 regardless.
          nu[c]=temp[0];                 // Why are you scanning into nu[c]
                                         //   then immediately overwriting?

          for (j = 0; i>=j; j++)         // Why figure out the max *every*
          {                              //   time you enter a value?
             if (temp[0]> nu[c])
             {
             //      nu[c]=temp[0];
                  max = temp[0];

             }
        }
        sum = sum + nu[c];
      }
      printf("sum = %f \n",sum);
      printf("maximum value = %f\n",max);
}

Я бы также предложил вам вернуться к моему первоначальному ответу и создать свой код из этого.Это действительно более чистый способ сделать это, чем пытаться возиться с массивами.

Позвольте мне подчеркнуть, что: если вы используете массив, вы делаете это трудным путем!

1 голос
/ 24 августа 2010

Вам нужен одиночный цикл for, а не вложенный цикл.

  1. Получить ввод, используя первый цикл for
  2. Назначить первый элемент входного массива переменной, вызвать его max
  3. Сравнить каждый элемент массива, используяцикл снова
  4. Если вы получите значение больше, чем max, измените max на это значение, используя следующий код

    if (max

В конце этих шагов вы можете получить максимальное значение.

Попробуйте поместить эти шаги в код на C, и все должно быть в порядке.Есть некоторые проблемы с кодом, который вы написали.Я написал небольшой фрагмент для вас, чтобы получить данные о количестве элементов и сохранить их в массиве для чисел с плавающей запятой.

int number_of_elements;
printf("Enter the number of elements:\n");
scanf("%d", &number_of_elements);
for(i=0;i<number_of_elements;i++)
scanf("%f",&a[i]);
0 голосов
/ 24 августа 2010

Возможно, это не решит ваш вопрос, но nu[c] мне кажется плохо распределенным, поскольку c значение не определено

0 голосов
/ 24 августа 2010

удалить временную шкалу (не вижу ее смысла)

установить максимальное значение для некоторого начального значения (например, первого элемента массива)

и изменить выражение if на:

  if (nu[c]> max)
             {
                  max = nu[c];

             }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...