2015-09-18 2 views
-2

Нам было назначено написать программу, которая считывает список целых чисел с клавиатуры и создает следующую информацию: количество целых чисел, сумму и среднее число целых чисел, наименьшее количество и наибольшее целое число. Спасибо.Count, Sum, Average, Smallest, Large

вход должен быть: «Введите цифры с < возврата> (99999 остановиться)»

До сих пор у меня есть этот код, но ответы, которые я получаю неверны. Это только правильно, если вход I 12345.

#include<stdio.h> 
#include<conio.h> 

main() 
{ 
    int n,count=0,r,ave,small=0,large=0,sum=0; 
    clrscr(); 
    printf("Enter numbers:"); 
    scanf("%i",&n); 
    while(n!=0) 
    { 
      r=n%10; 
      n/=10; 
      sum=sum+r; 
      count++; 
      if(r>large) 
      { 
       large=r; 
      } 
      if(r<small); 
      { 
      small=r; 
      } 
    } 
    ave=sum/count; 
    printf("Sum: %i\n",sum); 
    printf("Total: %i\n",count); 
    printf("Average:%i\n",ave); 
    printf("Smallest:%i\n",small); 
    printf("Largest:%i\n",large); 
    getch(); 
} 
+2

Это выглядит как код C, а не C++. Также вас попросили взять кучу цифр в качестве ввода или выполнить операции с цифрами одного номера? Кроме того, для минимума назначьте начальное значение 10 и для максимального начального значения -1, если вы работаете с цифрами, так как цифры (десятичного числа) всегда находятся между [0, 9]. Однако для кучи чисел инициализируйте минимум до INT_MAX и максимум до INT_MIN. –

+0

Вы не берете сумму, среднее или наибольшее/наименьшее значение фактического ввода, вы берете ее всех * цифр * на одном входе. –

+0

В среднем вы можете реализовать инкрементный подход, как описано [здесь] (http://math.stackexchange.com/questions/106700/incremental-averageing). –

ответ

2

Unintetional Coding Ошибка:

if(r<small); { small=r; }

Здесь вы гнал на ; в конце проверки состояния. Итак, на каждой итерации small обновляется с помощью r.

Initiation Проблема: Вы инициализируется small с 0. Но этого не должно быть. Он должен быть инициализирован с большим значением, чем возможное максимальное значение ввода. В вашем случае должно быть достаточно 10.

FYI: +12345 вход работает, потому что последнее значение r является 1 и small обновляется на каждой итерации.

0

попытайтесь не инициализировать малый 0, просто сохраните его как переменную.

0

Вам нужно написать% d для целого числа. И возьмите small = 9, тогда вы получите правильный ответ.

0

Амайя попробовать это:

#include<stdio.h> 
#include<conio.h> 
#include<vector> 
int OutputRemainder(int number) 
{ 
    return number%10; 
} 
int OutputLargestNumber(std::vector<unsigned int> paramArr) 
{ 
    int max=0; 

    for(int i=0; i< paramArr.size(); i++) 
    { 

     if(paramArr.at>max) 
     { 
     max = paramArr.at; 
     } 
    } 
    return max; 
} 
int OutputSmallestNumber(std::vector<unsigned int> paramArr) 
{ 
    int min=paramArr.at(0); 

    for(int i=0; i< paramArr.size(); i++) 
    { 

     if(paramArr.at<min) 
     { 
     min = paramArr.at; 
     } 
    } 
    return min; 
} 
float AverageOfAllNumbers(std::vector<unsigned int> paramArr) 
{ 
    float sum=0; 
    float cond = paramArr.size(); 
    for(int i=0; i< cond; i++) 
    { 
    sum += paramArr.at; 
    } 
    return sum/paramArr.size(); 
} 
int SumOfAllNumbers(std::vector<unsigned int> paramArr) 
{ 
    int sum=0; 
    for(int i=0; i< paramArr.size(); i++) 
    { 
    sum += paramArr.at; 
    } 
return sum; 
} 



int main() 
{ 
    unsigned int numberInput=0; 
    unsigned int inputCount=0; 
    float average=0; 
    unsigned int smallestNumber=0; 
    unsigned int largestNumber=0; 
    unsigned int sum=0; 
    std::vector<unsigned int> arr; 

    printf("Enter numbers: "; 
    scanf("%d",&numberInput); 


    while(numberInput!=0) 
    { 
     arr.push_back(OutputRemainder(numberInput)); 
     numberInput = numberInput/10; 
    } 

    largestNumber = OutputLargestNumber(arr); 
    printf("\nLargest Number: %d", largestNumber); 

    smallestNumber = OutputSmallestNumber(arr); 
    printf("\nSmallest Number: %d", smallestNumber); 

    average = AverageOfAllNumbers(arr); 
    printf("\nAverage of Numbers: %f", average); 

    sum = SumOfAllNumbers(arr); 
    printf("\nSum of Numbers: %d", sum); 

    inputCount = arr.size(); 
    printf("\nCount of Numbers: %d", inputCount); 


    return 0; 

}

+0

Вопрос отмечен C, а не C++. Ваш код также содержит несколько синтаксических и логических ошибок. – Blastfurnace

+0

да код содержит функции векторной библиотеки C++. – Anas90