Программа работает до определенного момента, потом вылетает, появляется ошибка чтения символов строки - 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() предназначен для обработки нажатий клавиш.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д