• 28-04-2010, 03:44:45
    #1
    merhaba 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
    #2
    Üyeliği durduruldu
    random 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:12
    #3
    Kimlik 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;
    }