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

حزورة لتنشيط الدماغ..

رائج
بدأه مصطفى 36a2 في 1 يوليو 2012 · 81 رد · 4,562 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#51

أخي مصطفى أنا إسمي حمزة و ليس حسام :lol:

بالنسبة للطريقة فهي كما قلت تماما سنستحدم الماكرو . سننشئ Header File جديد نسميه مثلا converttopascal.h ونضع فيه هذا الكود :

#include <stdio.h>
#define program main()
#define begin {
#define writeln(x) printf(x)
#define end }

ونكتب في test.c هذا الكود :

#include "converttopascal.h"
program
begin
writeln("Iam Hamza\n");
end

ولتحميل البرنامج :

converttopascal.rar

rS3eY.png
#52

وبنفس الطريقة برمجت مكتبة للبرمجة بتعليمات الألغوريتم ( الخوارزميات ) ، إليك السورس كود :

algo.h

/* Library By Hamza Qdider*/
#include <stdio.h>
// le corps du programme 
//////////////////////////////////////////////
#define programme main()
#define debut {
#define fin }
////////////////// Variable////////////////////////////
#define entier  int 
#define reel long
#define caractere char
////////////////// Fonctions ////////////////////////
#define ecrireT(x) printf(x) // Ecrire un Texte
#define ecrireV(mode,variable) printf(mode,variable) // afficher un variable
#define lire(mode,x) scanf(mode,x)
#define arreter() getchar()                            
/////////////////////// Conditions /////////////////////////////////
#define si(x) if(x)
#define sinon(x) else(x)
/////////////////////// boocle ///////////////////////////////////
#define pour(x) for(x)
#define fairejusqua(x) while(x)

test.c

// votre Premier programme avec le langage ALGO 
// Par Hamza Qdider

#include"algo.h"
programme
debut
entier i=0;
ecrireT("Votre Premier programme avec le langage ALGO \n");
ecrireT("---------------------------------------------");
pour(i=0;i<=10;i++)
{
ecrireV("\n\tc'est le numero %d",i);
}
ecrireT("\n");
i=0;
fairejusqua(i!=10)
{
i++;
ecrireT("\n\tsalut mes amis ");
si(i==8)
ecrireT("\n\tBy Hamza QDider");
}
arreter();

fin

لتحميل الملف :

ALGO LIBRARY.rar

تم تعديل هذه المشاركة بواسطة Hamza+C+ASM في 3 يوليو 2012 في 17:18

rS3eY.png
#53

بما أنكم تناقشون الخدع و الحيل في لغة السي والسي ++ ، إليكم هذا الفيروس الذي أنشأته في وقت سابق :happy:

يجعل مؤشر الفأرة في وضعية الرجل المجنون :haha:

/* HQ Virus By Hamza Qdider */

#include <windows.h> // For SetCursorPos(int x, int y)
#include <time.h> // for Random Number
#include <stdio.h>
int main()
{
    int X=0,Y=0,loop=0;
    system("title HQ virus"); // changing Console title
    system("mode 20,20"); // change the console size
    system("color 4"); // change font color to red
    printf("HQ virus => Created By Hamza Qdider ");
    Sleep(4000); // don't do anything
    HWND HQ=FindWindow(NULL,"HQ virus"); // Find the title of the window
    ShowWindow(HQ,false); // hide window
    while(loop<1)  // if loop not equal to 1
    {
    X=rand()%(0,1000);// X = Random number from 0 to 1000
    Y=rand()%(0,800); // Y = Random number from 0 to 800
    SetCursorPos(X,Y); // gotoxy(x,y) on desktop , change the cursor position
    }
}

تم تعديل هذه المشاركة بواسطة Hamza+C+ASM في 3 يوليو 2012 في 17:26

rS3eY.png
#54

السلام عليكم ورحمة الله تعالى وبركاته أخي أحمد و أخي مصطفى ، إليكم هذه المسألة :lol: و المرجو حلها برمجيا كالعادة :rolleyes:

المسألة : لدينا بقال يبيع البيض في متجره ، جاء عنده الزبون الأول فقال له : " أعطيني نصف الكمية من البيض الذي لديك " ، فأعطاه التاجر

نصف الكمية و أعطاه بيضة هدية ، ثم جاء الزبون الثاني فقال له : " أعطيني نصف الكمية من البيض الذي لديك " ، فأعطاه التاجر نصف الكمية و أعطاه

بيضة هدية ، ثم جاء الزبون الثالث فقال له : " أعطيني نصف الكمية من البيض الذي لديك " ، فأعطاه التاجر نصف الكمية و أعطاه بيضة هدية

وفي الأخير لم تعد لدى التاجر (البقال أية بيضة) . كم هو عدد البيضات التي كانت عند البقال ؟

ولتبسط المسألة :

البائع =) البيض

الزبون 1 =) البيض / 2 + 1

الزبون 2 =) البيض / 2 + 1

الزبون 3 =) البيض / 2 + 1

البائع =) 0 بيضة .

rS3eY.png
#55

لكي لا تذهبوا بعيدا ، عندما جاء الزبون الثالث وجد أن كمية البيض المتبقية هي 2 بيضات لا غير ...

الآن أصبحت المسألة سهلة ، يمكنكم استخدام الترجع :happy:

rS3eY.png
#56

السلام عليكم

أخي حسام .. أقصد حمزة :D, أظن أن سؤالك رياضي بحت :)

  • الزبون الأول سيأخذ (1) x / 2 + 1 من البيض.
  • الزبون الثاني سيجد x / 2 - 1 من البيض و يأخذ (2)
    ( (x/2 - 1) ) / 2 + 1


  • أما الزبون الثالث فسيأخذ (3) بيضتين x = 2.

نحل المعادلة (1) + (2) + (3) = 0 و سيكون x هو عدد البيضات التي كانت عند البقال, ما رأيك ؟ :)

#57
اقتباس
ما عدا آخر طريقة .. ما هذا النوع الجديد ؟؟

مجرد structure تحتوي على عضوين هما نتيجة القسمة و باقي القسمة.

للمزيد, راجع هذه الصفحة.

#58

أخي أحمد ، السؤال رياضي كما قلت + ممكن أن تستعمل هذه الطريقة ، لكنني أريد منك طريقة برمجية بلغة السي أو السي++ :lol:

rS3eY.png
#59

الطريقة البرمجية ستكون تطبيق مباشر للمعادلة الرياضية التي ذكرتُها سابقا :)

إذا كان لديك حل السؤال بطريقة أخرى فضعه هنا لكي يستفيد الجميع.

#60

هذه محاولاتي لحل هذا السؤال ..

الطريقة الأولى, باستخدام الــ while loop :

#include<iostream>

int main() {
    int c = 3, x = 0;
    while (c-- > 0)
        x = 2 * (x + 1);
    std::cout << x << std::endl;
    return 0;
}

الطريقة الثانية, باستخدام الــ Recursive function :

#include<iostream>

int Recurs(int c, int x) {
    if (c > 0) return Recurs(c - 1, 2 * (x + 1));
    else return x;
}

int main() {
    std::cout << Recurs(3, 0);
    return 0;
}

مارأيكم ؟ :)

تم تعديل هذه المشاركة بواسطة أحمد الشنقيطي في 4 يوليو 2012 في 13:40 — السبب: تنسيق المشاركة و تصحيح الأكواد.

حسبنا الله ونعم الوكيل

#61

@Yaman -92, قمتُ بتعديل مشاركتك لتصحيح بعض الأخطاء و تنسيق المشاركة :)

عموما, محاولاتك جيدة و أظن أنه جاء دورك الآن لتضع سؤالا جديدا :happy:

#62

شكرا جزيلا لك ..

لكن لوسمحت لدي استفسار صغير ...

std::cout

بماذا تفيد ؟؟ ألا يكفي أن أضع cout .

حسبنا الله ونعم الوكيل

#63

إما أن تقوم بتضمين مساحة الأسماء std في بداية الكود :

using namespace std;

ثم تستخدم cout مباشرة.

أو يمكنك استخدام معامل تحديد المدى (Scope Resolution Operator) للوصول إلى العضو cout في كل مرة :

std::cout

سبق و أن تم نقاش فكرة مشابهة في هذه المشاركة و هنا تجد الجواب.

#64

هذا هو الحل البرمجي لمسألة البيض :

Eggs.c

#include <stdio.h>
int main(){
    float client1,client2,client3;
    float eggs;
    for(eggs=0;eggs<=100;eggs++)
    {
    client1 = (eggs / 2) + 1;
    client2 = ((eggs - client1) / 2) + 1;
    client3 = ((eggs - client1 - client2) / 2) + 1;
    if(client3==2)
    {
    printf("\n\n\tclient1 = (%1.1f / 2) + 1 => %1.1f\n",eggs,client1);
    printf("\n\n\tclient2 = ((%1.1f - %1.1f) / 2) + 1 => %1.1f\n",eggs,client1,client2);
    printf("\n\n\tclient3 = ((%1.1f- %1.1f - %1.1f) / 2) + 1 => %1.1f\n",eggs,client1,client2,client3);
    printf("\n\n\n\t\tEggs = %1.2f (eggs) ",eggs);
    getchar();
    }
}
}

المخرجات :

O6yIx.png

مجموع البيض يجب أن يكون هو 14 بيضة هههههه :wacko:

rS3eY.png
#65

جيد :)

أخي حمزة, هل لديك أسئلة أخرى ؟ :happy:

#66

ههههههههه ، دعني أفكر أخي أحمد + هل من أفكار تدور في ذهنك أنت أيضا ؟؟؟ :lol:

rS3eY.png
#67

من خردة برامجي المتواضعة ، سورس كود لبرمجة Screen Saver بسيطة :blush:

YourScreenSaver.c

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

// All Rights Reserved To Hamza Qdider
void YourScreenSaver()
{
  keybd_event(VK_MENU,0x38,0,0); // الضغط على زر ألط
  keybd_event(VK_RETURN,0x1C,0,0); // الضغط على زر أنتري
  keybd_event(VK_RETURN,0x1C,KEYEVENTF_KEYUP,0);
  keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0); // إزالة الضغط   
  Sleep(1000);
}
void cursorxy(int x,int y)
{
HANDLE curs=GetStdHandle(STD_OUTPUT_HANDLE);
COORD cursor;
cursor.X=x;
cursor.Y=y;
SetConsoleCursorPosition(curs,cursor);
}
int main()
{
    char ESC;
    int i=0;
    char text[]="\n\n\n\n\n\tFind a girl, settle down, if you want you can marry ..."
                   "\n\n\tLook at me. I'm new but I'm happy ..."
                   "\n\n\tTake a friend, Learn the C , if you want you can start ..."
                   "\n\n\tPrepare the Bac, but don't worry if you didn't win ..."
                   "\n\n\tFind a bomb, Find a TNT, the war is begining ..."
                   "\n\n\tSet up, go out, if you didn't know what I say ..."
                   "\n\n\tI Say what he said : BAC 2012 Yes we can !!!"
                   "\n\n\n\n\n\n \t\t\t  Created By Hamza Qdider";
    YourScreenSaver();
    system("color 5");
    beg:
    while(2){ 
     ESC++; 
     if(GetAsyncKeyState(ESC)){
     switch(ESC){
          case 0x1b:exit(0);
     }
  } 
     Sleep(2);
      if(i==sizeof(text)-1)goto stop;
     printf("%c",text);
     i++; 
} 
stop:
    i=0;
    goto beg;
}

من لديه برامج أو خدع فليساهم بها لإثراء هذا الموضوع السمين :)

تم تعديل هذه المشاركة بواسطة Hamza+C+ASM في 4 يوليو 2012 في 18:49

1
rS3eY.png
#68

إليكم هذه المسألة الحمقاء ( المغربية 100 * 100 :lol: ) :

لدينا الأستاذ أحمد و الأستاذ مصطفى ، اقترضت من أحمد 25 درهم ومن مصطفى 25 درهم ، كم أصبح عندي من درهم ؟؟؟

لدي الآن 50 درهم ، كل شيء واضح حتى الآن . المهم أن الجوع قد ضربني و اشتهيت طاجينا من اللحم بالزيتون المثقوب ( الخالي من البذور ) :P

حيث اشتريته ب 45 درهم ، بقي لي الآن 5 دراهم في جيبي . ولكي أخفف الدين عن نفسي قررت أن أعطيكما درهما لكل واحد ، بقي لي الآن

3 دراهم و الدين الذي بقي علي هو 48 درهما - علما أنني أعطيتكم درهمان - .

المشكل الذي يصادفنا الآن هو : أنتم تنتظرون مني أن أعطيكم 48 درهم لأكمل لكم نقودكم ، لكنني أمتلك في جيبي الآن 3 داهم و هذا يعني أن :

48 + 3 = 51 درهم . السؤال هو من أين أتى هذا الدرهم ؟ :haha: :haha: :haha:

فكروا جيدا و استخدموا البرمجة كالعادة :wub:

rS3eY.png
#69
اقتباس
من خردة برامجي المتواضعة ، سورس كود لبرمجة Screen Saver بسيطة :blush:

لم ألاحظ شيئا !

برأيك, ما وجه الشبه بين مُخرجات الكود و Screen Saver حقيقي ؟؟

لدي سؤال بسيط (كالعادة) وهو كتابة دالة تستقبل سلسلة حرفية و تعيد true إذا كان الوسيط يمثل Palindrome و إلا فالقيمة العادة تكون false.

مثلا بالجافا, ستكون الدالة هكذا :

public static boolean isPalindrome(String text) {
    if (text == null) {
        throw new NullPointerException();
    }
    return new StringBuffer(text).reverse().toString().equals(text);
}

نريد أقصر و أفضل طريق بالسي/السي++ (لا يُفضل استخدام الدوال المُعرفة مُسبقا :))

أمثلة على الــ Palindrome :

  1. بالعربية :
    • حوت فمه مفتوح
    • عقرب تحت برقع
    • بلح تعلق تحت قلعة حلب
    • مَـوَدَّتُـهُ تَـدُومُ لِـكُلِّ هَـوْلٍ ***** وَهَـلْ كُـلٌّ مَـوَدَّتُـهُ تَـدُومُ

[*]بالفرنسية :

  • La mariée ira mal
  • Engage le jeu que je le gagne
  • Tu l'as trop écrasé, César, ce Port-Salut !
  • Ésope reste ici et se repose

[*]بالإنجليزية :

  • Able was I ere I saw Elba
  • Evil I did dwell, lewd did I live
  • Go droop - stop - on ward draw no pots, poor dog
  • Rats live on no evil star

ستتم كتابة الدالة على ثلاث مراحل :

  • المرحلة الأولى من كتابة الدالة ستكون بغض النظر عن الحروف الكبير و الصغيرة الموجودة في الجملة.
  • المرحلة الثانية ستراعي حساسية الأحرف.
  • المرحلة الثالثة ستدعم الجمل العربية.
1
#70

بسم الله الرحمن الرحيم ...

أخي حمزة من أكثر الأسماء التي أحبها ... أعتذر على (عمى قلبي قبل عيني .. )

أشكرك على مشاركتك .. ولدي بعض الملاحظات ,,,

صراحة لقد خدعتنا في سؤالك dry.gif... فقد طلبت أن نحل المسألة من أجل الكود التالي :

#include<iostream>
var 
a : real
begin
writeln('Iam Hamza');
end.

وتبين أن الحل هو للكود التالي:

#include "converttopascal.h"
program
begin
writeln("Iam Hamza\n");
end

