(C++) yardım
2
●599
- 28-04-2010, 03:44:45merhaba arkadaşlar C++ rastgele soru üreten bir program yazmak istiyorum programı her açtığımda farklı bir soru çıkması gerekiyor ayrıca üretilen her bir sorunun a,b,c,d diye dört tane şıkkı olması gerekiyor buna göre doğru ve yanlış sayısını çıkaran bir program nasıl yazılabilir? 20 soruluk bir test sınavı gibi ama sorular sırayla değil karışık bir şekilde gelmesini istiyorum
- 28-04-2010, 19:01:28Üyeliği durduruldurandom sayı üreteceksin. diyelim 1den 20ye kadar.
sonra
if (sayi==1)
{
cout << "soru ve cevaplar";
cin >> cevap;
if cevap==a
{
cout << "dogru";
else
cout "yanlis.";
}}
if (sayi ==2)
...
...
bu şekilde yapabilirsin tabii basit ama uzun bir yöntem olur. daha karışık ve daha efektif bir şey de yapabilirsin bilgine göre - 29-04-2010, 17:15:12Kimlik doğrulama veya yönetimden onay bekliyor.Bir Program Yazdım Ben Senin İçin Sınıf yapıları vs Kalıtımı da kullanarak tam anlamazsan daha fazlada yardımcı olabılırım
#include <cstdlib> #include <iostream> #include <cstring> #include <string> #include <locale.h> using namespace std; class SoruProgram{ protected: int YanlisSayisi; int DogruSayisi; public: SoruProgram():DogruSayisi(0),YanlisSayisi(0){ } void YSayiArtir(){ YanlisSayisi++; } void DSayiArtir(){ DogruSayisi++; } int YSayiDondur() const { return YanlisSayisi; } int DSayiDondur() const { return DogruSayisi; } }; class Sorular:public SoruProgram // kalıtım yapısı için { private: int Soru_No; char cevap; static const int sinir=4; public: int SoruUret(){ return rand()%sinir; }//Soru Uret Sonu int SoruDeger(){ return sinir; }//Soru Sayısını Döndürmek İçin void SoruSor(){ Soru_No=SoruUret(); cout <<"Soru: "<<SoruCek(Soru_No)<<endl; cout <<"Cevaplar: \n"<<CevaplariCek(Soru_No)<<endl; }//Soru Sor Sonu string SoruCek(int temp){ string Sorular; switch(temp){ case 1: Sorular ="1. Soru";break; case 2: Sorular ="2. Soru";break; case 3: Sorular ="3. Soru";break; case 4: Sorular ="4. Soru";;break; } return Sorular; }//Soru Çek Sonu string CevaplariCek(int temp2){ string Cevaplar; switch(temp2){ case 1: Cevaplar = "a) 1.\nb)2.ci\nc)3.cü\nd)4.cü";break; case 2: Cevaplar = "a) 1.\nb)2.ci\nc)3.cü\nd)4.cü";break; case 3: Cevaplar = "a) 1.\nb)2.ci\nc)3.cü\nd)4.cü";break; case 4: Cevaplar = "a) 1.\nb)2.ci\nc)3.cü\nd)4.cü";;break; } return Cevaplar; }//CevaplariCek Sonu void SoruKontrolu(){ char dogrucevap=DogruCevabiAl(Soru_No); if(cevap==dogrucevap){ SoruProgram::DSayiArtir(); } else{ SoruProgram::YSayiArtir(); } }//Soru Kontrolu Sonu char DogruCevabiAl(int SoruNo2){ char DogruCevap; switch(SoruNo2){ case 1:DogruCevap='a';break; case 2:DogruCevap='b';break; case 3:DogruCevap='c';break; case 4:DogruCevap='d';break; } return DogruCevap; }//DogruCevabi Al Sonu void CevapAl(){ cout<<"Cevabiniz: "; cin>>cevap; } void SonucuEkranaYaz(){ cout<<"Doğru Sayınız: "<<SoruProgram::DSayiDondur()<<endl; cout<<"Yanlış Sayınız: "<<SoruProgram::YSayiDondur()<<endl; } }; int main(int argc, char *argv[]) { setlocale(LC_ALL,"turkish"); srand(time(NULL)); Sorular soru;int i=1; int dongu_sayi=soru.SoruDeger(); while(i<=dongu_sayi){ soru.SoruSor(); soru.CevapAl(); soru.SoruKontrolu(); i++; } soru.SonucuEkranaYaz(); system("PAUSE"); return EXIT_SUCCESS; }