الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

mini calc + jeu du devin

بدأه Snack3r في 2 نوفمبر 2010 · 2 رد · 1,362 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله وبركاته

سبق و أن كتبت بعض البرامج بهدف المراجعة "التطبيقية" للمبتدئين و هذه الطريقة (حسب وجهة نظري) تختزل الكثير من الوقت و تختصر الطريق أكثر بالإضافة إلى أنها تثري مستواه البرمجي لأنه سيستفيد العديد من الفكر من خلال تتبعه لهذه البرامج, لذلك أحببت أن أضع بعض برامجي هنا بغرض الإستفادة.

بداية سأضع برنامجين فقط, البرنامج الأول كتبته بلغة السي في حوالي 200 سطر برمجي أما الثاني فقد كتبته بالسي++ في حوالي 500 سطر.

البرنامج الأو عبارة عن Jeu du devin أو لعبة "الكاهن" إن صح التعبير, أما البرنامج الثاني فهو عبارة عن آلة حاسبة صغيرة مع إمكانية تحويل عدد من النظام العشري إلى النظام الثنائي و العكس.

نأتي الآن إلى تفاصيل البرنامج الأول:

اللعبة ببساطة تعتمد على توليد عدد عشوائي يقع في أحد المجالات المذكورة في واجهة البرنامج حيث توجد 5 مستوبات, كل مستوى يُحدد بمجال من الأعداد و كل ما كبر المجال كلما زادت صعوبة البحث عن العدد العشوائي (و هنا بيت القصيد), على المستخدم اختيار أحد المجالات عن طريق الرقم الذي يمثله, بعد أن يختار المستخدم المجال الذي يريده سيتم توليد عدد عشوائي يقع في المجال المُختار و على المستخدم إيجاد ذلك العدد في 5 محاولات فقط و إذا لم يفلح فسيظهر البرنامج العدد الذي كنت تبحث عنه بالإضافة إلى قائمة بمحاولاتك. في كل مرة تُخظئ في تكهن العدد سيساعدك البرنامج بإحد الجملتين : plus bas أو plus haut, الأولى تعني أن العدد المُدخل أكبر من العدد العشوائي و الثانية تعني أن العدد المُدخل أكبر من العدد العشوائي و هذا ما يساعدك في تقليص مجال البحث بهدف الحصول على العدد المُختار.

حان دور البرنامج الثاني :

البرنامج الثاني يحاكي آلة حاسبة بسيطة + إمكانية تحويل عدد ثنائي إلى عشري و العكس.

ملاحظة : توجد دوال خاصة بالتحقق من المُدخلات في كلا البرنامجين, مما يعني أنه لن يتم قبول أي مُدخلات لا توافق النوع المطلوب.

هذا ملف .cpp للبرنامج الأول:

#include "jeu du devin.h"

int main() 
{
   chargement();
   debut:
   int i=0,j,secret=0,entre,nc = 0,val_max,nbDeVies = 5,devin[5];
   char choix,string[20];;

   Menu();

   choix=getch();
   while(choix!='1' && choix!='2' && choix!='3' && choix!='4' && choix!='5')
   {
        putchar('\a');
        choix=getch();
   }
   putchar(choix);
   putchar('\n');
   switch (choix)
   {
          case '1':
          {
               val_max = 10;
               srand(time(NULL));
               secret = rand() % 10;
          };break;
          case '2':
          {
               val_max = 80;
               srand(time(NULL));
               secret = rand() % 80;
          };break;
       case '3':
       {
            val_max = 200;
            srand(time(NULL));
            secret = rand() % 200;
       };break;
       case '4':
       {
            val_max = 600;
            srand(time(NULL));
            secret = rand() % 600;
       };break;
       case '5':
       {
            val_max = 1000;
            srand(time(NULL));
            secret = rand() % 1000;
       };break; 
   }

   Color (9);

   do
   {   
     printf("\ndeviner le nombre :");
     gets(string);
     while(!isNumber(string) || atoi(string) < 0 || atoi(string) > val_max)
     {
          printf("Erreur de saisie - Recommencez ! :\a");
          gets(string);
     }
     entre = atoi(string);
     printf("%d",entre);
     devin[i++]=entre; 
     nc++;
     if (entre < secret)
     {
        printf(" plus haut\n\n\n");
        printf("il vous reste %d chance(s)\n", --nbDeVies);
     }

     if (entre > secret)
     {
        printf(" plus bas\n\n\n");
        printf("il vous reste %d chance(s)\n", --nbDeVies);
     }

     if (entre == secret)
     {
        Color (12);
        printf("\n\n\nfelicitations ! vous avez gagné en %d essai(s) \n",nc);
     }

     if (nbDeVies == 0)
     {
        printf("vous avez perdu !\n");
        printf("le nombre choisi était %d",secret);
     }

   } while (entre != secret && nbDeVies > 0 );

    Color(14);
   printf("\n\n\n\t\t  ----- Récapitulation des essai(s) -----\n");
   for(j=0;j<nc;j++)
   {
      printf("%d ",devin[j]);
      if(devin[j] < secret)
      printf("plus haut\n");
      else 
      if(devin[j] > secret)
      printf("plus bas\n");
      else
      printf("exact\n");
   }

   Color (13);
   printf("\n\n\n");
   system("pause");
   system ("cls");

   printf("Voulez-vous quitter le programme ?\n");
   printf("pour reprendre appuyez sur  r, pour quitter appuyez sur q :\n");
   choix=getch();
   while(choix!='R' && choix!='r' && choix!='Q' && choix!='q')
   {
        putchar('\a');
        choix=getch();
   }

   if(choix == 'R' || choix =='r')
   {
      system("cls");
      goto debut;
   }

   if (choix == 'Q' || choix =='q')  system("exit");

  return 0;
}

