Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18

Задачи из книги Прата (представить значения с помощью символических констант)

21.01.2013, 01:44. Показов 3889. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Только начал изучать книгу Прата "Язык программирования С++",столкнулся с такой задачей:
Напишите программу, которая запрашивает широту в градусах, минутах и
секундах, после чего отображает широту в десятичном формате. В одной минуте
60 угловых секунд, а в одном градусе 60 угловых минут; представьте эти
значения с помощью символических констант. Для каждого вводимого значения
должна использоваться отдельная переменная. Результат выполнения
программы должен выглядеть следующим образом:
Enter a latitude in degrees, minutes, and seconds:
First, enter the degrees: 37
Next, enter the minutes of arc: 51
Finally, enter the seconds of arc: 19
37 degrees, 51 minutes, 19 seconds = 37.8553 degrees

Ввожу все данные получается другое число совсем,не пойму в чем ошибка,подскажите пожалуйста.

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
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Enter a latitude in degrees, minutes, and seconds:\n";
    cout << "First, enter the degrees: ";
    int degrees;
    cin >> degrees;
    cout << "Next, enter the minutes of arc: ";
    double minutes;
    cin >> minutes;
    cout << "Finally,enter the seconds of arc: ";
    double seconds;
    cin >> seconds;
    const char from_sec_in_min = 60;
    const char from_min_in_deg = 60;
    double min1 = seconds / from_sec_in_min; 
    double deg1 = min1 / from_min_in_deg;
    double latitude = degrees + deg1;
    cout << "37 degrees, 51 minutes, 19 seconds = " << latitude << " degrees.";
    cin.get();
    cin.get();
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2013, 01:44
Ответы с готовыми решениями:

Упражнение из книги" Стивен Прата Си
Не могу понять как вывести то что требуется. Воспользуйтесь вложенными циклами, чтобы вывести следующую последовательность символов: A ...

Как написать программу из книги Стивен Прата? Заранее благодарю
Масса одной молекулы воды приблизительно составляет 3.0e-23 грамм. Кварта воды весит примерно 950 грамм. Напишите программу, которая...

Пример с книги Стивена Прата (Язык программирования с++). Расхождение в ответе
В книге один ответ. У меня другой выходит (На русский перевод, не обращайте внимание) Сама программа. #include &lt;iostream&gt; ...

13
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.01.2013, 02:06
Насколько я вижу, в градусы у вас переведены только секунды(переменная minutes нигде не используется).
1
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18
21.01.2013, 02:15  [ТС]
Спасибо,действительно в этом ошибка была. Все работает.
0
 Аватар для Hugra
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
24.07.2013, 00:25
Дошел до данной задачки, решил чуть по другому.
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
32
33
34
#include <iostream>
using namespace std;
 
int main()
{
    const double Sec_in_minute = 60;
    const double Minute_in_degrees = 60;
    system("chcp 1251");
 
    cout << "Enter a latitude  in degrees, minutes and seconds:"<<endl;
    cout << "First, enter the degrees: ";
    double degrees;
    cin >> degrees;
    cout << "Next, enter the minutes of arc: ";
    double minutes;
    cin >> minutes;
    cout << "Finally, enter the seconds of arc: ";
    double seconds;
    cin >> seconds;
 
    cout << degrees << " degrees, ";
    cout << minutes << " minutes, ";
    cout << seconds << " seconds = ";
 
    minutes = minutes + seconds / Sec_in_minute;
    degrees = degrees + minutes / Minute_in_degrees;
 
    cout << degrees << " degrees." << endl;
 
 
 
    system("PAUSE");
    return 0;
}
0
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 17
03.11.2013, 01:24
Тоже читаю эту книгу! Очень и очень классная книга! Все четко, по-порядку, интересно и с юмором!
Вот, я тоже на этой главе остановился и у мен есть вопрос: можно ли как-то проще написать код, без стольких переменных? Я думаю от меня в задании требовалось что-то другое и я не совсем понял алгоритм действий.
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
//Seconds.cpp -- программа переводит секунды в дни, часы, минуты и секунды
#include <iostream>
int main()
{
    using namespace std;
    cout << "напишите большое число, к примеру 31600000: ";
    long seconds;
    cin >> seconds;
    const int min_eq = 60;
    const int hour_eq = 60;
    const int day_eq = 24;
    int minutes = seconds / min_eq;
    int hours = minutes / hour_eq;
    int days = hours / day_eq;
    int sec_out = seconds % min_eq;
    int min_out = minutes % hour_eq;
    int hour_out = hours % day_eq;
    cout << seconds
         << "секунд = "
         << days
         << " дней, "
         << hour_out
         << " часов, "
         << min_out
         << " минут, "
         << sec_out
         <<" секунд.";
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 14:03
Присоединяюсь, книга очень нравится! Вот как я выполнил задачу:
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
#include <iostream>
using namespace std;
int main()
{
    cout << "Enter a latitude in degrees, minutes and seconds:" << endl;
    cout << "First, enter the degrees: ";
    double degrees;
    double minutes;
    double seconds;
    cin >> degrees;
    cout << "Next, enter the minutes of arc: ";
    cin >> minutes;
    cout << "Finally, enter the seconds of arc: ";
    cin >> seconds;
 
    const char minutes_per_degree = {60};
    const char seconds_per_minute = {60};
    
    double minAndSec = minutes + seconds/seconds_per_minute;
    double degAndMin = degrees + minutes/minutes_per_degree;
    
    cout << degrees << " degrees, " << minutes << " minutes, " << seconds << " seconds = " << degAndMin << " degrees.";
    
    cin.get();
    cin.get();
    return 0;
}
И у меня небольшой вопрос: зачем в условии просят представить значения с помощью символических констант? Зачем это нужно?
0
 Аватар для Limb0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 18:04
Roudique, Что бы обучать хорошому стилю программирования. Можно было написать везде 60, но если у тебя есть программа в которой используется одно и то самое константное значение много раз, лучше сделать символическую константу, тогда когда тебе понадобится изменить это число тебе нужно будет изменить только константу.
1
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 21:18
А почему именно символическую? Насколько я понял, то символическая константа - это именно константа типа char. Почему нельзя использовать константу того же, скажем, integer? Для экономии памяти?
0
 Аватар для Limb0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 22:03
Roudique, Символьная константа - это констатнта которая для своего представления использует идентификатор (имя). То есть const char m=50; и const int mm=60; это все символьные константы. Даже в самой книге в качестве примера есть такой код
const int Months=12; //Months - это символическая константа для 12
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 22:10
Limb0, спасибо за информацию я не привык ещё, чтобы на форумах незнакомые люди так доходчиво и внятно старались объяснить
0
 Аватар для Limb0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 22:14
Roudique, пожалуйста. Если нужна помощь по материалу с книги можете обращаться в личку (я редко мониторю темы на форуме) так как я сейчас также занимаюсь изучением C++ по даной книге (глава 12) поэтому если есть вопросы обращайтесь.
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
28.11.2013, 15:00
Цитата Сообщение от Foodfast Посмотреть сообщение
Вот, я тоже на этой главе остановился и у мен есть вопрос: можно ли как-то проще написать код, без стольких переменных? Я думаю от меня в задании требовалось что-то другое и я не совсем понял алгоритм действий.
Можно, я сделал с меньшим кол-вом переменных, но сложнее для прочтения:
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
#include <iostream>
using namespace std;
int main()
{
    setlocale (LC_ALL, "Russian");
    cout << "Введите количество секунд: ";
    long inputSeconds;
    cin >> inputSeconds;
    
    const int secInMin = 60;
    const int minInHour = 60;
    const int hoursInDay = 24;
    
    long outputSeconds = inputSeconds % secInMin;
    long outputMinutes = (inputSeconds / secInMin) % minInHour;
    long outputHours = ((inputSeconds / secInMin) / minInHour) % hoursInDay;
    long outputDays = ((inputSeconds / secInMin) / minInHour) / hoursInDay;
    
    
    cout << inputSeconds << " секунд равно " 
         << outputDays << " дней, " 
         << outputHours << " часов, " 
         << outputMinutes << " минут и " 
         << outputSeconds << " секунд!";
    
    cin.get();
    cin.get();
    return 0;
}
Результат будет такой же как и у твоей программы, но сама программа на 26 байт меньше
0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 3
04.03.2014, 11:49
Начал выполнять задачи из 5 главы. Ни как не могу справиться с 8 задачей. Не вижу как в решении нужно использовать strcmp (). Пытался решить не по условию, с помощью if, все равно не получается. Подскажите пожалуйста, как решить.

Условие:
Напишите программу, которая использует массив char и цикл для чтения но
одному слову за раз до тех пор, пока не будет введено слово done. Затем
программа должна сообщить количество введенных слов (исключая done).

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
32
33
34
35
#include <iostream>
#include <cstring>
 
int main()
{
    using namespace std;
    const int ArrSize = 200;
    char str[ArrSize];
    std::cout << "Вводите слова, для завершиния введите done:\n";
 
 
    for (int i = 0; i < ArrSize; ++i)
    {
        cin >> str[i];
        if(str[i] == 'd')
        {
            ++i;
            cin >> str[i];
            if(str[i] == 'o')
            {
                ++i;
                cin >> str[i];
                if(str[i] == 'n')
                {
                    ++i;
                    cin >> str[i];
                    if(str[i] == 'o')
                        break;
                }
            }
        }
    }
 
   return 0;
}
0
 Аватар для Hugra
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
04.03.2014, 12:09
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
#include <iostream>
#include <string>
 
 
int main()
{
using namespace std;
 
string word;
string matchword = "done";
int numwords=0;
 
cout << "Enter words (to stop, type the word done):\n";
cin >> word;
 
while(word != matchword)
{
    cin >> word;
    numwords++;
};
 
cout << "\nYou entered a total of " << numwords << " words.";
 
cin.get();
cin.get();
return 0;
}
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
using namespace std;
const int STR_LIM = 50;
int main()
{
    system("chcp 1251");
    system("title Ch.5 Ex.8");
 
    char word[STR_LIM];
    int count = 0;
    
    cout << "Enter words (to stop, type the word done):\n";
    
    while (cin >> word && strcmp("done", word))
        ++count;
 
    cout << "You entered a total of " << count << " words.\n";
 
 
    system("PAUSE");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2014, 12:09
Помогаю со студенческими работами здесь

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

Вывести слово с помощью символьных констант
помогите написать программу: Вывести слово с помощью символьных констант.

Задание размеров формы с помощью констант (C++)
Я хочу задать размер формы и расположение комнонентов на ней с помощью предопределенных мной констант. Что-то типа такого: const...

Ввод данных в массив с помощью типизированных констант
Каким образом можно ввести данные в массив с помощью типизированных констант ? Добавлено через 12 минут Собственно само задание

Ввести массив W размерностью 4*2 из целых чисел с помощью типизированных констант
Ввести массив W размерностью 4*2 из целых чисел с помощью типизированных констант,массив U из 5 вещественных чисел из файла и массив V из ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru