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