1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18
1

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

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

Author24 — интернет-сервис помощи студентам
Только начал изучать книгу Прата "Язык программирования С++",столкнулся с такой задачей:
Напишите программу, которая запрашивает широту в градусах, минутах и
секундах, после чего отображает широту в десятичном формате. В одной минуте
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2013, 01:44
Ответы с готовыми решениями:

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

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

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

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

13
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.01.2013, 02:06 2
Насколько я вижу, в градусы у вас переведены только секунды(переменная minutes нигде не используется).
1
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18
21.01.2013, 02:15  [ТС] 3
Спасибо,действительно в этом ошибка была. Все работает.
0
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
24.07.2013, 00:25 4
Дошел до данной задачки, решил чуть по другому.
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 5
Тоже читаю эту книгу! Очень и очень классная книга! Все четко, по-порядку, интересно и с юмором!
Вот, я тоже на этой главе остановился и у мен есть вопрос: можно ли как-то проще написать код, без стольких переменных? Я думаю от меня в задании требовалось что-то другое и я не совсем понял алгоритм действий.
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 6
Присоединяюсь, книга очень нравится! Вот как я выполнил задачу:
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
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 18:04 7
Roudique, Что бы обучать хорошому стилю программирования. Можно было написать везде 60, но если у тебя есть программа в которой используется одно и то самое константное значение много раз, лучше сделать символическую константу, тогда когда тебе понадобится изменить это число тебе нужно будет изменить только константу.
1
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 21:18 8
А почему именно символическую? Насколько я понял, то символическая константа - это именно константа типа char. Почему нельзя использовать константу того же, скажем, integer? Для экономии памяти?
0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 22:03 9
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 10
Limb0, спасибо за информацию я не привык ещё, чтобы на форумах незнакомые люди так доходчиво и внятно старались объяснить
0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 22:14 11
Roudique, пожалуйста. Если нужна помощь по материалу с книги можете обращаться в личку (я редко мониторю темы на форуме) так как я сейчас также занимаюсь изучением C++ по даной книге (глава 12) поэтому если есть вопросы обращайтесь.
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
28.11.2013, 15:00 12
Цитата Сообщение от 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 13
Начал выполнять задачи из 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
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
04.03.2014, 12:09 14
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
04.03.2014, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2014, 12:09
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru