Программа работает до определенного момента, потом вылетает, появляется ошибка чтения символов строки - C (СИ)
Формулировка задачи:
drug.hdrug.cpp
mixture.h
mixture.cpp
tablets.h
tablets.cpp
main.cpp
#pragma once
#include <iostream>
using namespace std;
class drug
{
protected:
string name;
int price;
public:
drug() {};
drug(string cur_name, int cur_price);
virtual void show();
~drug();
};#include "drug.h"
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
drug::drug(string cur_name, int cur_price)
{
this->name = cur_name;
this->price = cur_price;
}
void drug::show()
{
cout << "\n Medical drug:" << endl;
cout << "Name: " << name << endl;
cout << "Price: " << price << endl;
}
drug::~drug()
{
}#pragma once
#include "drug.h"
class mixture :public drug
{
protected:
int size;
public:
mixture() {};
mixture(int cur_size, string name, int price) :drug(name, price)
{
this->size = cur_size;
}
void show();
~mixture() {};
};#include "mixture.h"
#include "drug.h"
#include <string>
void mixture::show()
{
cout << "\nMedical drug: " << endl;
cout << "Name: " << name << endl;
cout << "Size(ml): " << size << endl;
cout << "Price: " << price << endl;
}#pragma once
#include "drug.h"
class tablets :public drug
{
protected:
int number;
public:
tablets() {};
tablets(int cur_number, string name, int price) :drug(name, price)
{
this->number = cur_number;
};
void show();
~tablets();
};#include "tablets.h"
#include "drug.h"
#include <string>
#include <iostream>
using namespace std;
tablets::~tablets()
{};
void tablets::show()
{
cout << "\nMedical drug:" << endl;
cout << "Name: " << name << endl;
cout << "Number: " << number << endl;
cout << "Price: " << price << endl;
}#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
double x[3], y[3],X[3];
double L = 1,L_1=0;
cout<<"Введите значение х(i):"<<endl;
for (int i = 0; i < 4; i++)
{
cout << "x" <<i<< ":";
cin >> x[i];
}
cout<<"Введите значение y(i):"<<endl;
for (int i = 0; i < 4; i++)
{
cout << "y" << i << ":";
cin >> y[i];
}
cout<<"\nВведите значение точек:"<<endl;
for (int i = 0; i < 4; i++)
{
cout << "X" << i << ":";
cin >> X[i];
}
for (int k = 0; k < 4; k++)
{
L_1 = 0;
for (int i = 0; i <4; i++)
{
L = 1;
for (int j = 0; j <4; j++)
if (i != j)
L = L*((X[k]- x[j]) / (x[i] - x[j]));
L_1 = L_1 + L*y[i];
}
cout<<"Y["<<X[k]<<"]="<<L_1<<" "<<endl;
}
system("pause");
_getch;
}
вот main.cpp
#include "drug.h"
#include "mixture.h"
#include "tablets.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
void input(string *name, int *price)
{
cout << "Name: ";
cin >> *name;
cout << "Price: ";
cin >> *price;
}
void objects(drug *obj[], int n)
{
string name;
int price, number, size, a;
for (int i = 0; i < n; i++)
{
cout << "Do you want input data of tablets-1, or mixture-2: ";
cin >> a;
switch (a)
{
case 1:
{
input(&name, &price);
cout << "Number: ";
cin >> number;
obj[i] = new tablets(number, name, price);
break;
}
case 2:
{
input(&name, &price);
cout << "Size: ";
cin >> size;
obj[i] = new mixture(size, name, price);
break;
}
}
}
for (int i = 0; i < n; i++)
delete obj[i];
}
void main(int argc, const char * argv[])
{
const int n = 2;
drug *obj[n];
objects(obj, n);
for (int i = 0; i < n; i++)
obj[i]->show();
_getch();
}Решение задачи: «Программа работает до определенного момента, потом вылетает, появляется ошибка чтения символов строки»
textual
Листинг программы
void main(int argc, const char * argv[])
{
const int n = 2;
drug *obj[n];
objects(obj, n);
for (int i = 0; i < n; i++)
obj[i]->show();
for (int i = 0; i < n; i++)
delete obj[i];
_getch();
}
Объяснение кода листинга программы
- В функции main() объявлены две переменные: n и obj.
- Переменная n объявлена как константа и ей присваивается значение 2.
- Переменная obj объявлена как указатель на массив объектов типа drug, размер которого равен переменной n.
- Функция objects() инициализирует объекты в массиве obj.
- В цикле for происходит вызов метода show() для каждого объекта в массиве obj.
- В цикле for происходит вызов деструктора для каждого объекта в массиве obj.
- Вызов функции _getch() предназначен для обработки нажатий клавиш.