Форум программистов
Главная  |  Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Повторная активизация e-mail  | 
Вернуться   Форум программистов > C++ программирование > Общие вопросы C/C++


Ответ
 
Опции темы
Старый 05.10.2011, 01:30   #1
mavol
 
Аватар для mavol
 
Регистрация: 05.10.2011
Сообщений: 5
Репутация: 10
Печаль Вопрос связанный с 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
Сообщений: 212
Репутация: 10
По умолчанию

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

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

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

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

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 вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос связанный с SEO mordrag Javascript и другие клиентские скрипты 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



22:18.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

последние новости России


и в России
Любые веб-камеры по лучшим ценам!


С доставкой и гарантией.
магазин горящих туров


более 1000 горящих предложений ежедневно