ولذلك أخطأت بقراءة اسمك ... واحدة بواحدة ... laugh.giflaugh.gifأمزح معك ..وقلبك الكبير يتّسع ... wink.gif

بالنسبة لكود الفايرس ...

في الواقع أنا معجب بخبرتك في دوال الAPI

أذكر أنك أجبت الأخ keep forword مرة على تصغير خط الكونسول .. وقد استفدت من إجابتك كثيراً .. جزاك الله خيراً ...

بالنسبة للمسألة .. أمهلني قليلاً حتى أفرغ بعض الوقت ... أظن أنني سأقوم بعمل class للبيضة وclass للبائع laugh.gif

جزاكم الله خيراً ... جميعاً ..

هذه الطريقة الوحيدة ليعود قسم ال++C لرونقه المفقود ...

أعتذر على تأخري لعدم توفر الاتصال ...

نلتقي ثانية إن شاء الله والسلام عليكم

أ@خي العزيز أحمد ... أذكر وجود مسألة رياضية أيضاً عن الpalidrome حيث يمكن أن أعطيك رقماً ما مثلا 984 وعليك إعطائي أقرب رقم palindrome وهو 989 وهكذا ...سأفرغ بعض الوقت من أجلها أيضاً ... ليست صعبة على أي حال .. وعلى الله الاتكال ..

إذا كان الأمر يتعلق بخردة البرامج القديمة فانتظروا مني بعضها .. laugh.gif

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 4 يوليو 2012 في 19:39

#71
اقتباس
المشكل الذي يصادفنا الآن هو : أنتم تنتظرون مني أن أعطيكم 48 درهم لأكمل لكم نقودكم ، لكنني أمتلك في جيبي الآن 3 داهم و هذا يعني أن :

48 + 3 = 51 درهم . السؤال هو من أين أتى هذا الدرهم ؟ :haha: :haha: :haha:

ما هذه الأسئلة يا حمزة ؟ :lol: :lol: :lol:

اقتباس
بالنسبة للمسألة .. أمهلني قليلاً حتى أفرغ بعض الوقت ... أظن أنني سأقوم بعمل class للبيضة وclass للبائع Posted Image

جزاكم الله خيراً ... جميعاً ..

مصطفى, اعمل UpDate يا رجل !! :D

تمرين البيض و الخبر .. أقصد بائع البيض ! تم حله, و انتقلنا إلى أسئلة جديدة :happy:

#72

بالنسبة لحل مسألة الأخ حمزة :

أولاً ..

اقتباس
لدينا الأستاذ أحمد و الأستاذ مصطفى

أخي أنا طالب سنة 2 بالجامعة .. وليس لدي من العلم إلا ما تراه أمامك .. لست أستاذا ولا حتى طالباً مجتهداً .. لذلك أرجوك اعفني من هذه المسؤولية ..

ثانياً .

اقتباس
فكروا جيدا و استخدموا البرمجة كالعادة :wub:

في الحقيقة أنا أستخدم عقلي في العادة .. لم أفكر باستخدام البرمجة للتفكير .. وأظن أن أخي أحمد يوافقني .. wink.gif

أما بالنسبة للحل .. في الحقيقة هناك خدعة بصرية .. أقصد خدعة دماغية في المسألة ..

لا يوجد درهم زائد أو ناقص .. المشكلة هي في السؤال ... وليست في الإجابة .. فمن قال أن مجموع ما نريده + ما بقي معك يجب أن يساوي الدين الكلّي !! blink.gif

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 4 يوليو 2012 في 19:56

#73

السلام عليكم

نبدأ مع المرحلة الأولى لكتابة الدالة.

كبداية, بمكننا التفكير في الطريقة التالية :

عكس الجملة ثم مقارنتها بالجملة الأصلية, إذا كانت مساوية لها فالجملة تمثل Palindrome و إلا فالعكس.

