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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2016, 19:42   #1
sad3333
 
Регистрация: 07.02.2016
Сообщений: 4
Печаль не могу разобраться с кодом:(

Здравствуйте! помоги, пожалуйста, откорректировать код! не могу разобраться , получилась каша, и не могу довести до ума. программа "тестирование знаний", которая должна считать вопросы из файла и вывести результат. очень прошу, очень нужно
Код:
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <clocale>
#include <vector>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Russian");   // русификация консоли
	FILE *f1 = fopen("test1.txt","r");
	 system ("pause");
   return 0;
}


bool IsEmpty(string s)
{
	for(size_t i=0;i<s.length();i++)
	{
		if(s[i]!=' ' && s[i]!='\t')
			return false;
	}
	return true;
}

string Trim(string s)
{
	for(size_t i=0;i<s.length();i++)
	{
		if(s[i]!=' ' && s[i]!='\t')
		{
			if(!i)
				return s;
			else
			{
				return s.substr(i);
			}
		}
	}
	return s;
}

string GetCharBeforeDot(string s)
{
	string str;
	for(size_t i=0;i<s.length();i++)
	{
		if(s[i]=='.')
		{
			return Trim(s.substr(0, i));
		}
	}
	return "";
}

string GetCharAfterDot(string s)
{
	string str;
	for(size_t i=0;i<s.length();i++)
	{
		if(s[i]=='.')
		{
			return Trim(s.substr(i+1));
		}
	}
	return "";
}

struct CAnswerStruct
{
	char c;
	int bonus;
};

typedef vector<string> CQuestStrings;
typedef vector<CQuestStrings*> CQuest;
typedef vector<CAnswerStruct*> CAnswer;
typedef vector<CAnswer*> CAnswers;

class CTest
{
	string UserName;
	CQuest Questions;
	CAnswers Answers;
	int Bonus;

	void WriteQuest(int n)
	{
		for(size_t j=0;j<Questions[n]->size();j++)
		{
			cout<<(*Questions[n])[j]<<endl;
		}
	}

	void WriteAnswers()
	{
		for(size_t i=0;i<Answers.size();i++)
			cout<<Answers[i]<<endl;
	}

	void ReadTest(string test)		
	{
		string s;
		int nQ=-1;
		
		ifstream in(test.c_str());
		if(!in)
		{
			cout<<"Ошибка при чтении файла '"<<test<<"'"<<endl;
			throw 0;
		}
		while(!in.eof())
		{
			getline(in, s);
			
			if(!IsEmpty(s))
			{
				int n=atoi(GetCharBeforeDot(s).c_str());
				if(n)
				{					
					CQuestStrings* strs=new CQuestStrings();
					Questions.push_back(strs);										
					strs->push_back(s);					
					nQ=n-1;					
				}			
				else if(nQ!=-1)
				{
					Questions[nQ]->push_back(s);
				}
			}			
		}	
	}

	void ReadAnswers(string answers)
	{
		string s;
		int nA=-1;

		ifstream in(answers.c_str());
		if(!in)
		{
			cout<<"Ошибка при чтении файла '"<<answers<<"'"<<endl;
			throw 0;
		}
		while(!in.eof())
		{
			getline(in, s);
			
			if(!IsEmpty(s))
			{
				int n=atoi(GetCharBeforeDot(s).c_str());
				if(n)
				{
					CAnswer* answer=new CAnswer();
					Answers.push_back(answer);	
					nA=n-1;
				}
				else if(nA!=-1)
				{
					CAnswerStruct* as=new CAnswerStruct();
					Answers[nA]->push_back(as);
					as->c = GetCharBeforeDot(s)[0];
					int m=atoi(GetCharAfterDot(s).c_str());
					as->bonus = m;
				}
			}
		}
	}

	void RunQuest(int n)
	{
		WriteQuest(n);
		char c;
		cin>>c;
		for(size_t i=0;i<Answers[n]->size();i++)
		{
			if(c==Answers[n]->at(i)->c)
				Bonus+=Answers[n]->at(i)->bonus;			
		}
	}
	
public: 
	CTest(string userName)
	{
		UserName=userName;
		Bonus=0;
	}

	bool Open(string test, string answers)
	{	
		try
		{
			ReadTest(test);
			ReadAnswers(answers);	
			return true;
		}
		catch(...)
		{		
			return false;
		}			
	}
	
	void RunTest()
	{
		for(size_t i=0;i<Answers.size();i++)		
			RunQuest(i);						
		cout<<"Вы набрали "<<Bonus<<" бал(а,ов)"<<endl;		
		_getch();
	}	
};

#endif
sad3333 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться с кодом(паскаль) Arabic_Coffee Помощь студентам 1 11.05.2011 20:47
Ребят не могу разобраться с кодом! kotopezzz Общие вопросы Delphi 2 11.02.2011 13:27
Не могу разобраться с кодом в дизассемблере. Yagamy Liet Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 27.09.2010 06:41
Не могу разобраться с кодом jey7 JavaScript, Ajax 1 17.06.2010 09:38
не могу разобраться с кодом morocko HTML и CSS 1 10.02.2010 21:23