Друзья,вылетает программа после ввода поля tabl[i].name; Не могу понять в чём проблема.
// ConsoleApplication1.cpp : Defines the entry point for the console
application.
//
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int value;
struct tablica {
int number;
string name;
double P, H, V, Z, O;
};
void CreatingStruct(tablica*tabl);
void FindMax(tablica*tabl);
int main()
{
tablica * tabl = new tablica[value];
cin >> value;
CreatingStruct(tabl);
FindMax(tabl);
return 0;
}
void CreatingStruct(tablica*tabl) {
for (int i = 0; i < value; i++) {
cout << "write nubmber" << endl;
cin >> tabl[i].number;
cout << "write name" << endl;
cin >> tabl[i].name;
cout << "write P" << endl;
cin >> tabl[i].P;
cout << "write H" << endl;
cin >> tabl[i].H;
cout << "write V" << endl;
cin >> tabl[i].V;
cout << "write Z" << endl;
cin >> tabl[i].Z;
tabl[i].O = tabl[i].V * tabl[i].Z;
cout << "Your O = " << tabl[i].O << endl;
}
}
void FindMax(tablica*tabl) {
double max = tabl[0].O;
for (int i = 0; i < value; i++) {
if (tabl[i].O >= max) {
max = tabl[i].O;
}
}
cout << "Max is - " << " " << max;
}
Вот Вы сначала создаете динамический массив с размером value, который еще пока равен 0 (как явно не инициализированная глобальная переменная), а на следующей строке только задаете это самое value. Вы думаете, после этого и размер массива должен измениться? Или Вы считаете, что компилятор должен прочитать Ваши мысли и, найдя у Вас ошибку, сам должен поменять местами эти 2 строчки? ;-)
int main()
{
tablica * tabl = new tablica[value];
cin >> value;
...
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости