Получить ведомость уценки товара, которая включает в себе наименование товара, срок хранения - 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;
}

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

  1. Включаются заголовочные файлы stdio.h и stdlib.h
  2. Объявляется структура INFO, которая содержит поля Name, storage_life, price_before и price_after
  3. Определяется функция void clrscr(void), которая очищает экран
  4. Определяется функция void Print_Database(INFO* DB, unsigned int N), которая печатает данные из базы данных
  5. В функции main() определяется переменная N типа unsigned int, в которую с помощью функции scanf() считывается количество товаров на складе
  6. Выделяется память под массив структур INFO с помощью функции malloc()
  7. В цикле while происходит заполнение базы данных:
    • Вызывается функция clrscr() для очистки экрана
    • Выводится сообщение с номером товара
    • С помощью функции scanf() считывается наименование товара и сохраняется в поле Name структуры INFO
    • Считывается срок хранения товара в месяцах и сохраняется в поле storage_life
    • Считывается цена товара и сохраняется в поле price_before
    • Если срок хранения больше или равен 10 месяцам, то цена после уценки сохраняется в поле price_after как половина от price_before
    • Если срок хранения меньше 10 месяцев, но больше или равен 6 месяцам, то цена после уценки сохраняется в поле price_after как 1.5 от price_before
  8. Вызывается функция Print_Database() для печати данных из базы данных
  9. Выделяется память с помощью функции free()
  10. Возвращается 0, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 3.786 из 5
Похожие ответы