Структура "Товар". Как работает программа? - 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;
}
Объяснение кода листинга программы
- Объявляется структура
Товарс двумя элементами типа int - R и K. - В переменной типа long double P присваивается значение 34.53.
- Обращение к элементу структуры T1.R и присвоение ему значения типа int, равного интовой части P, то есть 34.
- Обращение к элементу структуры T1.K и присвоение ему значения, равного (P - (int)P) * 100, то есть 53.
- Аналогичные действия для товара 2: P = 6.25, T2.R = (int)P, T2.K = (int)((P - (int)P) * 100).
- Суммарное количество рублей товаров 1 и 2 присваивается переменной Rubl, а суммарное количество копеек - переменной Kop.
- Если количество копеек больше или равно 100, то количество рублей увеличивается на 1, а от суммы копеек отнимается 100.
- Выводится сообщение о суммарной стоимости товаров.
- Вводится сумма, которую покупатель заплатил.
- Вычисляется сдача как разница между суммой, которую покупатель заплатил, и суммой денег, потраченных на товары.
- Если сдача отрицательная, выводится сообщение
Какая сдача? Нам не доплатили!. - Если сдача равна нулю, выводится сообщение
Сдачи нет!. - Если сдача не равна нулю, выводится сообщение о сдаче.
- Программа завершается.