Форум программистов, компьютерный форум CyberForum.ru

Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Конвертер текстового файла http://www.cyberforum.ru/cpp-beginners/thread439174.html
Добрый день!!! Простите за наглость... Помогите пожалуйста написать программу-конвертер текстовых файлов из dos в windows и обратно. С командной строки должно вводится направление /d или /w. Я очень мало в этом понимаю. Заранее спасибо!!!
C++ Проблема с libmms - ошибка при компиляции. Здравствуйте. Уже который день не могу разобраться с упомянутой в заголовке библиотекой, а именно: пишу примерно такой тестовый код #include <iostream> #include <libmms/mms.h> int main() { mms_t *stream; char mms_link="mms://audio.rfn.ru/radiorus/audio/710/90.asf"; stream=mms_connect(0, 0, mms_link, 128); http://www.cyberforum.ru/cpp-beginners/thread439169.html
C++ Привет. Как можна найти с даного примера умножение элементов массива с четными номерами?
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main(int argc, _TCHAR* argv)
C++ Начало DEV С++
Здравствуйте, подскажите где ошибка? Задание Даны действительные числа х, у . Если х, у отрицательные то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательные и ни одно из них не принадлежат отрезку , то оба значения уменьшить в 10 раз; в остальных случаях х, у оставить без изменения. Решение ...
C++ Запись текста в файл http://www.cyberforum.ru/cpp-beginners/thread439138.html
Нужно составить прогрумма которая создает файл и записывает в него текст. Программа не записывает в файл текст после пробела, помогите пожалуйста. char name; char text; cout<<"vvedite put' i im9 faila:\n"; cin>>name; ofstream out(name); cout<<"vvedite text:\n"; cin>>text; out<<text; out.close();
C++ allocator std::map Подскажите вопрос, есть тестовое задание: Написать allocator для std::map, располагающий элементы контейнера последовательно в памяти. Подскажите где про это почитать и разъясните по-возможности, что это вообще такое (std::map я вкурсе что это контейнер и как с ним работать) в ступор вводит allocator подробнее

Показать сообщение отдельно
Recrut_rf
6 / 6 / 0
Регистрация: 14.10.2014
Сообщений: 44
Завершенные тесты: 2
24.01.2015, 18:00     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Цитата Сообщение от dicros Посмотреть сообщение
Но в приведенном примере тип float явно преобразуется в тип int а затем снова преобразуется в тип float но уже не явно(т.к у float приоритет выше чем у int). Поэтому я и написал что в этом нет смысла.
В общем я протестил его прогу со static_cast и без. Получил следующие результаты:

Данный вариант работает вроде как правильно -
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
 setlocale(LC_ALL, "rus");
 float sh, p, f;
 float newp;
 cout << "Введите число десятичных фунтов: ";
 cin >> newp;
 f = static_cast<int>(newp);
 sh = static_cast<int>((newp*240-f*240)/12);
 p = static_cast<int>((newp * 240 - f * 240)- sh*12);
 cout << "Эквивалентная сумма в старой форме записи: " << "J"<< f << "." << sh << "." << p << endl;
 system("pause");
 return 0;
}[/quote]


А если убрать static_cast - то результат будет уже неверным. У него строчка
Цитата Сообщение от Иван89 Посмотреть сообщение
float sh, p, f;
всё портит. Т. е. получается, что в его коде все числа изначально вещественные. И результат выполнения проги тоже будет вещественное число. Вот его код без явного преобразования -
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    float sh, p, f;
    float newp;
    cout << "Ââåäèòå ÷èñëî äåñÿòè÷Г*ûõ ГґГіГ*òîâ: ";
    cin >> newp;
    f = newp;
    sh =(newp*240-f*240)/12;
    p = (newp * 240 - f * 240)- sh*12;
    cout << "ГќГЄГўГЁГўГ*ëåГ*ГІГ*Г*Гї ñóììГ* Гў Г±ГІГ*ðîé ôîðìå Г§Г*ГЇГЁГ±ГЁ: " << "J"<< f << "." << sh << "." << p << endl;
    system("pause");
    return 0;
}


Я тупо взял - "убрал лишнее" и посмотрел что будет. Иван89 собственно сам мог бы так поступить. Я например частенько так делаю. К тому же здесь уже вроде как представлены возможные решения всех задач (правда могут быть мелкие косяки но куда ж без них). И да Иван89 задание нужно читать внимательнее там ведь есть пример операторов.

А вот если бы он использовал тип int sh, p, f; вместо float sh, p, f; тогда да - static_cast не нужен только ответ опять будет неверен.

Добавлено через 13 минут
Цитата Сообщение от Recrut_rf Посмотреть сообщение
А вот если бы он использовал тип int sh, p, f; вместо float sh, p, f; тогда да - static_cast не нужен только ответ опять будет неверен.
Ошибся - всё там верно
Окончательный исправленный вариант:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int sh, p, f;  // вместо float sh, p, f
    float newp;
    cout << "Введите число десятичных фунтов: ";
    cin >> newp;
    f = newp;
    sh =(newp*240-f*240)/12;    
    p = (newp * 240 - f * 240)- sh*12;
    cout << "Эквивалентная сумма в старой форме записи: " << "J"<< f << "." << sh << "." << p << endl;
    system("pause");
    return 0;
}


Добавлено через 20 минут
Цитата Сообщение от Иван89 Посмотреть сообщение
Глава 3 задание 2.
я использовал только две переменные:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <locale> // для setlocale()
#include <iomanip>
using namespace std;
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main()
 {
    setlocale (LC_ALL, "rus");
    float t;
    char ch;
    cout << "Нажмите 1 для перевода шкалы Цельсия в шкалу Фаренгейта.\n"
    << "2 для перевода шкалы Фаренгейта в шкалу Цельсия\n";
    cin >> ch;
    if (ch=='1')
    {
        cout << "Введите температуру по Цельсию:\n";
        cin >> t;
        cout << "Температура по Фаренгейту равна:" << (9.0/5.0)*t + 32.0;
    }
    if (ch=='2')
    {
        cout << "Введите температуру по Фаренгейту:\n";
        cin >> t;
        cout <<"Температура по Цельсию равна:" << 5.0/9.0*(t - 32.0);
        
    }
    system("pause");
    return 0;
}
 
Текущее время: 06:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru