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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Crow52
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18
#1

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

21.01.2013, 01:44. Просмотров 2021. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 01:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задачи из книги Прата (представить значения с помощью символических констант) (C++):

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

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

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

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

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

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

13
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
21.01.2013, 02:06 #2
Насколько я вижу, в градусы у вас переведены только секунды(переменная minutes нигде не используется).
1
Crow52
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 18
21.01.2013, 02:15  [ТС] #3
Спасибо,действительно в этом ошибка была. Все работает.
0
Hugra
48 / 48 / 1
Регистрация: 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
Foodfast
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
Roudique
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
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 18:04 #7
Roudique, Что бы обучать хорошому стилю программирования. Можно было написать везде 60, но если у тебя есть программа в которой используется одно и то самое константное значение много раз, лучше сделать символическую константу, тогда когда тебе понадобится изменить это число тебе нужно будет изменить только константу.
1
Roudique
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 21:18 #8
А почему именно символическую? Насколько я понял, то символическая константа - это именно константа типа char. Почему нельзя использовать константу того же, скажем, integer? Для экономии памяти?
0
Limb0
19 / 19 / 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
Roudique
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
27.11.2013, 22:10 #10
Limb0, спасибо за информацию я не привык ещё, чтобы на форумах незнакомые люди так доходчиво и внятно старались объяснить
0
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
27.11.2013, 22:14 #11
Roudique, пожалуйста. Если нужна помощь по материалу с книги можете обращаться в личку (я редко мониторю темы на форуме) так как я сейчас также занимаюсь изучением C++ по даной книге (глава 12) поэтому если есть вопросы обращайтесь.
0
Roudique
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
halmikar
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
Hugra
48 / 48 / 1
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 12:09
Привет! Вот еще темы с ответами:

Значения зарезервированных #PB_ констант PureBasic - Pure Basic
Полный или может не полный список всех зарезервированных #PB_ констант и их значения: #PB_2DDrawing_AllChannels = 256 ...

Не могу найти, где Wordpress устанавливаются значения для констант - WordPress
Сразу скажу, я не спец в Wordpress, меня попросили помочь, но что-то не получается. Ниже код, где используются константы...

Даны n чисел и функция f, принимающая значения 1...m. Требуется представить числа в таком порядке, чтобы значения функции f не убывали. Использовать м - Turbo Pascal
Даны n чисел и функция f, принимающая значения 1...m. Требуется представить числа в таком порядке, чтобы значения функции f не убывали....

Значения констант или где скачать полную версию WinAPI32.txt? - Visual Basic
Дело в том, что в помощи я читаю о константе, а в Api Viewer'е ее нет. Вот эти константы: SPI_GETACTIVEWINDOWTRACKING ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru