Структура "Товар". Как работает программа? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
struct Tovar // имя структуры
{
    int R, K;
};
 
int main()
{
    long double P;
    int Rubl, Kop;
    struct Tovar T1, T2; // объявил переменную-структуру

    P = 34.53;
    T1.R = (int)P;
    T1.K = (int)((P - (int)P) * 100);
    // Аналогично для товара 2
    P = 6.25;
    T2.R = (int)P;
    T2.K = (int)((P - (int)P) * 100);
 
    Rubl = T1.R + T2.R;
    Kop = T1.K + T2.K;
    if (Kop >= 100)
    {
        ++Rubl;
        Kop -= 100;
    };
    printf("Суммарная стоимость товаров %i рублей %i копеек", Rubl, Kop);
 
    // Тут надо ввести сколько заплатили - юзаем опять переменную Р
    P = 50.0;
    P -= (Rubl + (double)Kop / 100);
    if (P < 0)
        printf("Какая сдача? Нам не доплатили!");
    else if (P == 0)
        printf("Сдачи нет!");
    else
    {
        // Заюзаем для нахождения сдачи одну и наших переменных типа нашей структуры - она все равно нам не нужна уже
        T1.R = (int)P;
        T1.K = (int)((P - (int)P) * 100);
        printf("\nСдача: %i рублей %i копеек", T1.R, T1.K);
    };
    system("pause");
    return 0;
}

Решение задачи: «Структура "Товар". Как работает программа?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
struct Tovar // объявляем структуру
{
    int R, K; // объявляем два элемента структуры типа int
};
 
int main()
{
    long double P;//объявляем переменную типа long double 
    int Rubl, Kop;//объявляем 2 переменные типа int
    struct Tovar T1, T2; // объявил переменную-структуру
 
    
    P = 34.53;//присваиваем переменной Р значение 34.53
    T1.R = (int)P;//обращаемся к элементу структуры R и присваиваем ему значение типа int т.е. берём интовую // часть данной переменной т.е. из 34.53 получаем 34
    T1.K = (int)((P - (int)P) * 100);//тут делаем следующее (34.53 - 34)*100 = 53
    // Аналогично для товара 2(ну да тут всё то же самое как с первым товаром товаром) 
    P = 6.25;
    T2.R = (int)P;
    T2.K = (int)((P - (int)P) * 100);
 
    Rubl = T1.R + T2.R;//складываем количество рублей 1 и 2 товаров
    Kop = T1.K + T2.K;//складываем количество копеек 1 и 2 товаров
    if (Kop >= 100)//если в сумме количество копеек >100 то количество рублей увеличивает на 1 и от суммы 
    {                      //копеек отнимаем 100(правда данный пример работает исправно только для 2-ух товаров
        ++Rubl;        //если бы было 3 товара(например стоимостью 2.80, 2.90 и 2.50) то тогда бы надо было к  
        Kop -= 100; // рублям добавлять 2 а от копеек отнимать 200
    };
    printf("Суммарная стоимость товаров %i рублей %i копеек", Rubl, Kop);
 
    // Тут надо ввести сколько заплатили - юзаем опять переменную Р
    P = 50.0;//допустим заплатили 50 рублей
    P -= (Rubl + (double)Kop / 100);// Р = 50 - (40 + ((25+78)/100)) находим разницу т.е. сдачу
    if (P < 0)
        printf("Какая сдача? Нам не доплатили!");
    else if (P == 0)
        printf("Сдачи нет!");
    else
    {
        // Заюзаем для нахождения сдачи одну и наших переменных типа нашей структуры - она все равно нам не нужна уже
        T1.R = (int)P;
        T1.K = (int)((P - (int)P) * 100);
        printf("\nСдача: %i рублей %i копеек", T1.R, T1.K);
    };
    system("pause");
    return 0;
}

Объяснение кода листинга программы

  1. Объявляется структура Товар с двумя элементами типа int - R и K.
  2. В переменной типа long double P присваивается значение 34.53.
  3. Обращение к элементу структуры T1.R и присвоение ему значения типа int, равного интовой части P, то есть 34.
  4. Обращение к элементу структуры T1.K и присвоение ему значения, равного (P - (int)P) * 100, то есть 53.
  5. Аналогичные действия для товара 2: P = 6.25, T2.R = (int)P, T2.K = (int)((P - (int)P) * 100).
  6. Суммарное количество рублей товаров 1 и 2 присваивается переменной Rubl, а суммарное количество копеек - переменной Kop.
  7. Если количество копеек больше или равно 100, то количество рублей увеличивается на 1, а от суммы копеек отнимается 100.
  8. Выводится сообщение о суммарной стоимости товаров.
  9. Вводится сумма, которую покупатель заплатил.
  10. Вычисляется сдача как разница между суммой, которую покупатель заплатил, и суммой денег, потраченных на товары.
  11. Если сдача отрицательная, выводится сообщение Какая сдача? Нам не доплатили!.
  12. Если сдача равна нулю, выводится сообщение Сдачи нет!.
  13. Если сдача не равна нулю, выводится сообщение о сдаче.
  14. Программа завершается.

Оцени полезность:

15   голосов , оценка 4.267 из 5