Как отображать целые числа без десятичных знаков - PullRequest
1 голос
/ 14 июля 2020

Я создал программу для отображения среднего значения из массива чисел, который пользователь решил ввести. Программа запрашивает у пользователя количество чисел, которые он / она вводит, затем они вводят все положительные числа. Вывод для среднего всегда является десятичным, как я могу отображать только целое число без десятичных знаков. Ex. 12,34 = 12 / 8,98 = 8

#include <iostream>
#include <iomanip>
using namespace std;

void sortingTheScores(double *, int); 
void showsTheScoresNumber(double *, int);  
double averageForAllScores(double, int);  

int main()
{
    double *scores;                        
    double total = 0.0;                         
    double average;                            
    int numberOfTestScores;                      
                                       
    cout << "How many test scores do you have? ";
    cin >> numberOfTestScores;

    
    scores = new double[numberOfTestScores];
    if (scores == NULL)
        return 0;

    
    
    for (int count = 0; count < numberOfTestScores; )  
    {
        cout << "Test Score #" << (count + 1) << ": ";
        cin >> scores[count];
        while (scores[count] <= 0)
        {
            cout << "Value must be one or greater: " ;  
               
            cin >> scores[count];
        }
        
        count = count +1; 
    }

    


    for (int count = 0; count < numberOfTestScores; count++)  
    {
        total += scores[count]; 
        
        
    }
    
    
    

    
    sortingTheScores(scores, numberOfTestScores);

    cout << "The numbers in set are: \n";
    showsTheScoresNumber(scores, numberOfTestScores);
    
    
    averageForAllScores(total, numberOfTestScores);
    
    cout << fixed << showpoint << setprecision(2);
    cout << "Average Score: " << averageForAllScores(total,numberOfTestScores);


    return 0;

}



void sortingTheScores (double *array, int size)
{
    int sorting;
    int theIndex;
    double  theNumbers;
    
    
    for (sorting = 0; sorting < (size - 1); sorting++)  
    {
        theIndex = sorting;
        theNumbers = array[sorting];
        for (int index = sorting + 1; index < size; index++) 
        {
            if (array[index]  < theNumbers)
            {
                theNumbers = array[index];
                theIndex = index;
            }
        }
        array[theIndex] = array[sorting];
        array[sorting] = theNumbers;
    }
}



void showsTheScoresNumber (double *array, int size)
{
    for (int count = 0; count < size; count++) 
        cout << array[count] << " ";
    cout << endl;
    
    
}






double averageForAllScores(double total, int numberOfTestScores)
{   double average;
    
    average = total / numberOfTestScores;
    return average;

    
    
}  

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Вы можете использовать манипуляторы ввода / вывода здесь:

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << std::setprecision(0) << 1.231321 << '\n';
}

Вывод:

1
1 голос
/ 14 июля 2020

Вы можете сделать это без использования библиотеки iomanip:

std::cout.precision(0);
std::cout << 1.231321 << std::endl;

Тогда вы просто получите:

1

Просто вам нужно использовать std::cout.precision(), что эквивалентно в std::setprecision() из библиотеки iomanip.

Изменить:

Вышеупомянутое решение подходит для меньших значений с плавающей запятой, но если вы попробуете что-то вроде 1334.231321, std::cout будет Результат отображает некоторую научную c нотацию, что-то вроде:

1e+03

, что на самом деле странно для чтения и понимания. Чтобы решить эту проблему, вам нужен флаг std::fixed, вы можете написать что-то вроде:

std::cout.precision(0), std::cout << std::fixed;
std::cout << 1334.231321 << std::endl;

Тогда он покажет:

1334
0 голосов
/ 14 июля 2020

Для чисел в диапазоне +/- 2 ^ 31 вы можете сделать:

cout << int(12.34) << " " << int(8.98) << endl;

, который производит вывод

12 8

Вы также можете рассмотреть возможность округления до ближайших целых чисел . Для этого добавьте строку

#include <cmath>

, затем выполните

cout << int(rint(12.34)) << " " << int(rint(8.98)) << endl;

, это даст

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