C/C++

Помогите написать код на С++

Создать структуру, описывающую товар. Данные структуры: наименование товара, цена
товара, дата изготовления, срок гарантии. Создать функции: ввод данных, вывод данных,
расчет дней до окончания гарантии.
Артур Пшиков
Артур Пшиков
3 699
#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++;
}
Данил Столбоушкин
Данил Столбоушкин
65 115
Лучший ответ
Данил Столбоушкин year_n = stoi(syear_n);
// оцифровка даты изготовления
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 &lt; 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 &gt; year_n)
{
cerr &lt;&lt; "Год даты изготовления больше текущего года" &lt;&lt; endl;
cout &lt;&lt; year_p &lt;&lt; '&gt;' &lt;&lt; year_n &lt;&lt; endl;
exit(1);
}
Артур Пшиков Спасибо огромное
какая разница ...
в постели все равны..
структуры пишутся примерно так

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;
}
Артур Пшиков Благодарю