و هذه دوال البرنامج على هيئة الـ prototype :

#include<time.h>
#include<conio.h>
#include <stdio.h> 
#include <stdlib.h>
#include <windows.h>

#define New_lines printf("\n\n\n\n\n\n\n\n\n\n");

void Color(int couleurDuTexte);
void chargement();
void Menu();
bool isNumber(char* str);

هذا ملف .cpp للبرنامج الثاني:

#include "Mini BibLo.h"

int main()
{      
    float *x,*y;
    char choix,str_bin[30],str_dec[30];

    GO();
    debut:
    ELM0uTe2ElI9();
    Menu();
    Getch(&choix,1);

    switch(choix)   
    {
          case '1':
          {
                   Option();
                   Getch(&choix,2);

                   switch(choix)
                   {
                         case 'a':
                         case 'A':
                         {
                                 Bin();
                                 Getch(&choix,3);

                                 color(11);
                                 switch(choix)
                                 {
                                       case 'r':
                                       case 'R':
                                       {
                                               cout<<endl<<"entrez un nombre en base 2 : ";
                                               cin.getline(str_bin,29,'\n');
                                               converter_binary_to_decimal(str_bin);
                                               system("pause");
                                               system("cls");
                                               goto debut;
                                       };break;

                                       case 'd':
                                       case 'D':
                                       {
                                          cout<<endl<<"entrez un nombre en base 10 : ";
                                          cin.getline(str_dec,29,'\n');
                                          converter_decimal_to_binary(str_dec);
                                          system("pause");
                                          system("cls");
                                          goto debut;
                                       }break;     
                                 } 
                         }break;                                   

                         case 'b':
                         case 'B': 
                         {
                                 menu();
                                 Getch(&choix,4);
                                 color(9);
                                 cout<<endl<<"donnez le premier nombre : ";
                                 x = Atof();
                                 cout<<"donnez le deuxieme nombre : ";
                                 y = Atof();
                                 if(Div(y,&choix) == 0)
                                 {
                                   cout<<"une erreur s'est produite !\a"<<endl;
                                   cout<<"la valeur du deuxieme nombre doit être différent de zéro."<<endl<<endl;
                                 }
                                 else
                                 {
                                     if(choix == 't' || choix == 'T')
                                      choix_t(x,y);
                                     else
                                      cout<<endl<<*x<<" "<<choix<<" "<<*y<<" = "<<operation(*x,*y,choix)<<endl<<endl;
                                 }
                                 system("pause");
                                 system("cls");
                                 goto debut;
                                 }break;
                    }             
           }break;

          case '2':
          {
               about();
               system("pause");           
               system("cls");
               goto debut;
          }break;

          case '3': system("exit");break;
     }
  return 0;
}

و هذه دوال البرنامج على هيئة الـ prototype :

#include<conio.h>
#include<iostream>
#include<windows.h>
using namespace std;

#define New_lines cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl

void color(int nb);
void Fonc_Affiche(char *ptr);
void Text_colors();
void GO();
void ELM0uTe2ElI9();
void Menu();
bool Test(char opt);
bool TEst(char opt);
bool TESt(char opt);
bool TEST(char opt);
void Getch(char* ch,int nb);
void Bin();
void Option();       
void menu();
bool is_float(const char* number_string);
float* Atof();
bool Div(float* F,char* OpT);
float operation(float a,float b,char opt);
void choix_t(float* a,float* b);
long puissance(int L,int k);
bool is_bin(char* str);
void converter_binary_to_decimal(char string_bin[30]);
bool is_dec(char* str);
void converter_decimal_to_binary(char string_dec[30]);
void about();

في المرفقات يوجد الملف التنفيذي للبرنامج الأول و كذلك البرنامج الثاني.

تحياتي العطرة.

prg.rar

تم تعديل هذه المشاركة بواسطة أحمد الشنقيطي في 16 يوليو 2012 في 02:15 — السبب: حذف روابط الصور المعطوبة !

#2

جميل جدا +1111111111111111

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

bonne continuation Mr c'est tres bien fait bravo

مواضيع مشابهة