Joa, hallo erstmal. Is schon so ne Woche her, da wollte ich ne kleine Quizfragen-Datenbank erstellen( nur zur Übung, bin nämlich Anfänger ) und zwar mit folgendem Code( sicher nicht der beste, aber wie gesagt zur Übung ) :
Quiz.hpp:
Nun ist es so, dass wenn ich eine Frage im Programm erstelle, und diese dann abfrage alles funzt, jedoch wenn ich sie wieder freigeben will, kommt ein Fehler(deshalb das cin>>, zur Überprüfung).
Code:
#include"Quiz.hpp"
int main(void)
{
short Decision=0;
do
{
cout<<"Geben sie ein was sie machen wollen:\n"
<<"[1]Quiz starten\n[2]Neue Frage\n[3]Fragen Speichern\n"<<
"[4]Fragen Laden\n[5]Beenden\n";
cin>>Decision;
switch(Decision)
{
case 1:
QuizStart();
break;
case 2:
NewQuest();
break;
case 3:
break;
case 4:
break;
default:
break;
}
}while(Decision!=5);
return 0;
}
void QuizStart(void)
{
if(NumberQuestions>0)
{
cout<<"Es gibt "<<NumberQuestions<<" Fragen!"<<endl;
for(int i=0;i<NumberQuestions;i++)
{
for(int i2=0;i2<Quest[i].NumberQuestionWords;i2++)
{
for(int i3=0;i3<Quest[i].Ask[i2].Letters;i3++)
{
cout<<Quest[i].Ask[i2].Word[i3];
}
cout<<" ";
}
cout<<'\n';
}
}
else if(NumberQuestions==0)cout<<"Es muessen erst Fragen eingegeben werden!"<<'\n';
}
void NewQuest(void)
{
//CQuest gets old Questions
int a=0;
Question *CQuest=new Question[NumberQuestions];
for(int i=0;i<NumberQuestions;i++)
{
CQuest[i].NumberQuestionWords=Quest[i].NumberQuestionWords;
for(int i2=0;i2<Quest[i].NumberQuestionWords;i2++)
{
CQuest[i].Ask[i2].Letters=Quest[i].Ask[i2].Letters;
for(int i3=0;i3<Quest[i].Ask[i2].Letters;i3++)
{
CQuest[i].Ask[i2].Word[i3]=Quest[i].Ask[i2].Word[i3];
}
}
}
//delete Old Questions
for(int i=0;i<NumberQuestions;i++)
{
for(int i2=0;i2<Quest[i].NumberQuestionWords;i2++)
{
cin>>a;
cout<<"ja"<<i<<endl<<i2<<'\n';
delete[] Quest[i].Ask[i2].Word;
cin>>a;
Quest[i].Ask[i2].Word=0;
}
delete[] Quest[i].Ask;
Quest[i].Ask=0;
}
delete[] Quest;
Quest=0;
//New Structure
NumberQuestions++;
Quest=new Question[NumberQuestions];
//Declare the old Questions:
for(int i=0;i<NumberQuestions-1;i++)
{
Quest[i].NumberQuestionWords=CQuest[i].NumberQuestionWords;
for(int i2=0;i2<Quest[i].NumberQuestionWords;i++)
{
Quest[i].Ask[i2].Letters=CQuest[i].Ask[i2].Letters;
for(int i3=0;i3<Quest[i].Ask[i2].Letters;i3++)
{
Quest[i].Ask[i2].Word[i3]=CQuest[i].Ask[i2].Word[i3];
}
}
}
//delete CQuest
cout<<"Wie viele Woerter hat deine Frage?"<<'\n';
cin>>Quest[NumberQuestions-1].NumberQuestionWords;
Quest[NumberQuestions-1].Ask=new Word[Quest[NumberQuestions-1].NumberQuestionWords];
for(int i=0;i<Quest[NumberQuestions-1].NumberQuestionWords;i++)
{
cout<<"Wie viele Buchstaben hat dein "<<i+1<<". Wort?\n";
cin>>Quest[NumberQuestions-1].Ask[i].Letters;
Quest[NumberQuestions-1].Ask[i].Letters;
cout<<"Gib das "<<i+1<<". Wort ein:"<<'\n';
Quest[NumberQuestions-1].Ask[i].Word=new char[Quest[NumberQuestions-1].Ask[i].Letters];
cin>>Quest[NumberQuestions-1].Ask[i].Word;
}
cout<<"Deine Neue Frage lautet nun:"<<'\n';
for(int i=0;i<Quest[NumberQuestions-1].NumberQuestionWords;i++)
{
cout<<Quest[NumberQuestions-1].Ask[i].Word<<" ";
}
cout<<"\n";
}
Code:
#include<iostream>
#include<cstdio>
using namespace std;
struct Word
{
char *Word;
short Letters;
};
struct Question
{
Word *Ask;
Word *Answer;
short NumberAnswerWords;
short NumberQuestionWords;
};
short NumberQuestions=0;
Question *Quest=new Question[1];
void QuizStart(void);
void NewQuest(void);