17 дек. 2014 г.

Свежие новости ленты "Почтовая" от 2014-12-17 15:08:16

Subscribe.Ru : Новости ленты "Почтовая"
Subscribe.Ru Новости ленты "Почтовая"

Свежие новости выписываемой вами ленты "Почтовая".
Для подписки, отписки и настройки параметров используйте http://subscribe.ru/member/lenta/conf


"VPF: C++"      [ наверх ]

Не пишет в файл, fstream
2014-12-17 16:15 ColdSpirit


Vingrad Forum
написал функцию вывода флагов
Код

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


Vingrad Forum
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;
//---------------------------------------------------------------------------

Комментариев нет:

Отправить комментарий

Оповещение Google – JavaScript

JavaScript Ежедневное обновление ⋅ 20 января 2025 г. НОВОСТИ Достойный противник классичес...