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

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

21.01.2013, 01:44. Показов 3950. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru