Свежие новости выписываемой вами ленты "Почтовая". Для подписки, отписки и настройки параметров используйте http://subscribe.ru/member/lenta/conf Не пишет в файл, fstream 2014-12-17 16:15 ColdSpirit | написал функцию вывода флагов
Код | void coutBits(std::fstream& fsFile) { std::cout << "good: " << fsFile.good() << ", eof: " << fsFile.eof() << ", fail: " << fsFile.fail() << ", bad: " << fsFile.bad() << std::endl; }
|
Код | coutBits(fsIn); // выдает 1, 0, 0, 0 (all good) fsIn << "hello world" << endl; coutBits(fsIn); // 0, 0, 1, 1 (fail & bad)
|
не понимаю почему так | Программа Экзаменатор 2014-12-17 16:09 Garik1995 | Final_Project.cpp
Код | //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "Final_Project.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm11 *Form11; //--------------------------------------------------------------------------- __fastcall TForm11::TForm11(TComponent* Owner) : TForm(Owner) { } int nQuery = 0; // Всего вопросов int nRight; // Количество правильных ответов int Right; // правильный ответ int Sel; // ответ, выбранный испытуемым static int mode = 0; // 0 - начало работы программы // (вывести первый вопрос) // 1 - процесс тестирования // 2 - тестирование завершено // начало работы
//---------------------------------------------------------------------------
void __fastcall TForm11::FormActivate(TObject *Sender) { if (ParamCount() == 0) { Label1->Caption = "В командной строке надо указать " "имя файла теста"; mode = 2; return; } XMLDocument1->FileName = ParamStr(1); try { // открыть XML-документ XMLDocument1->Active = True; } catch (EDOMParseError &e) { Label1->AutoSize = True; Label1->Caption = "Ошибка доступа к файлу теста " + ParamStr(1) + "\nMessage: " + e.Message; mode = 2; return; } Form11->Info(); // вывести информацию о тесте } // считывает и выводит вопрос с указанным номером int __fastcall TForm11::Qery(int i) {
// привести форму в исходное состояние RadioButton1->Visible = False; RadioButton2->Visible = False; RadioButton3->Visible = False; RadioButton4->Checked = True; Button1->Enabled = False; // настроить интерфейс на работу с узлом qw _di_IXMLNode gw = XMLDocument1-> DocumentElement->ChildNodes-> Nodes[WideString("qw")]; if (i > qw->ChildNodes->Count -1) { return -1; }; nQuery++; //количество вопросов
/* Узел q - это вопрос. Параметр text узла q - это текст вопроса дети узла q - это альтернативные ответы */ _di_IXMLNode q = gw->ChildNodes->Nodes[i];
/* Атрибут Text узла qw - это текст вопроса, атрибут right - номер правильного ответа */
// вопрос Label1->AutoSize = false; Label1->Width = ClientWidth -20; Label1->Height = 150; Label1->Caption = q->GetAttribute(WideString("text")); Label1->AutoSize = true;
Right = StrToInt( q->GetAttribute(WideString("right")));
// узел "q" состоит из нескольких узлов "a" // (альтернативных ответов) _di_IXMLNode a; int j = 0; // номер узла "a" while ( j < q->ChildNodes->Count ) { a = q->ChildNodes ->Nodes[j]; switch (j) { case 0: RadioButton1->Caption = a->Text; RadioButton1->Top = Label1->Top + Label1->Height + 10; RadioButton1->Visible = True; break; case 1: RadioButton2->Caption = a->Text; RadioButton2->Top = RadioButton1->Top + RadioButton1->Height + 10; RadioButton2->Visible = True; break; case 2: RadioButton3->Caption = a->Text; RadioButton3->Top = RadioButton2->Top + RadioButton2->Height + 10; RadioButton3->Visible = True; break; } j++; }
return 0; } // информация о тесте void __fastcall TForm11::Info(); { Form11->Caption = XMLDocument1->DocumentElement-> ChildNodes->Nodes[WideString("head")]->Text; Label1->Caption = XMLDocument1->DocumentElement-> ChildNodes->Nodes[WideString("description")]->Text; } // щелчок на кнопке ОК
void __fastcall TForm11::Button1Click(TObject *Sender) { static int i = 0; // номер вопроса int r; // результат вывода вопроса: // -1 - вопросов больше нет switch ( mode) { case 0: r = Qery(i++); mode = 1; break;
case 1: // проверим, правильный ли ответ выбрал // испытуемый if (Sel == Right) nRight++; // вывести следующий вопрос r = Qery(i++); if (r == -1) { // результат тестирования Result(); Button1->Enabled = true; mode = 2; } break;
case 2: Form11->Close(); // завершить работу программы } }
// вывести результат тестирования void __fastcall TForm1::Result() { int i = 0; int score; _di_IXMLNode ls; // интерфейс доступа к узлу levels _di_IXMLNode l; // интерфейс доступа к узлу level
// считываем последовательно узлы level и сравниваем // значение параметра score с количеством правильных // ответов ls = XMLDocument1->DocumentElement-> ChildNodes->Nodes[WideString("levels")]; while ( i < ls->ChildNodes->Count) { l = ls->ChildNodes->Nodes[i]; score = StrToInt( l-> GetAttribute[WideString("score")));
if (nRight >= score) break; i++;
} AnsiString mes; mes.printf("Экзамен закончен\n" "Всего вопросов: %i\n" "Правильных ответов: %i\n", nQuery,nRight);
mes = mes + l->GetAttribute(WideString("text")); Label1->Width = Form11->ClientWidth - 20; Label1->Caption = mes; } // пользователь выбрал первый ответ void __fastcall TForm11::RadioButton1Click(TObject *Sender) { Sel = 1; Button1->Enabled = True; }
//пользователь выбрал второй ответ void __fastcall TForm11::RadioButton2Click(TObject *Sender) { Sel = 2; Button1->Enabled = True; } //пользователь выбрал третий ответ
void __fastcall TForm11::RadioButton3Click(TObject *Sender) { Sel = 3; Button1->Enabled = True; } //---------------------------------------------------------------------------
|
Final_Project.h
Код | //---------------------------------------------------------------------------
#ifndef Final_ProjectH #define Final_ProjectH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <msxmldom.hpp> #include <XMLDoc.hpp> #include <xmldom.hpp> #include <XMLIntf.hpp> //--------------------------------------------------------------------------- class TForm11 : public TForm { __published: // IDE-managed Components TLabel *Label1; TRadioButton *RadioButton1; TRadioButton *RadioButton2; TRadioButton *RadioButton3; TRadioButton *RadioButton4; TXMLDocument *XMLDocument1; TButton *Button1; void __fastcall FormActivate(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall RadioButton1Click(TObject *Sender); void __fastcall RadioButton2Click(TObject *Sender); void __fastcall RadioButton3Click(TObject *Sender);
private:
// User declarations public:
__fastcall TForm11 Info(); // User declarations __fastcall TForm11(TComponent* Owner);
}; //--------------------------------------------------------------------------- extern PACKAGE TForm11 *Form11; //---------------------------------------------------------------------------
JavaScript Ежедневное обновление ⋅ 20 января 2025 г. НОВОСТИ Достойный противник классичес...
-
Новости ленты " Почтовая" Свежие новости выписываемой вами ленты "Почтовая". Для ...
-
Новости ленты " Почтовая" Свежие новости выписываемой вами ленты "Почтовая". Для ...
|
| |
Комментариев нет:
Отправить комментарий