سنحتاج إلى ثلاثة دوال (سنتفق على تسمية مشتركة :)) :

  • دالة اسمها Swap لتبديل الخانات.
  • دالة اسمها Reverse لقلب الجملة.
  • داالة اسمها isPalindrome تُعيد true إذا كانت الجملة تمثل Palindrome و false في الحالة المُعاكسة.

هذه محاولة لكتابة Swap و Reversse باستخدام الــ for loop :

#include<stdio.h>
#include<string.h>

void Swap(char* s, int i, int j)
{
    char temp = s;
    s = s[j];
    s[j] = temp;
}

void Reverse(char* str)
{
    int i = 0, j = strlen(str) - 1;
    for(; i < j; ++i, --j)
        Swap(str, i, j);
}

int main(){
    char phrase[] = "able was I ere I saw elba";
    Reverse(phrase);
    printf("%s\n",phrase);
    return 0;
}

و هذه طريقة أخرى باستخدام الــ Recursive function :

#include<stdio.h>
#include<string.h>

void Swap(char* s, int i, int j)
{
    char temp = s;
    s = s[j];
    s[j] = temp;
}

void Reverse(char* s, int i, int j)
{
    if(i >= j) return;
    Swap(s, i, j);
    Reverse(s, i+1, j-1);
}

void Inverse(char* s)
{
    Reverse(s, 0, strlen(s)-1);
}

int main(){
    char phrase[] = "able was I ere I saw elba";
    Inverse(phrase);
    printf("%s\n",phrase);
    return 0;
}

لي عودة لتكملة الأكواد :)

1
#74

حسنا سيكون كلامي قاسياً لك أخي العزيز أحمد angry.gif... ولكن من قال أنني سأسمح بأن تسبقني laugh.gif

في الحقيقة لم أحتج إلى كل هذه الدوال (والتي لا أنكر جمالها طالما أنك أنت من قمت بكتابتها happy.gif)

ولكن إليك محاولتي :

#include<iostream>
#include<string>
using namespace std;
bool ispalindrome(char*A,unsigned int length)
{
	for(int i=0;i<length/2;i++)
		if(A!=A[length-i-1])return false;
	return true;
}
int main()
{
	char array[100];
	cout<<"Enter A Sentence\n";
	cin>>array;
	cout<<strlen(array)<<endl;
	cout<<(ispalindrome(array,strlen(array))?"OH!!It's A palindroem :D\n":"Not Palindrome:(\n");
	main();
	return 0;
}

ما رأيك ؟؟ دالة واحدة .. مع تحياتيteeth_smile.gif

بالمناسبة .. أنا معجب جداً بجمال تنسيق ردودك ألوان وترتيب .. ما شاء الله عليك ...

وبما أن الحكمة ضالة المؤمن فاسمح لي أن أتعلم منك هذا الترتيب .. وأستخدمه في ردودي من بعد إذنك ... happy.gif

نلتقي غداً بإذن الله تعالى .. والسلام عليكم

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 5 يوليو 2012 في 00:58

1
#75
اقتباس
حسنا سيكون كلامي قاسياً لك أخي العزيز أحمد :mad: ... ولكن من قال أنني سأسمح بأن تسبقني :lol:

المعذرة, لن أكررها مرة أخرى :P

اقتباس
ما رأيك ؟؟

جميل (طالما أنك أنت من كتب الكود :lol: )

اقتباس
بالمناسبة .. أنا معجب جداً بجمال تنسيق ردودك ألوان وترتيب .. ما شاء الله عليك ...

وبما أن الحكمة ضالة المؤمن فاسمح لي أن أتعلم منك هذا الترتيب .. وأستخدمه في ردودي من بعد إذنك ... :happy:

أوكي, لكن حاول استخدام ألوان مختلفة حتى أستطيع تمييز مشاركاتك :D

بالمناسبة, لن أستطيع تكميل الأكواد حاليا .. لأنني أحس بالملل .. :dry:

+

مضى يوم كامل ولم يدخل أحد من مشرفي القسم :sad:

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