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

Написать модульную программу расчета и печати оплаты за парковку - C++

Восстановить пароль Регистрация
 
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 19:25     Написать модульную программу расчета и печати оплаты за парковку #1
Здравствуйте! Изучаю функции...написал такой код на задачу, как его можно упростить за счет возможностей языка именно с помощью функцияй, никаких классов ничего. Ну как-бы не знаю на первых порах вот так написал, и он какой-то как дилетанство какое-то, понимаю я сам дилетант еще, что нужно учить и учить, но как можно еще его представить?...просто как подсказку дайте, даже ненадо его представлять тут, ну как-то намекните что можно с ним сделать, чтоб он был более "взрослым" ну и ошибки может какие есть?
Условие задачи:
За стоянку до 3 часов парковочный гараж запрашивает минимум 2.00 долларов. В случае стоянки более 3 часов нараж дополнительно запрашивает 0.50 долларов. за каждый полный или неполный час сверх трех часов. Максимальная плата за сутки составляет 10.00.Допустим что никто не паркуется более чем на сутки за раз. Напишите программу расчета и печати оплаты за парковку для каждого из трех клиентов.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
double calculateCharges(double);
//--------------------------------------------------
int main()
{
    setlocale(LC_ALL, "Russian");
    system("mode con cols=100 lines=60");
//--------------------------------------------------
    double Longtermparking1=0.00;
    double Longtermparking2=0.00;
    double Longtermparking3=0.00;
//--------------------------------------------------
    std::cout<<"Клиент №1: ";
    while(std::cin>>Longtermparking1){
    std::cout<<"Клиент №2: ";
    std::cin>>Longtermparking2;
    std::cout<<"Клиент №3: ";
    std::cin>>Longtermparking3;
    
    std::cout<<"Автомобиль";
    std::cout<<'\t';
    std::cout<<"Часы";
    std::cout<<'\t';
    std::cout<<"Плата"<<std::endl;
    std::cout<<"1";
    std::cout<<'\t'<<'\t';
    std::cout<<Longtermparking1<<'\t';
    std::cout<<calculateCharges(Longtermparking1)<<std::endl;
    
    std::cout<<"2";
    std::cout<<'\t'<<'\t';
    std::cout<<Longtermparking2<<'\t';
    std::cout<<calculateCharges(Longtermparking2)<<std::endl;
    
    std::cout<<"3";
    std::cout<<'\t'<<'\t';
    std::cout<<Longtermparking3<<'\t';
    std::cout<<calculateCharges(Longtermparking3)<<std::endl;
    std::cout<<"Клиент №1: ";}
//----------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------
double calculateCharges(double longparking)
{
    double r=0.00;
    if(longparking<=3.00 && longparking>=1)
    r+=2.00;
    if(longparking>3.00)
    r=((longparking-3.00)*0.50+2.00);
    if(r>10.00)
    r=10.00;
    std::cout.setf(std::ios::fixed);
    std::cout.precision(2);
    return r;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 20:27     Написать модульную программу расчета и печати оплаты за парковку #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//Самое главное - отступы :)
double calculateCharges(double);
//--------------------------------------------------
int main()
{
    setlocale(LC_ALL, "Russian");
    system("mode con cols=100 lines=60");
//--------------------------------------------------
    double Longtermparking1 = 0.00;
    double Longtermparking2 = 0.00;
    double Longtermparking3 = 0.00;
//--------------------------------------------------
//А не лучше ли спросить окличество автомобилей на парковке и для этого количества посчитать искомое?
    std::cout << "Клиент №1: ";
    while (std::cin >> Longtermparking1)
    {
        std::cout << "Клиент №2: ";
        std::cin >> Longtermparking2;
        std::cout << "Клиент №3: ";
        std::cin >> Longtermparking3;
 
        std::cout << "Автомобиль" << '\t' << "Часы" << '\t' << "Плата"
                << std::endl;
 
        // Бесполезную копипасту/оформление лучше писать короче, т.е. в "одну" строку.
        // А ещё лучше "спросить окличество автомобилей"
        std::cout << "1" << '\t' << '\t' << Longtermparking1 << '\t'
                << calculateCharges(Longtermparking1) << std::endl;
 
        // Бесполезную копипасту/оформление лучше писать короче, т.е. в "одну" строку.
        // А ещё лучше "спросить окличество автомобилей"
        std::cout << "2" << '\t' << '\t' << Longtermparking2 << '\t'
                << calculateCharges(Longtermparking2) << std::endl;
 
        // Бесполезную копипасту/оформление лучше писать короче, т.е. в "одну" строку.
        // А ещё лучше "спросить окличество автомобилей"
        std::cout << "3" << '\t' << '\t' << Longtermparking3 << '\t'
                << calculateCharges(Longtermparking3) << std::endl;
 
        std::cout << "Клиент №1: ";
    }
//----------------------------------------------------------------
    return 0;
}
//----------------------------------------------------------------
double calculateCharges(double longparking)
{
    double r = 0.00;
    if (longparking <= 3.00 && longparking >= 1)
        r += 2.00;
    if (longparking > 3.00)
        r = ((longparking - 3.00) * 0.50 + 2.00);
    if (r > 10.00)
        r = 10.00;
// побочные эффекты в функциях лучше не выпускать наружу но сейчас мы так не можем.
//  auto oldFlag = std::cout.flags();
    std::cout.setf(std::ios::fixed);
    std::cout.precision(2);
// побочные эффекты в функциях лучше не выпускать наружу но сейчас мы так не можем.
//  std::cout.flags(oldFlag);
    return r;
}
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 20:39  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #3
Спасибо за советы! А что вы имеет ввиду насчет спросить кол-во автомобилей? там просто по условию отдельно для каждого клиента нужно писать время парковки. ну а по модульности? И еще мне интересно как написать так, чтоб вводить кол-во часов в консоли сразу в табличку, ну чтоб не переходить на новую строку при каждом вводе числа, а сразу в ту табличку где и вывод идет, чтоб убрать ненужный хлам типа введите для клиент №1 и так далее...
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 20:44     Написать модульную программу расчета и печати оплаты за парковку #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вынести в функции:
void printHeader();
void printCar(int carId, double Longtermparking);
В функциях соответственно и переходить на новую строку и т.д.
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 20:46  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #5
Спасибо! А как , чтоб при вводе числа и нажатии ентер результат печатался в этой же строке?
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 20:49     Написать модульную программу расчета и печати оплаты за парковку #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от vikiroy Посмотреть сообщение
А как , чтоб при вводе числа и нажатии ентер результат печатался в этой же строке?
Я считаю что никак, и вам тоже советую так считать
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 20:56  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #7
Спасибо за ответы! Но вы говорите вам тоже советую так считать, значит наверное можно как-то, но я типа не знаком с этими вещами?

Добавлено через 2 минуты
Я чего спрашиваю, просто по условию написано как должно все выглядеть и табличка такая как у меня на выводе я сделал, но там как-то двояко так поставлено условие, что я подумал не должен ли я как-то сделать так чтоб вводить данные в табличку эту, потом там сразу после ввода печатается результат в этой же строке, и переход на новую для следующего ввода, наверное я просто так подумал себе, а так не стоит по условию?
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 21:06     Написать модульную программу расчета и печати оплаты за парковку #8
Цитата Сообщение от vikiroy Посмотреть сообщение
Но вы говорите вам тоже советую так считать, значит наверное можно как-то, но я типа не знаком с этими вещами?
Это платформенно зависимые штуки которые я не знаю, и я очень сомневаюсь что в задании это требовалось.
У вас всё правильно.
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 21:12  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #9
Благодарю! Спасибо!

Добавлено через 4 минуты
А можно еще вопрос? Чтоб ввести несколько чисел и к примеру над каждым провести операцию...но сделать так чтоб введенные числа были в одной переменной, а результат выводился в самом конце как-будто это несколько переменных, это надо массивы и вектора учить или с помощью функций там всяких шаблонов можно уже делать?
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 21:28     Написать модульную программу расчета и печати оплаты за парковку #10
vikiroy, Не экономьте переменные.
Можно вектора, можно массивы, можно классы.
C++
1
2
3
4
const std::size_t N = 3;
double arr[N];
std::cin >> arr[0] >> arr[1] >> arr[2];
std::cout << arr[0] << arr[1] << arr[2];
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 21:36  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #11
Спасибо! я просто еще не учил классы и массивы и вектора! а по-поводу экономии переменных учту! Просто я вот как-бы вижу что есть шаблоны и перегрузка функций, обращение к функции или к ее аргументу по по ссылке, и кажется что в этих вещах тоже где-то есть решение на этот вопрос, может ошибаюсь конечно?!
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 21:46     Написать модульную программу расчета и печати оплаты за парковку #12
Цитата Сообщение от vikiroy Посмотреть сообщение
Просто я вот как-бы вижу что есть шаблоны и перегрузка функций, обращение к функции или к ее аргументу по по ссылке, и кажется что в этих вещах тоже где-то есть решение на этот вопрос, может ошибаюсь конечно?!
Придумал , рекурсией можно, только вывод будет обратный(начиная с третьей машины). И преподу понравится

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void foo(int depth)
{
    double Longtermparking;
    std::cin >> Longtermparking;
    if (depth > 1)
    {
        foo(depth - 1);
    }
    std::cout << "посчитать результат и вывести:" << Longtermparking << std::endl;
}
 
int main()
{
    foo(3);
    return 0;
}
Другого варианта нет, да и этот извращение )
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 21:55  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #13
Спасибо, точно есть еще рекурсия! Препода у меня нет к сожалению) чисто интересно было, как можно так сделать, читал что очень богат язык своей выразительностью, просто хочется знать все детали! Спасибо Вам!
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
20.01.2016, 21:59     Написать модульную программу расчета и печати оплаты за парковку #14
Цитата Сообщение от vikiroy Посмотреть сообщение
Препода у меня нет к сожалению)
Ну тогда можно ещё рекурсию в компайлтайме провернуть на шаблонах. Но это будет таже рекурсия только извращенность в квадрат возведётся, потом попробуйте сделать, но потом.
Удачи.
Цитата Сообщение от vikiroy Посмотреть сообщение
чисто интересно было, как можно так сделать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2016, 22:01     Написать модульную программу расчета и печати оплаты за парковку
Еще ссылки по теме:

Написать программу для печати нескольких файлов C++
Написать блок-схему и программу расчета функции C++
C++ Написать программу для расчета значения функции в по введенному значению х

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

Или воспользуйтесь поиском по форуму:
vikiroy
13 / 5 / 0
Регистрация: 30.11.2015
Сообщений: 170
20.01.2016, 22:01  [ТС]     Написать модульную программу расчета и печати оплаты за парковку #15
СПАСИБО!
Yandex
Объявления
20.01.2016, 22:01     Написать модульную программу расчета и печати оплаты за парковку
Ответ Создать тему
Опции темы

Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru