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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2015, 23:12   #1
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию Как исправить ввод ?(С++)

Здравствуйте, столкнулся с проблемой,то что должен делать код выглядит примерно так:"Запрашивает к какому врачу я хочу попасть на прием,а потом запрашивает Фамилию ",проблема в этом куске кода
Код:
	for (i = 0; i < n; ++i)
			cout << i + 1 << ". " << Info[i].ret_name_doctor() << endl;
		cout << "0. The end procces\n";
		cout << "Input your choise:_\b";
		cin >> i;
		if (i == 0) { cout << "Fin"; return; }
		i--;
		Info[i].add_patient();
Код:
void add_patient()
	{
		int i = 0,input;
		for (; i < N; ++i)
			if (patient_name[i].size() == 0)break;
		for (; i < N; ++i)
			if (i == N) { cout << "Not free place"<< endl; break; }
			else
			{
				cin.get();
				cout << i << "Writes" << endl;
				cout << "Input Name of Patient: ";
				getline(cin, patient_name[i]);
				cout << "Please choise a time: " << endl;
				cout << "1.First shift 8-12 \n";
				cout << "2.Second shift 12-16\n";
				cin >> input;
			}
должно всего один раз запрашивать фамилию пациента,а уже после этого должно опять задать вопрос по поводу врача к которому я хочу попасть на прием.
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <string.h>
#define N 10
using namespace std;
class hospital {
private:
	short date[3];
	short time;
	string patient_name[N];
	string name_doctor;
	string qualification;
	short cabinet;
public:
	hospital() {
		date[0] = date[1] = date[2];
		time = 0;
		cabinet = 0;

	}
	void add_patient()
	{
		int i = 0,input;
		for (; i < N; ++i)
			if (patient_name[i].size() == 0)break;
		for (; i < N; ++i)
			if (i == N) { cout << "Not free place"<< endl; break; }
			else
			{
				cin.get();
				cout << i << "Writes" << endl;
				cout << "Input Name of Patient: ";
				getline(cin, patient_name[i]);
				cout << "Please choise a time: " << endl;
				cout << "1.First shift 8-12 \n";
				cout << "2.Second shift 12-16\n";
				cin >> input;
			}
	}
	hospital(const hospital &Copy) {

	}
	void input(char*);
	string ret_name_doctor() {
		return name_doctor;
	}
	void show()
	{
		cout << name_doctor << " " << qualification << " " << cabinet << " "
			<< date[0] << ":" << date[1] << ":" << date[2] << endl;
	}

};

void hospital::input(char* str)
{
	char* p,*p1=NULL;
	int i = 0;
	p = strtok_s(str, " ",&p1);
	name_doctor = string((const char*)p);
	p = strtok_s(NULL, " ",&p1);
	qualification = string((const char*)p);
	p = strtok_s(NULL, " ", &p1);
	cabinet = atoi(( const char *)p);
	p = strtok_s(NULL, " ", &p1);
	time = atoi((const char *)p);
	for (; i < 3; ++i) {
	p = strtok_s(NULL, ". ",&p1);
     date[i] = atoi((const char *)p);
		}
	}
unsigned static count;
void main()
{
	const  unsigned n = 4;
	hospital Info[n];
	char str[255];
	int i = 0;
	ifstream array_info("doctors.txt");
	if (!array_info) { cout << "file not find"; cin.get(); return; }
	while (!array_info.eof() && !array_info.fail() && i < n) {
		array_info.getline(str, 255);
		Info[i].input(str);
		++i;
	}
	array_info.close();
		for (i = 0; i < n; ++i)
			cout << i + 1 << ". " << Info[i].ret_name_doctor() << endl;
		cout << "0. The end procces\n";
		cout << "Input your choise:_\b";
		cin >> i;
		if (i == 0) { cout << "Fin"; return; }
		i--;
		Info[i].add_patient();
	cin.get();
	cin.get();
}
Sterben вне форума Ответить с цитированием
Старый 19.09.2015, 10:41   #2
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

исправил, только теперь беда
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <string.h>
#define N 10
using namespace std;
class hospital {
private:
	short date[3];
	short time;
	string patient_name[N];
	string name_doctor;
	string qualification;
	short cabinet;
	short shift;
public:
	hospital() {
		date[0] = date[1] = date[2];
		time = 0;
		cabinet = 0;
	}
	void add_patient()
	{
		int i = 0,choice_shift;
		for (; i < N; ++i)
			if (patient_name[i].size() == 0)break;
		if (i == N) { cout << "Not free place" << endl; cin.get(); return; }
			else
			{
				cin.ignore();
				cout << endl << i + 1 << ". Writes" << endl;
				cout << "Input Name of Patient: ";
				getline(cin, patient_name[i]);
				cout << "Please choise a time: " << endl;
				cout << "1.First shift 8-12 \n";
				cout << "2.Second shift 12-16\n";
				cin >> choice_shift;

			}
	}

	hospital(const hospital &Copy) {

	}
	void input(char*);
	string ret_name_doctor() {
		return name_doctor;
	}
	void show()
	{
		cout << name_doctor << " " << qualification << " " << cabinet << " "
			<< date[0] << ":" << date[1] << ":" << date[2] << endl;
	}
};
void hospital::input(char* str)
{
	char* p,*p1=NULL;
	int i = 0;
	p = strtok_s(str, " ",&p1);
	name_doctor = string((const char*)p);
	p = strtok_s(NULL, " ",&p1);
	qualification = string((const char*)p);
	p = strtok_s(NULL, " ", &p1);
	cabinet = atoi(( const char *)p);
	p = strtok_s(NULL, " ", &p1);
	time = atoi((const char *)p);
	for (; i < 3; ++i) {
	p = strtok_s(NULL, ". ",&p1);
     date[i] = atoi((const char *)p);
		}
	}
unsigned static count;
void main()
{
	const  unsigned n = 4;
	hospital Info[n];
	char str[255];
	int i = 0;
	ifstream array_info("doctors.txt");
	if (!array_info) { cout << "file not find"; cin.get(); return; }
	while (!array_info.eof() && !array_info.fail() && i < n) {
		array_info.getline(str, 255);
		Info[i].input(str);
		++i;
	}
	array_info.close();
	do {
		for (i = 0; i < n; ++i)
			cout << i + 1 << ". " << Info[i].ret_name_doctor() << endl;
		cout << "0. The end procces\n";
		cout << "Input your choise:_\b";
		cin >> i;
		if (i == 0) { cout << "Fin"; return; }
		Info[i].add_patient();
	} while (i <= N);
	cin.get();
	cin.get();
}
в этой части
Код:
if (i == N) { cout << "Not free place" << endl; cin.get(); return; }
надо что что что б завершило или что бы опять вернуло на выбор(лучше что б на выбор доктора вернуло снова).

Последний раз редактировалось Sterben; 19.09.2015 в 10:50.
Sterben вне форума Ответить с цитированием
Старый 20.09.2015, 17:08   #3
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

исправил,можно закрыть
Sterben вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить Парик454 Общие вопросы Delphi 0 11.12.2012 16:41
Дата записана как текст - как програмно исправить? riko_ltd Microsoft Office Excel 1 26.11.2012 08:01
Как исправить ? kiryxa(cyc) Помощь студентам 0 17.05.2012 09:49
Как исправить............. trash1205 Microsoft Office Word 2 21.03.2012 12:56
как исправить! lexinvest Операционные системы общие вопросы 1 08.05.2011 18:03