Создать структуру, описывающую товар. Данные структуры: наименование товара, цена
товара, дата изготовления, срок гарантии. Создать функции: ввод данных, вывод данных,
расчет дней до окончания гарантии.
C/C++
Помогите написать код на С++
#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>
using namespace std;
const int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
struct product
{
string name; // наименование
float prix; // цена
string date; // дата изготовления
int srok; // срок гарантии в днях
};
// високосный ли год
bool is_vis(int year)
{
return ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));
}
// проверка даты
bool verify_date(const string date)
{
int len_days = 0;
int len_moths = 0;
int len_years = 0;
int day,moth,year;
string sday,smoth,syear;
int i = 0;
// считываем день месяца
while(i < date.length() && date[i] != '.')
{
if(isdigit(date[i]))
{
sday += date[i];
len_days++;
}
i++;
}
if(len_days < 1 || len_days > 2)
{
cerr << "Неверное количество дней в дате" << endl;
return false;
}
day = stoi(sday);
if(date[i] == '.') i++;
else
{
cerr << "Неверный формат даты" << endl;
return false;
}
// теперь считываем месяц
while(i < date.length() && date[i] != '.')
{
if(isdigit(date[i]))
{
smoth += date[i];
len_moths++;
}
i++;
}
if(len_moths < 1 || len_moths > 2)
{
cerr << "Неверный месяц" << endl;
return false;
}
moth = stoi(smoth);
if(moth < 1 || moth > 12)
{
cerr << "Нет такого месяца" << endl;
return false;
}
// теперь считываем год
while(i < date.length())
{
if(isdigit(date[i]))
{
syear += date[i];
len_years++;
}
i++;
}
if(len_years < 1 || len_years > 4)
{
cerr << "Неверный год" << endl;
return false;
}
year = stoi(syear);
bool visokos = is_vis(year);
if(moth == 2)
{
if(visokos)
{
if(day > m[moth] + 1 || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
else
{
if(day > m[moth] || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
}
else
{
if(day > m[moth] || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
return true;
}
// ввод данных
void insert(product * p, const int size)
{
for(int x = 0; x < size; x++)
{
cout << "\tТовар № " << x+1 << '.' << endl;
cout << "Наименование товара: ";
cin >> p[x].name;
cout << "Цена товара: ";
cin >> p[x].prix;
do
{
cout << "Дата изготовления: ";
cin >> p[x].date;
} while( ! verify_date(p[x].date) );
do
{
cout << "Срок годности в днях: ";
cin >> p[x].srok;
} while(p[x].srok < 1);
}
}
// расчёт дней до окончания ганантии
int garant(const string date_now, const product * p, const int n)
{
int rc = 0;
int day_n, day_p;
int moth_n, moth_p;
int year_n, year_p;
string sday_n, sday_p;
string smoth_n, smoth_p;
string syear_n, syear_p;
int i = 0, j = 0;
// оцифровка текущей даты
while(date_now[i] != '.')
{
if(isdigit(date_now[i]))
{
sday_n += date_now[i];
}
i++;
}
day_n = stoi(sday_n);
i++;
while(date_now[i] != '.')
{
if(isdigit(date_now[i]))
{
smoth_n += date_now[i];
}
i++;
}
moth_n = stoi(smoth_n);
i++;
while(i < date_now.length())
{
if(isdigit(date_now[i]))
{
syear_n += date_now[i];
}
i++;
}
#include <string>
#include <cctype>
#include <cstdlib>
using namespace std;
const int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
struct product
{
string name; // наименование
float prix; // цена
string date; // дата изготовления
int srok; // срок гарантии в днях
};
// високосный ли год
bool is_vis(int year)
{
return ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));
}
// проверка даты
bool verify_date(const string date)
{
int len_days = 0;
int len_moths = 0;
int len_years = 0;
int day,moth,year;
string sday,smoth,syear;
int i = 0;
// считываем день месяца
while(i < date.length() && date[i] != '.')
{
if(isdigit(date[i]))
{
sday += date[i];
len_days++;
}
i++;
}
if(len_days < 1 || len_days > 2)
{
cerr << "Неверное количество дней в дате" << endl;
return false;
}
day = stoi(sday);
if(date[i] == '.') i++;
else
{
cerr << "Неверный формат даты" << endl;
return false;
}
// теперь считываем месяц
while(i < date.length() && date[i] != '.')
{
if(isdigit(date[i]))
{
smoth += date[i];
len_moths++;
}
i++;
}
if(len_moths < 1 || len_moths > 2)
{
cerr << "Неверный месяц" << endl;
return false;
}
moth = stoi(smoth);
if(moth < 1 || moth > 12)
{
cerr << "Нет такого месяца" << endl;
return false;
}
// теперь считываем год
while(i < date.length())
{
if(isdigit(date[i]))
{
syear += date[i];
len_years++;
}
i++;
}
if(len_years < 1 || len_years > 4)
{
cerr << "Неверный год" << endl;
return false;
}
year = stoi(syear);
bool visokos = is_vis(year);
if(moth == 2)
{
if(visokos)
{
if(day > m[moth] + 1 || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
else
{
if(day > m[moth] || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
}
else
{
if(day > m[moth] || day < 1)
{
cerr << "Неверный день месяца" << endl;
return false;
}
}
return true;
}
// ввод данных
void insert(product * p, const int size)
{
for(int x = 0; x < size; x++)
{
cout << "\tТовар № " << x+1 << '.' << endl;
cout << "Наименование товара: ";
cin >> p[x].name;
cout << "Цена товара: ";
cin >> p[x].prix;
do
{
cout << "Дата изготовления: ";
cin >> p[x].date;
} while( ! verify_date(p[x].date) );
do
{
cout << "Срок годности в днях: ";
cin >> p[x].srok;
} while(p[x].srok < 1);
}
}
// расчёт дней до окончания ганантии
int garant(const string date_now, const product * p, const int n)
{
int rc = 0;
int day_n, day_p;
int moth_n, moth_p;
int year_n, year_p;
string sday_n, sday_p;
string smoth_n, smoth_p;
string syear_n, syear_p;
int i = 0, j = 0;
// оцифровка текущей даты
while(date_now[i] != '.')
{
if(isdigit(date_now[i]))
{
sday_n += date_now[i];
}
i++;
}
day_n = stoi(sday_n);
i++;
while(date_now[i] != '.')
{
if(isdigit(date_now[i]))
{
smoth_n += date_now[i];
}
i++;
}
moth_n = stoi(smoth_n);
i++;
while(i < date_now.length())
{
if(isdigit(date_now[i]))
{
syear_n += date_now[i];
}
i++;
}
какая разница ...
в постели все равны..
в постели все равны..
структуры пишутся примерно так
struct bla_bla
{
std::string blabla1;
std::string blabla2;
std::string blabla3;
int data1;
int data2;
int data3;
}
void set_blabla1(bla_bla* bla, const char* str)
{
bla->blabla1 = str;
}
struct bla_bla
{
std::string blabla1;
std::string blabla2;
std::string blabla3;
int data1;
int data2;
int data3;
}
void set_blabla1(bla_bla* bla, const char* str)
{
bla->blabla1 = str;
}
Артур Пшиков
Благодарю
Похожие вопросы
- Помогите написать код
- Помогите написать код с файлами C++
- Помогите написать код с файлами C++
- Программирование на C++ .Помогите написать код.
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите написать код решения уравнения, желательно на с++
- Помогите написать код (как можно примитивнее)
- Помогите написать код c++
- Помогите написать код на Си, по теме "строки".
- Помогите написать код C++
// оцифровка даты изготовления
while(p[n].date[j] != '.')
{
if(isdigit(p[n].date[j]))
{
sday_p += p[n].date[j];
}
j++;
}
day_p = stoi(sday_p);
j++;
while(p[n].date[j] != '.')
{
if(isdigit(p[n].date[j]))
{
smoth_p += p[n].date[j];
}
j++;
}
moth_p = stoi(smoth_p);
j++;
while(j < p[n].date.length())
{
if(isdigit(p[n].date[j]))
{
syear_p += p[n].date[j];
}
j++;
}
year_p = stoi(syear_p);
// проверка дат
if(year_p > year_n)
{
cerr << "Год даты изготовления больше текущего года" << endl;
cout << year_p << '>' << year_n << endl;
exit(1);
}