Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2011, 01:30   #1
mavol
 
Аватар для mavol
 
Регистрация: 05.10.2011
Сообщений: 6
Печаль Вопрос связанный с setprecision и setiosflags.

Доброго времени суток!
Я учусь по книге "Дейтел Х., Дейтел П. — Как программировать на C++".

Вроде иду по чуть-чуть, но с толком. Подробно разбираю все примеры и функции, но вот у меня появился вопрос, ответ на который я гуглил, но так и не нагуглил.

Вот целая программа:

Код:
//Оценки.

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

main()
{
    float average;
    int total, counter, grade;
    
    //Исходные значения.
    counter = 0;
    total   = 0;
    
    //Этап обработки.
    cout    << "Введите целое число или -1 для завершения: ";
    cin     >> grade;
    
    while (grade != -1)
    {
        total = total + grade;
        counter = counter + 1;
        cout    << "Введите целое число или -1 для завершения: ";
        cin     >> grade;
    }
    
    //Завершающий этап.
    if (counter != 0) 
    {
        average = (float) total / counter;
        cout    << "Средний балл: " << setprecision(2) << setiosflags(ios::fixed | ios::showpoint) << average << endl;
    }
    else 
        cout    << "Оценки не введены!" << endl;
    
    return 0;     
}
В завершающем этапе есть две строки:

1-ая строка.

Код:
average = (float) total / counter;
2-ая строка.

Код:
cout    << "Средний балл: " << setprecision(2) << setiosflags(ios::fixed | ios::showpoint) << average << endl;
Именно они и вызвали у меня сложности и ответы я не нашел.

Первая строка как я понял говорит о том, что average будет иметь не только целые, но и запятые (об этом говорит float).

Вторая строка для меня мрак. Что такое setprecission и setiosflags(ios::fixed | ios::showpoint) я вообще без понятий. Помогите пожалуйста, если не тяжело.

Заранее благодарен!
mavol вне форума Ответить с цитированием
Старый 05.10.2011, 15:03   #2
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

2-я строка это форматирование выводимого текста на сколько я знаю.
к примеру размер шрифта или позиция на экране.
в твоей строке досконально не разбирался.
revaldo666 вне форума Ответить с цитированием
Старый 06.10.2011, 06:03   #3
mavol
 
Аватар для mavol
 
Регистрация: 05.10.2011
Сообщений: 6
По умолчанию

На сколько я понял, 2-я строка и функции, которые мне в ней не понятны, говорят о кол-ве символов после запятой и какие-то функции связанные с плавающей запятой.

Лично я как-то так понял.
mavol вне форума Ответить с цитированием
Старый 06.10.2011, 09:10   #4
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от mavol Посмотреть сообщение
Первая строка как я понял говорит о том, что average будет иметь не только целые, но и запятые (об этом говорит float).
В C\C++ оператор деления может выполнять как и обычное деление, так и целочисленное деление. Операция деления целых чисел - это целочисленное деление, по этому используется приведение значения переменной total к типу float.
An1ka вне форума Ответить с цитированием
Старый 06.10.2011, 09:44   #5
gamer-25
Пользователь
 
Регистрация: 21.09.2011
Сообщений: 25
По умолчанию

setprecision(2) - После запятой будет стоять 2 цифры
setiosflags(ios::fixed | ios::showpoint) - Обязательно должна стоять запятая

average = (float) total / counter;
total и counter - это целые числа
average - число с плавающей запятой. Результатом total/counter будет целое, хотя результат толжен быть float
Поэтому перед делением преобразовываем к float (float) totla/counter

Последний раз редактировалось gamer-25; 06.10.2011 в 09:50.
gamer-25 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос связанный с SEO mordrag JavaScript, Ajax 2 09.08.2011 19:02
Вопрос , связанный с потерей данных. Rin Общие вопросы Delphi 3 21.05.2010 14:06
Вопрос по setiosflags() и double fs444 Общие вопросы C/C++ 1 25.12.2009 11:37
Еще один вопрос, связанный с БД Sweta Общие вопросы C/C++ 3 09.11.2009 17:10
Вопрос связанный с выводом графики BuT@JL Мультимедиа в Delphi 2 24.10.2009 12:54