Получить ведомость уценки товара, которая включает в себе наименование товара, срок хранения - C (СИ)
Формулировка задачи:
Склад производит уценку продукции. Если продукция хранится дольше 10 месяцев, то она уценивается в 2 раза, а если срок хранения превысил 6 месяцев, но не достиг 10 месяцев, то в 1,5 раза. Получить ведомость уценки товара,которая включает в себе наименование товара, срок хранения, цена товара до уценки и цена товара после уценки
Решение задачи: «Получить ведомость уценки товара, которая включает в себе наименование товара, срок хранения»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef struct INFO { char Name[32]; unsigned int storage_life, price_before, price_after; } INFO; void clrscr(void) { //char a[80]; printf("\033[2J"); // Clear the entire screen. */ printf("\033[0;0f"); // Move cursor to the top left hand corner } void Print_Database(INFO* DB, unsigned int N) { register unsigned int i=0; while(i<N) { printf("%s %s %u %s %u %s %u \n",DB[i].Name," ",DB[i].storage_life," ",DB[i].price_before," ",DB[i].price_after); i++; } } int main() { unsigned int N; register unsigned short i = 0; printf("Введите количество одиниц продукции которая содержиться на складе: "); scanf("%u",&N); INFO* Database = (INFO*)malloc(N*sizeof(INFO)); printf("\n\n ::: Заполните базу ::: \n"); while(i<N) { clrscr(); printf("\n %s %u \n","Товар №",i+1); printf("\n Введите найменования товара: "); scanf("%s",Database[i].Name); printf("\n Введите срок хранения в месяцях: "); scanf("%u",&Database[i].storage_life); printf("\n Введите цену на товар: "); scanf("%u",&Database[i].price_before); if(Database[i].storage_life >= 10) Database[i].price_after = Database[i].price_before/2; else if((Database[i].storage_life<10)&&(Database[i].storage_life>=6)) Database[i].price_after = Database[i].price_before/1.5; i++; } Print_Database(Database,N); free(Database); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Объявляется структура INFO, которая содержит поля Name, storage_life, price_before и price_after
- Определяется функция void clrscr(void), которая очищает экран
- Определяется функция void Print_Database(INFO* DB, unsigned int N), которая печатает данные из базы данных
- В функции main() определяется переменная N типа unsigned int, в которую с помощью функции scanf() считывается количество товаров на складе
- Выделяется память под массив структур INFO с помощью функции malloc()
- В цикле while происходит заполнение базы данных:
- Вызывается функция clrscr() для очистки экрана
- Выводится сообщение с номером товара
- С помощью функции scanf() считывается наименование товара и сохраняется в поле Name структуры INFO
- Считывается срок хранения товара в месяцах и сохраняется в поле storage_life
- Считывается цена товара и сохраняется в поле price_before
- Если срок хранения больше или равен 10 месяцам, то цена после уценки сохраняется в поле price_after как половина от price_before
- Если срок хранения меньше 10 месяцев, но больше или равен 6 месяцам, то цена после уценки сохраняется в поле price_after как 1.5 от price_before
- Вызывается функция Print_Database() для печати данных из базы данных
- Выделяется память с помощью функции free()
- Возвращается 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д