Здравствуйте, делаю курсач, и там нужно сделать следующие: программа для тестирования. Дано 10 вопросов, среди которых должны быть выбраны лишь 5, и добавлены в сам процесс тестирования. Вот мой код(проверку правильности я еще не сделал):
#pragma once
#include <stdio.h>
#include <msclr\marshal.h>
#include "header.h"
#include <cstdlib>
#include <ctime>
#include <iostream>
namespace example {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace msclr::interop;
/// <summary>
/// Сводка для MyForm1
/// </summary>
public ref class MyForm1 : public System::Windows::Forms::Form
{
public:
int op = 0;
MyForm1()
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm1()
{
if (components)
{
delete components;
}
}
protected:
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::RadioButton^ radioButton1;
private: System::Windows::Forms::RadioButton^ radioButton2;
private: System::Windows::Forms::RadioButton^ radioButton3;
private: System::Windows::Forms::RadioButton^ radioButton4;
protected:
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
void InitializeComponent(void)
{
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->label1 = (gcnew System::Windows::Forms::Label());
this->radioButton1 = (gcnew System::Windows::Forms::RadioButton());
this->radioButton2 = (gcnew System::Windows::Forms::RadioButton());
this->radioButton3 = (gcnew System::Windows::Forms::RadioButton());
this->radioButton4 = (gcnew System::Windows::Forms::RadioButton());
this->SuspendLayout();
//
// button2
//
this->button2->Location = System::Drawing::Point(247, 298);
this->button2->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(100, 28);
this->button2->TabIndex = 7;
this->button2->Text = L"<";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &MyForm1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(368, 298);
this->button3->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(100, 28);
this->button3->TabIndex = 8;
this->button3->Text = L">";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &MyForm1::button3_Click);
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(61, 42);
this->label1->Margin = System::Windows::Forms::Padding(4, 0, 4, 0);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(70, 17);
this->label1->TabIndex = 9;
this->label1->Text = L"Контакти";
//
// radioButton1
//
this->radioButton1->AutoSize = true;
this->radioButton1->Location = System::Drawing::Point(64, 75);
this->radioButton1->Name = L"radioButton1";
this->radioButton1->Size = System::Drawing::Size(110, 21);
this->radioButton1->TabIndex = 10;
this->radioButton1->TabStop = true;
this->radioButton1->Text = L"radioButton1";
this->radioButton1->UseVisualStyleBackColor = true;
//
// radioButton2
//
this->radioButton2->AutoSize = true;
this->radioButton2->Location = System::Drawing::Point(64, 123);
this->radioButton2->Name = L"radioButton2";
this->radioButton2->Size = System::Drawing::Size(110, 21);
this->radioButton2->TabIndex = 11;
this->radioButton2->TabStop = true;
this->radioButton2->Text = L"radioButton2";
this->radioButton2->UseVisualStyleBackColor = true;
//
// radioButton3
//
this->radioButton3->AutoSize = true;
this->radioButton3->Location = System::Drawing::Point(64, 165);
this->radioButton3->Name = L"radioButton3";
this->radioButton3->Size = System::Drawing::Size(110, 21);
this->radioButton3->TabIndex = 12;
this->radioButton3->TabStop = true;
this->radioButton3->Text = L"radioButton3";
this->radioButton3->UseVisualStyleBackColor = true;
//
// radioButton4
//
this->radioButton4->AutoSize = true;
this->radioButton4->Location = System::Drawing::Point(64, 193);
this->radioButton4->Name = L"radioButton4";
this->radioButton4->Size = System::Drawing::Size(110, 21);
this->radioButton4->TabIndex = 13;
this->radioButton4->TabStop = true;
this->radioButton4->Text = L"radioButton4";
this->radioButton4->UseVisualStyleBackColor = true;
//
// MyForm1
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(735, 420);
this->Controls->Add(this->radioButton4);
this->Controls->Add(this->radioButton3);
this->Controls->Add(this->radioButton2);
this->Controls->Add(this->radioButton1);
this->Controls->Add(this->label1);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->Name = L"MyForm1";
this->Text = L"Перегляд контактів";
this->Load += gcnew System::EventHandler(this, &MyForm1::MyForm1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
Node *head = NULL;
int generateRandNumber()
{
srand(time(NULL));
int a;
a = (rand() % 10)+1;
return a;
}
void push_end(S_Data data)
{
if (op < 4 && generateRandNumber() > 4)
{
Node *NewNode = (Node*)malloc(sizeof(Node));
static Node *tail = NULL;
strcpy(NewNode->data.question, data.question);
strcpy(NewNode->data.answer1, data.answer1);
strcpy(NewNode->data.answer2, data.answer2);
strcpy(NewNode->data.answer3, data.answer3);
strcpy(NewNode->data.answer4, data.answer4);
strcpy(NewNode->data.answert, data.answert);
if (head == NULL)
{
NewNode->next = NULL;
NewNode->prev = NULL;
head = NewNode;
tail = NewNode;
return;
}
else
{
NewNode->next = NULL;
tail->next = NewNode;
NewNode->prev = tail;
tail = NewNode;
}
++op;
}
}
void print(char c)
{
if (head != NULL)
{
if (c == 'r')//
{
if (head->prev != NULL) button2->Enabled = true;
else button2->Enabled = false;
label1->Text = marshal_as<String^>(head->data.question);
radioButton1->Text = marshal_as<String^>(head->data.answer1);
radioButton2->Text = marshal_as<String^>(head->data.answer2);
radioButton3->Text = marshal_as<String^>(head->data.answer3);
radioButton4->Text = marshal_as<String^>(head->data.answer4);
if (head->next != NULL)
{
head = head->next;
}
else
{
button3->Text = "Завершити";
button3->Enabled = false;
return;
}
}
else
{
button3->Enabled = true;//кнопка для руху вперед стає активною
if (head->prev != NULL)
head = head->prev;
label1->Text = marshal_as<String^>(head->data.question);
radioButton1->Text = marshal_as<String^>(head->data.answer1);
radioButton2->Text = marshal_as<String^>(head->data.answer2);
radioButton3->Text = marshal_as<String^>(head->data.answer3);
radioButton4->Text = marshal_as<String^>(head->data.answer4);
if (head->prev == NULL)
button2->Enabled = false;
}
}
}
private: System::Void MyForm1_Load(System::Object^ sender, System::EventArgs^ e) {
FILE *file;
S_Data data;
file = fopen("kontakt.txt", "r");
//Считывание инф с файла в список
fread(&data, sizeof(S_Data), 1, file);
while (!feof(file))
{
push_end(data); //Добавление в список
fread(&data, sizeof(data), 1, file);// Считывание с файлу 1 с вопросами для теста
}
fclose(file);
print('r');
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
print('l'); //Предыдущий вопрос
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
print('r'); //Следующий вопрос
}
};
}
Проблема в следующем: каждый раз либо не считывает тесты, либо вопросы идут в обычном порядке. В чём проблема?