Почему если в полях структуры указать тип float программа не работает
#include <iostream>
#include <iomanip>
using namespace std;
void star()
{
for (int i=0;i<83;i++)
cout<<"*";
cout<<endl;
}
struct Shoe
{
char name[30];
char gender;
float size;
char color[20];
int kol;
};
int main()
{
setlocale(LC_ALL,"Russian");
int j=0,l;
Shoe *M=new Shoe[j];
do{
cin.sync();
cout<<"Введите название модели:"<<endl;
cin.get(M[j].name,30);
cout<<"Название модели, начинается с буквы М для мужкой обуви, W для женской"<<endl;
cin>>M[j].gender;
while (M[j].gender!='W' && M[j].gender!='M' && M[j].gender!='w' && M[j].gender!='m')
{
cout<<"Введите заново название модели:"<<endl;
cin>>M[j].gender;
}
cin.sync();
cout<<"Введите размер"<<endl;
cin>>M[j].size;
while (M[j].size<=20 or M[j].size>=60)
{
cout<<"Введите размер заново:"<<endl;
cin>>M[j].size;
}
cin.sync();
cout<<"Введите цвет"<<endl;
cin.get(M[j].color,20);
cout<<"Введите количество пар"<<endl;
cin>>M[j].kol;
while(M[j].kol<=0)
{
cout<<"Введите количество пар заново:"<<endl;
cin>>M[j].kol;
}
cout<<"Вводить еще? Если да - то 1,иначе - 0"<<endl;
cin>>l;
while(l!=0 && l!=1)
{
cout<<"Введите заново:"<<endl;
cin>>l;
}
if (l==1)
j++;
}while(l==1);
star();
cout<<"* Название модели * Мужская/женская * Размер * Цвет * Количество *"<<endl;
star();
for (int i=0;i<=j;i++)
{
cout<<"*"<<setw(29)<<M[i].name<<" * "<<setw(15)<<M[i].gender<<" * "<<setw(5)<<M[i].size<<" " <<setw(7)<<M[i].color<<" * "<<setw(10)<<M[i].kol<<" *"<<endl;
star();
}
}
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
int j,l;
Shoe *M=new Shoe[j];
Вы создаёте массив неизвестного размера. И пользуетесь не той областью памяти.
cin.get(M[j].name,30);
Задайте сначала размер массива и заносить значения надо с индекса нулевого сначала.
