close

Вход

Забыли?

вход по аккаунту

?

Задача 3 (6)

код для вставкиСкачать
Задача №3.
Условие задачи.
Создать список лекарственных препаратов, находящихся в аптеке, (количество наименований препаратов запрашивается с клавиатуры), содержащий: название препарата, цену и количество в наличии. Вывести этот список в виде таблицы. По введенному количеству в наличии (указать диапазон - нижнюю границу и верхнюю) получить список препаратов и их цену. Если таких нет, то вывести сообщение об этом.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: структурный тип nal, состоящий из трех полей:
- символьная строка name для ввода наименования препарата,
- целочисленное col для ввода оставшегося количества лекарства,
- число с плавающей запятой price для вода цены препарата.
массив lec типа nal из 50 элементов.
переменная целочисленная m - для ввода количества наименований лекарств, целочисленная переменная flag=0 -для контроля за наличием препаратов, количество которых входит в некоторый определенный промежуток цен;
min, max - целочисленные для ввода границ количественного интервала.
Результаты: Список препаратов, количество которых удовлетворяет некоторому диапазону, выведенный на экран.
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ).
3. Первоначально составим укрупненную схему, а затем подробную для блока 7.
Укрупненная схема
1. Подключение всех необходимых заголовочных файлов. 2. Локальное описания переменных struct nal lec[50]; int m,flag=0;int min,max;
3. Вводим количество наименований препаратов в переменную m.Вводим в цикле для каждого препарата наименование, цену и остаток. for(int i=0;i<m;i++)
{cout<<"Name preparata"<<i+1<<"-> ";
cin>>lec[i].name;
cout<<"Price "<<i+1<<"-> ";
cin>>lec[i].price;
cout<<"Kol-vo ostalos"<<i+1<<"-> ";
cin>>lec[i].col;
}
4. В цикле выводим в виде списка все наименования лекарственных препаратов.
5. Вводим интересующие количественные границы в переменные min и max.
6. В цикле перебираем наименования лекарственных препаратов, определяя те из них, которые входят в ценовые границы. Если найдется хотя бы один, выставляем flag=1 и делаем break.
7. Выполняем проверку флага. Если его значение равно 1, то выводим списком в цикле наименования лекарственных препаратов, у которых поле col находится внутри введенных границ, включая границы.
VII. - рабочие формулы - нет, ничего не вычисляем
- закон изменения аргументов (переменных): i=i+1
- начальных значения аргументов (переменных): i=0; min=0, max=0, flag=0;
- условие окончания цикла: i<m - Проверка флага: если его значение равно 1 if(flag==1), то выводим список препаратов и их количество в наличии, количество которых удовлетворяет заданному диапазону. Необходимо помнить, что каждый структурный элемент массива имеет свои поля char name[20]; double price; int col. Доступ к ним осуществляется при помощи операции '.'-расширение области видимости.
Вывод нужных препаратов:
if(flag==1)
{
cout<<"\nPRICE - DIAPOZON:\n";
cout<<"\n"<<setw(20)<<"NAME PREPARATOV"<<setw(12)<<"PRICE"<<setw(18)<<"KOLICHESTVO\n";
for(i=0;i<m;i++)
if(lec[i].price>=min && lec[i].price<=max)
cout<<setw(2)<<i+1<<")"<<setw(17)<<lec[i].name<<setw(12)<<lec[i].price
<<setw(16)<<lec[i].col<<"\n";
}
если значение flag равно 0, то значит таких препаратов нет. Сообщаем об этом на экран if(flag==0) cout<<"\nNO preparatov \n";
Программа, реализующая данный алгоритм
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct nal
{
char name[20];
double price;
int col;
};
void main()
{
clrscr();
cout<<"Zadacha #3:\n\n";
struct nal lec[50];
int m,flag=0;
int min,max;
cout<<"\nVvedi kol-vo preporatov ->";
cin>>m;
for(int i=0;i<m;i++)
{cout<<"Name preparata"<<i+1<<"-> ";
gets(lec[i].name);
cout<<"Price "<<i+1<<"-> ";
cin>>lec[i].price;
cout<<"Kol-vo ostalos"<<i+1<<"-> ";
cin>>lec[i].col;
}
cout<<"\n\nPolnii perechen preparatov:\n";
cout<<"\n"<<setw(20)<<"NAME PREPARATOV"<<setw(12)<<"PRICE"<<setw(18)<<"KOLICHESTVO\n";
for(i=0;i<m;i++)
cout<<setw(2)<<i+1<<")"<<setw(17)<<lec[i].name<<setw(12)<<lec[i].price<<setw(16)<<lec[i].col<<"\n";
cout<<"\nVvedi min & max kolichestva ->";
cin>>min>>max;
for(i=0;i<m;i++)
if(lec[i].col>=min && lec[i].col<=max)
{
flag=1;break;
}
if(flag==1)
{
cout<<"\nKOLICHESTVO - DIAPOZON:\n";
cout<<"\n"<<setw(20)<<"NAME PREPARATOV"<<setw(12)<<"PRICE"<<setw(18)<<"KOLICHESTVO\n";
for(i=0;i<m;i++)
if(lec[i].col>=min && lec[i].col<=max)
cout<<setw(2)<<i+1<<")"<<setw(17)<<lec[i].name<<setw(12)<<lec[i].price<<setw(16)<<lec[i].col<<"\n";
}
if(flag==0)
cout<<"\ nNO preparatov \n";
getch();
}
void main()
{
int a;
begin:
clrscr();
cout<<"\n\n\n\n\n\n\n\n KURSOVAIA RABOTA";
cout<<"\n\n Ivanov I.I. & Petrov P.P.";
cout<<"\n\n gruppa TP-32";
cout<<"\n\nMenu";
cout<<"\n1. Zadacha";
cout<<"\n2. Zadacha";
cout<<"\n3. Zadacha";
cout<<"\n4. Return";
cout<<"\n\nVvedi nomer zadachi ";
cin>>a;
if(a==1) {zad1(); goto begin;}
if(a==2) {zad2(); goto begin;}
if(a==3) {zad3(); goto begin;}
if(a==4) exit(0);
}
Документ
Категория
Рефераты
Просмотров
27
Размер файла
22 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа