Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2014, 16:21   #1
AlyaU
 
Регистрация: 30.09.2014
Сообщений: 8
Вопрос C++ Классы. Перегрузка операций.

Компиляция проходит успешно, но после ввода "кол-ва препаратов", выдает ошибки:
лаб2.exe": Загружено: "C:\Users\Альфия\Documents\Visu al Studio 2010\Projects\лаб2\Debug\лаб2.exe", Символы загружены.
"лаб2.exe": Загружено: "C:\Windows\System32\ntdll.dll" , Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\kernel32.d ll", Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\KernelBase.dll ", Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\msvcr100d.dll" , Символы загружены.
"лаб2.exe": Загружено: "C:\Windows\System32\msvcp100d.dll" , Символы загружены.
Первый этап обработки исключения в "0x6122e30e (msvcr100d.dll)" в "лаб2.exe": 0xC0000005: Нарушение прав доступа при записи "0xbbb69179".
Необработанное исключение в "0x6122e30e (msvcr100d.dll)" в "лаб2.exe": 0xC0000005: Нарушение прав доступа при записи "0xbbb69179".
Первый этап обработки исключения в "0x6122e30e (msvcr100d.dll)" в "лаб2.exe": 0xC0000005: Нарушение прав доступа при записи "0xbbb69179".
Поток 'Поток Win32' (0xc3c) завершился с кодом -1073741749 (0xc000004b).
Программа "[0xBD8] лаб2.exe: Машинный код" завершилась с кодом -1073741510 (0xc000013a).

Код:
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <conio.h>
#include <iostream>
#include <Windows.h>
using namespace std;

class Medicoments
{
protected:
	//переменные для "фильтров"
	string name, disease; int price;
public:
	//конструктор по-умолчанию
	Medicoments()
	{ name = "Название" ; disease = "Заболевание"; price = 99999  ; 
	};
	//конструктор с параметрами
	Medicoments(string name1,string disease1, int price1)
	{name = name1; disease = disease1; price = price1;
	
	}
	// конструктор копирования
	Medicoments(const Medicoments *t)
	{
		name = t->name;
		disease = t->disease;
		price = t->price;
	
	}
	
	//отдельно возвращаем цену для фильтра
	int pr()
	{
		return price;
	}
	//отдельно возвращаем название препарата для фильтра
	string nam()
	{
		return name;
	}
	//возвращаем заболевание для фильтра
	string dis()
	{
		return disease;
	}
	//функция-метод для вывода
	void print()
	{
		cout << name << "\t\t" << disease << "\t\t" << price << "\n";
	};
	//перегрузка потоков через дружественные функции
	friend ostream & operator << (ostream &stream, Medicoments t);
	friend istream & operator >> (istream &stream, Medicoments &t);
};
//фильт по цене
void pri(Medicoments *p, int n)
{

	cout << "Введите цену препарата:";
	int price;
	cin >> price;
	for (int i = 0; i < n; i++)
	{
		if (price <= p[i].pr())
			p[i].print();
	}
}
//фильтр по заболеванию
void mdis(Medicoments *p, int n)
{
	cout << "Введите заболевание:";
	string disease;
	cin >> disease;
	for (int i = 0; i < n; i++)
	{
		if (disease == p[i].dis())
		    p[i].print();
	}
}
//фильтр по названию
void mnam(Medicoments *p, int n)
{
	cout << "Введите название препарата:";
	string name;
	cin >> name;
	for (int i = 0; i < n; i++)
	{
		if (name == p[i].nam())
		    p[i].print();
	}
}
//описание для перегрузки вывода
ostream & operator << (ostream & stream, Medicoments t)
{
	stream << "Название - " << t.name << "\n";
	stream << "Заболевание - " << t.disease << "\n";
	stream << "Цена - " << t.price << "\n";
	return stream;
}
//описание для перегрузки ввода
istream & operator >> (istream & stream, Medicoments &t)
{
	stream >> t.name >> t.disease >> t.price;
		return stream;
}
int main(string name,string disease, int price)
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int n;
	printf("Введите кол-во препаратов:");
	printf("\n");
	scanf("%i, &n"); //кол-во записей в таблице
	Medicoments *p;//динамический массив препаратов
	p = new Medicoments[n];
	for (int i = 0; i < n; i++)
	{
		printf("Введите название препарата:");
		printf("Введите заболевание:");
		printf("Введите цену препарата:");
		cin >> p[i];//запись массива
	}
	printf("Таблица: \n");
	for (int i = 0; i < n; i++)
	{
		cout << p[i];//вывод на экран всего массива
		printf( "\n");
	}
	printf("Поиск: \n");
	printf("1. Названию препарата \n");
	printf("2. Заболеванию \n");
	printf("3. Цене препарата \n");
	printf("Введите тип поиска: ");
	int type;
	scanf("%i", &type);
	printf("\n");
	switch (type)
	{
	case 1:
		mnam(p, n);
		break;
	case 2:
		mdis(p, n);
		break;
	case 3:
		pri(p, n);
		break;
	default:
		break;
	}
	delete[] p;
	getch();
}

Последний раз редактировалось AlyaU; 07.10.2014 в 16:36.
AlyaU вне форума Ответить с цитированием
Старый 07.10.2014, 16:34   #2
GooderSteel
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 11
По умолчанию

Скажу одно - код очень неудобно читать..Выделите текст с помощью [CODE].
GooderSteel вне форума Ответить с цитированием
Старый 07.10.2014, 17:28   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Цитата:
лаб2.exe": Загружено: "C:\Users\Альфия\Documents\Visu al Studio 2010\Projects\лаб2\Debug\лаб2.exe", Символы загружены.
"лаб2.exe": Загружено: "C:\Windows\System32\ntdll.dll" , Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\kernel32.d ll", Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\KernelBase .dll ", Невозможно найти или открыть файл PDB
"лаб2.exe": Загружено: "C:\Windows\System32\msvcr100d. dll" , Символы загружены.
"лаб2.exe": Загружено: "C:\Windows\System32\msvcp100d. dll" , Символы загружены.
Это не ошибки...

Код:
scanf("%i, &n"); //кол-во записей в таблице
Вы увереы, что правильно кавычки поставили?
p51x вне форума Ответить с цитированием
Старый 07.10.2014, 18:09   #4
AlyaU
 
Регистрация: 30.09.2014
Сообщений: 8
По умолчанию

Точно, спасибо Вам большое, глупая ошибка)
AlyaU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операций Garik58 C++ Builder 0 11.12.2013 01:55
Перегрузка операций manoichi Общие вопросы C/C++ 0 09.01.2012 19:30
перегрузка операций С++ mego4el Помощь студентам 1 31.10.2011 11:38
C++, классы, перегрузка операций, матрицы Anonimius Помощь студентам 6 21.10.2011 16:53
С++ Перегрузка операций sir.andrey Помощь студентам 3 08.07.2011 15:18