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

اختبر مهاراتك في المؤشرات (الحلقة الثالثة)

مغلقرائج
بدأه khaled_prg في 25 فبراير 2012 · 70 رد · 4,452 مشاهدة · في مشاريع ومسابقات القسم
مشاركة: واتساب X فيسبوك تيليجرام
#51
ahmedsaoud31 كتب:

بارك الله فيك أنا عندى كتابة ملف وورد أصعب 100 مرة من كتابة الكود نفسة D:

بالتأكيد أخ أحمد، فالهدف في النهاية زيادة الفائدة لمن يشاهد الموضوع من المبتدئين قدر المستطاع..

ahmedsaoud31 كتب:

بالنسبة للفكرة الأولى فهذا لايتم فى الحقيقة أثناء تسجيلك فى بريد ياهو لأن عملية التحقق تتم بعد إنتهائك من كتابة البريد كامل ثم تتم عملية التحقق بعد ضغطك على ذر تحقق.

وبالنسبة للفكرة الثانية فعلاً فكره جميلة سننظر فى أمرها عما قريب :)

النقطة الثالثة هى النقطة القائم عليها هذا المشروع كلياً . فيجب أن نطورها بما يكفى حتى لا تكون بها أى ثغرات إن شاء الله.

khaled_prg كتب:

مثل ماذا ؟ هل ما زالت لديك أفكار أخرى تتعلق بتطوير التحقق من المُدخلات لم تذكرها بعد ؟ :)

هذه كانت تعليقاتي على كودي، أي أنني أحببت لو أضفتها لكن لضيق الوقت لم أستطع smile.gif

مثل عندما يضغط المستخدم مفاتيح الأسهم، فسيقوم الكود الذي كتبتُه بطباعة رمز على الشاشة وهذا غير مرغوب، وإصلاح هذا المشكلة يتطلب بعض الوقت والخبرة ..

(لم تنفع معي محاولة التحقق أن الرمز > 127 في جدول أسكي) (طبعاً بعد تحويل الرمز إلى unsigned char).

محمد ابوزايد كتب:

السلام عليكم .... .

بداية ارحب بكل لغات الحب والترحيب بخواينا:

1-Omnivore

2-ElectroDoc

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

وعليكم السلام ورحمة الله أح محمد

(جميلة عبارة 'بكل لغات الحب والترحيب')

وبدوري أرحب بك وبأخي OmniVore بكل لغات البرمجة والتطوير laugh.gif

بالتوفيق للجميع

#52

السلام عليكم

حتى نُسهل اختبار برامجنا من طرف بقية الأعضاء, يُفضل وضع الأسطر التالية في نهاية الملف التنفيذي :

system("PAUSE");
system("CLS");
goto Log_In;

لكي يعود البرنامج إلى بدايته في كل مرة و بهذا تسهل عملية اختبار البرنامج. ( لأن تنفيذ البرنامج في كل مرة من جديد أمر مُرهق ! :blush: )

اقتباس
نسيت أن أقل قيمة للإيميل هى 10 وأنا قمت بوضعها 6 فى البرنامج

لا بأس, حصل خير :)

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

#53

لمن يريد تجربة برنامجي بدون وجع راس :D لأن البرنامج يعود إلى بدايته في كل مرة :)

main.rar

تم تعديل هذه المشاركة بواسطة khaled_prg في 2 مارس 2012 في 19:31

#54

السلام عليكم

اقتباس
حتى نُسهل اختبار برامجنا من طرف بقية الأعضاء, يُفضل وضع الأسطر التالية في نهاية الملف التنفيذي :

تسببت بنفس المشكلة عند إستخدام clear مع goto

المشكلة عندى أنا فى المصفوفة التى يتم فيها تخزين الأخطاء وليس فى الدالة التى أرسلتها.

إليكم الكود ولكن وجع الراس موجود به ... طبعاً وجع الراس ده مش من ضمن نقاط التقييم :D

تعديل تم رفع الملف التنفيذى ضمن الكود !!!

email-val2.zip

تم تعديل هذه المشاركة بواسطة ahmedsaoud31 في 2 مارس 2012 في 21:19

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#55

السلام عليكم

اقتباس

محمد ابوزايد قال :

السلام عليكم .... .

بداية ارحب بكل لغات الحب والترحيب بخواينا:

1-Omnivore

2-ElectroDoc

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

وعليكم السلام ورحمة الله أح محمد

(جميلة عبارة 'بكل لغات الحب والترحيب')

وبدوري أرحب بك وبأخي OmniVore بكل لغات البرمجة والتطوير laugh.gif

بجافا :

Person Friends[] = {ElectroDoc,AbuZayid,Khaled, the_rest};
for(Person p : Friends)
System.out.println(" Welcome " + p);

بــسي : ( اكتبوها وحدكم ههههههههه )

بسي بلس بلس : يكفيكم مراجعة الكود المرفق , ههههههههههه

بسي شارب :

؛Person[] Friends = {ElectroDoc,AbuZayid,Khaled, the_rest};
			foreach(var p in Friends){
			   Console.WriteLine("Welcome " + p);
			}

تم تغيير البرنامج حتى لا يتوقف الا بطلب من المستخدم و تم تغيير رسائل الخطأ و رسالة الترحيب الى الانجليزية

اما ملف الوورد فلا اعتقد اني ساكتب واحدا لا اليوم و لا غدا

كما اعتقد ان الكود واضح و مقسم الى مقاطع صغيرة و الدوال لها اسماء توحي بعملها لتسهيل الفهم ,

بالتوفيق للجميع

EMailValidation_version0.4.zip

وما كلُّ ذِي لُبٍّ بمِؤْتيكَ نُصحَه ****** وما كلُّ مؤْتٍ نُصحَه بلبيب

************************************************

ما دعوة أنفع يا صـــــاحبي .... من دعوة الغــــائب للغــــائب

ناشدتك الــــرحمن يا قــــارئاً .... أن تسأل الغفران للكاتب (ولوالديه)

#56
اقتباس

السلام عليكم

ElectroDoc@

حتى يستطيع الأعضاء الذين لا يستخدمون Pelles تجربة برنامجك, نرجوا منك إعادة رفع الملف التنفيذي مع توقيف شاشة البرنامج عند نهاية الــ main تماما كما فعلت أنا مع الملف التنفيذي.

عندي سؤال آخر لك, هل الدالة textcolor قياسية ؟؟ لماذا لا تعمل في بقية الــ IDE ؟ :blink:

بالتوفيق.

وعليكم السلام أخ خالد.

تم التعديل على الكود ورفعه.

بالنسبة للدالة textcolor وجدتها في موقع CProgramming.com هنا. وأعتقد أنها ليست قياسية، فكما هو مذكور في المقال:

اقتباس

This is a highly system dependent question

لكنها تعمل على Pelles C بكل سهولة.

اقتباس

نسيت أن أقل قيمة للإيميل هى 10 وأنا قمت بوضعها 6 فى البرنامج

هي 6 في الحقيقة. لا داعي لتغييرها.

هذا نص المسابقة كما كتبها الأخ خالد (أول مشاركة):

اقتباس

الجزء الموجود قبل @ يجب أن لا يقل عن 6 خانات و لا يتجاوز الــ 20.

أما كلمة المرور فهي التي لا يجب أن تقل عن 10 أحرف:

اقتباس

يجب أن لا يقل طول كلمة المرور عن 10 خانات و لا يتعدى 30 خانة.

Series3.rar

تم تعديل هذه المشاركة بواسطة ElectroDoc في 2 مارس 2012 في 22:25

#57

السلام عليكم

للذين لا يريدون قراءة الكود و ترجمته و لكن يرغبون في تجربته يرجى تحميل الملف التنفيذي من المرفقات

بالتوفيق للجميع

emailvalidation_version0.4_exe_only.zip

وما كلُّ ذِي لُبٍّ بمِؤْتيكَ نُصحَه ****** وما كلُّ مؤْتٍ نُصحَه بلبيب

************************************************

ما دعوة أنفع يا صـــــاحبي .... من دعوة الغــــائب للغــــائب

ناشدتك الــــرحمن يا قــــارئاً .... أن تسأل الغفران للكاتب (ولوالديه)

#58

هذة المشاركة بأضافة الشرح أو التعليلقات:

/////////////////////////////////////////////////////////////////////////////////////
//////////برنامج بسيط لمحاكاة عملية التسجيل بخدمة البريد الاليكترونى لشركة ياهوو ///////////

#include <iostream>
#include <conio.h>
//  الحد ا?قصى لمخزن البيانات المؤقت لكلمتى السر والاميل
int const MaxPassAndEmailLen = 64;
using namespace std;

class YahooLogOn
{
private:
    int ErrorID[2];
    char Email[MaxPassAndEmailLen];
    char PassWord[MaxPassAndEmailLen];
    bool m_AllowEmailletter(const char *ch);
    bool m_NotAllowPasswordLetters(const char *ch);
    bool m_EmailNameCorrect(const char *strname, unsigned int charnum);
    bool m_PassIsCorrect(const char *strpass, unsigned int passlen);
    int m_strcmp(const char *str1, const char *str2);
    void m_tolower(char *str);
    unsigned int m_strlen(const char *str);
    int GetEmail();
    int GetPassWord();

public:
    YahooLogOn();
    void NewMailSession() ;
};

//////////////////////////////////// الدالة الرئيسية////////////////////////
int main(int argc, char** argv)
{

    do{
        cout << endl;
        YahooLogOn newseesion;
        newseesion.NewMailSession();
        cout << "Do you want to test it Again?: z to quite.: ";
    } while(getch() != 'z');
        return 0;
} // end of main

//////////////////////////////////////////////////////////////////////////////
YahooLogOn::YahooLogOn()
{
    for (int i = 0; i < MaxPassAndEmailLen; i++)
        *(PassWord + i) = '\0';
    ErrorID[0] = 0;
    ErrorID[1] = 0;
}

//////////////////////////////////////////////////////////////////////////////
// ترجع القيمة الصحية 1 فى حالة ان كلمة السر صحيحة
bool YahooLogOn::m_EmailNameCorrect(const char *strname, unsigned int charlen)
{
    unsigned int Found = 0;
    for (int i = 0; i < charlen; i++)
        if (m_AllowEmailletter(strname + i))
            Found++;
    return (Found == charlen);
}
///////////////////////////////////////////////////////////////////////////////
//هذة الدالة هى المئولة عن طلب البريد الاليكترونى من المستخدم
//وترجع 1 فى حالة ن الاميل أم اصغر من المطلوب او اكبر من المطلوب
//وترجع القيمة 3 فى حالة ان طول الاميل صحيح ولكن لا يحتوى على اسم الدومين بشكل صحيح
//مثل @yahoo.com or @yahoo.fr
// وترجع القيمة صفر فى  حالة الاميل تم ادخالة بصورة صحيحة
int YahooLogOn::GetEmail()
{
    cout << "Email: ";
    cin.getline(Email, MaxPassAndEmailLen);
    m_tolower(Email); // convert email name to lower to prepare it for campare.
    unsigned int i = 0;
    unsigned int EmailLength = m_strlen(Email);

    if (EmailLength < 15 || EmailLength > 30 ) // email between 15 to 30 letter.
        return 1;
    else if (m_strcmp(Email + (EmailLength - 9), "@yahoo.fr") == 0)
    {
        if (!m_EmailNameCorrect(Email, EmailLength - 9))
            return 3;
    }
    else if (m_strcmp(Email + (EmailLength - 10), "@yahoo.com") == 0)
    {
        if (!m_EmailNameCorrect(Email, EmailLength - 10))
            return 3;
    }
    else if (!((m_strcmp(Email + (EmailLength - 9), "@yahoo.fr") == 0)||
               (m_strcmp(Email + (EmailLength - 10), "@yahoo.com") == 0)))
        return 3;
    else
        return 0;
}


////////////////////////////////////////////////////////////////////////////
// ترجع القيمة الصحية 1 فى حالة ان كلمة السر صحيحة
bool YahooLogOn::m_PassIsCorrect(const char *strpass, unsigned int passlen)
{
    unsigned int Found = 0;
    for (int i = 0; i < passlen; i++)
        if (!m_NotAllowPasswordLetters(strpass + i))
            Found++;
    return (Found == passlen);
}

/////////////////////////////////////////////////////////////////////////////
//ترجع قيمة صحيحة  فى حالة ان اسم المستخدم مكون من الحروف المسموح بهاالعكس بالعكس
bool YahooLogOn::m_AllowEmailletter(const char *ch)
{
    return ( (*ch > 95 && *ch < 123) || (*ch > 63 && *ch < 91) ||
             (*ch > 47 && *ch < 58) || (*ch == '_'));
}

/////////////////////////////////////////////////////////////////////////////
// ترجع قيمة صحية فى حالة احتواء كلمة السر على اى حرروف غير مسموح بها
bool YahooLogOn::m_NotAllowPasswordLetters(const char *ch)
{
    return ( *ch == '<' || *ch == '>' || *ch == '|' || *ch == ':' ||
             *ch == '"' || *ch == '\'' || *ch=='/' || *ch== 0x60 );
}


/////////////////////////////////////////////////////////////////////////
//دالة الحصول على كلمة السر من المستخدم
//وترجع 1 اذا كانت كلمة السر صغيرة للغاية او كبيرة للغاية
//وترجع 2 فى حالة احتواها على حروف غير مسموح بها
// والقيمة صفر فى حالة كلمة سر صحيحة
int YahooLogOn::GetPassWord()
{
    cout << "Pass Word: ";
    char ch;
    unsigned int i = 0;

    while((ch=getch()) != '\r')
    {
        putch('*');
        if(i < MaxPassAndEmailLen) *(PassWord+i) = ch;
        i++;
    }
    unsigned int PassLength = m_strlen(PassWord);
    if (PassLength < 10 || PassLength > 30 )
        return 1;
    else if (!m_EmailNameCorrect(PassWord, PassLength))
        return 2;
    else
        return 0;
}
/////////////////////////////////////////////////////////////////////////
//طباعة رسائل الخطأ
void YahooLogOn::NewMailSession()
{
    ErrorID[0] = YahooLogOn::GetEmail();
    ErrorID[1] = YahooLogOn::GetPassWord();

    if((ErrorID[0] && ErrorID[1]) == 0)
        cout << "\ncongratulation u now connected.\n";

    switch (ErrorID[0])
    {
    case 1:
        cout << "Email too samll long.\n";
        break;
    case 2:
        cout << "Email not end with @yahoo.com or @yahoo.fr .\n";
        break;
    case 3:
        cout << "sorry alph letter and numbers and underscore allowed.\n";
        break;
    default: "Error while connection\n" ;
    }
    switch (ErrorID[1])
    {
    case 1:
        cout << "pass too samll or long.\n";
        break;
    case 2:
        cout << "sorry < > ' | :. not allowed. \n";
        break;
    default: "Error while connection\n";
    }
}

//////////////////////////////////////////////////////////////////////////
//هذة الدالة ترجع طول السلسة النصية المررة اليها
unsigned int YahooLogOn::m_strlen(const char *str)
{
    unsigned int i = 0;
    while (*str++ != '\0')
        i++;
    return i;
}

//////////////////////////////////////////////////////////////////////////
// هذة تقوم بقارنة سلسلتين نصيتين فى حالة التساوى ترجع القيمة صفر وترجع قيمة
//اكبر من صفر اذا كان النص ا?ول اكبر من الثانى والقيمة اصغر من صفر فى العكس
int YahooLogOn::m_strcmp(const char *s1, const char *s2)
{
    while ((*s1 && *s2) && (*s1++ == *s2++));
    return *(--s1) - *(--s2);
}

////////////////////////////////////////////////////////////////////////////
//تقوم بتحويل الحروف من حرف كبيرة الى حروف صغيرة
void YahooLogOn::m_tolower(char *str)
{
    while (*str != '\0')
    {
        if ((*str > 64 && *str < 91))
            *str = (*str) + 32;
        str++;
    }
}

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#59

السلام عليكم

شُكرا للإخوة على رفع الملفات بعد التحديث :)

هناك خطأ صغير في إحدى رسال الخطأ عندي. الرسالة تقول أن الإيميل يجب أن ينتهي بـ yahoo.com و هذا خطأ لأن الإيميل حسب برنامجي يجب أن ينتهي بـ yahoo.fr و السبب في ذلك يعود إلى أن إعدادات البرنامج مبرمجة حسب نسخة الــ YAHOO الفرنسية.

تم تصليح الخطأ. البرنامج تجدونه في المرققات.

قمتُ بكتابة شرح لملف ValidatePassword.h. الشرح تجدونه في المرفقات.

سأكمل الشرح غدا ليشمل الملف ValidateEmail.h و الــ main.cpp أيضا.

ملاحظات :

  • آخر موعد لتسليم ملفات الوورد سيكون 03 Mars الساعة 12:00 GMT.
  • التعليقات الموجودة في الكود لا تحل محل ملف الوورد.
  • سيتم فتح موضوع النقاش مساء غد إن شاء الله.

بالتوفيق.

main.rar

Doc.pdf

تم تعديل هذه المشاركة بواسطة khaled_prg في 3 مارس 2012 في 00:55

#60

@محمد ابو زايد: بدافع الفضول قرأت الكود الخاص بك الموجود بالمشاركه بالأعلي و لاحظت انك كتبت كل الدوال، إليك ملاحظات لتحسين و تقليل الكود:

1- لا تستخدم char array و استخدم الفئه string. إذا اردت عدد الحروف ألا يتجاوز عدد معين يمكنك التحقق من عدد الحروف بالمتغير بعد قراءة المحتويات من cin.

2- الداله length بالنوع string ستكون بديله لدالتك m_strlen، أيضا البادئه "_m" تستخدم فقط مع المتغيرات الداخليه و ليس اسماء الدوال.

3- يمكنك الإستغناء عن دالتك m_tolower و إستخدام الداله transform لتطبيق الداله tolower على كل الحروف الموجود بكائن الفئه string كالتالي:

#include <algorithm>
#include <string>
using namespace std;

int main()
{
    string value = "MUHAMMAD ALAA";
    transform( value.begin(), value.end(), value.begin(), tolower );
    // value = muhammad alaa
}

4- يمكنك إستخدام المعامل == للمقارنه بين كائنين من نوع string و النتيجه ستماثل عمل دالتك m_strcmp.

5- الدوال m_AllowEmailletter و m_NotAllowPasswordLetters لا تقم بتمرير "*const char" و قم بتمرير "char" و ذلك لأنك بداخلهم لا تقوم بإجراء اى عمليات عليهم فقط تقوم بعمل dereference.

6- الداله m_AllowEmailletter قم بداخلها بإستخدام الحروف و لا تستخدم الأرقام لأنه من يقرأ الكود لا يعمل ما هي الحروف المقابله لهذه الأرقام و المترجم سيقوم بتحويل الحروف لأرقام بدلا منك.

7- الدالتين m_AllowEmailletter و m_NotAllowPasswordLetters الهدف منهم هو مقارنة حرف لمجموعة حروف و ارجاع true إذا كان موجود بالمجموعه او false إذا لم يكن موجود، إذا اعتبرنا ان كلمة السر مخزنه داخل المتغير email_pass و هو من نوع string و ان الحروف الغير مسموح بتواجدها داخل كلمة السر هي الموجوده داخل الداله m_NotAllowPasswordLetters يمكننا إعادة كتابة الكود بالشكل التالي:

#include <string>
using namespace std;

int main()
{
    const string invalid_chars = "<>|:\"\'/";
    string email_pass = "invalid_:_pass";
    int idx = email_pass.find_first_of(invalid_chars, 0);
}

المتغير index سيحتوي على -1 إذا كانت كلمة المرور لا تحتوى على حرف من invalid_chars و غير ذلك ستعود لك بموقع اول حرف مخالف داخل النص email_pass.

8- لاحظت انك تستخدم الداله compare لتقارن نهاية البريد المدخل مع النص "yahoo.fr@"، الداله string.compare حلت لك هذه المشكله بأحد الـ overloads ألخاصه بها و بالتحديد هذه النسخه:

int compare( size_t pos1, size_t count1, const string& str ) const;

حيث المعامل الأول هو موقع الجزء داخل البريد الإلكتروني الذى يبدأ بعلامة @ - و يمكنك الحصول عليه بإستخدام الداله find - و المعامل الثاني هو عدد الحروف التى تريد مقارنتها و في حالتك هذه سيكون الموقع الحروف @ مطروحا من عدد الحروف بالبريد المدخل، المعامل الأخير هو النص التى تريد المقارنه معه و الذى ينتهي بـ "fr".

**********************

إذا قمت بتطبيق البدائل التى كتبتها لك هنا و قارنت النسخه الجديده مع الموجوده ستجد انك حذفت ما يقارب من 50% من الكود المكتوب.

مكتبات اللغه تحتوي على العديد من المزايا تعلمها أولا و بعدها إذا اردت ان تكتب نسخ خاصه بك للتعلم فلا بئس بذلك و لكن لا تجعل هذا الإسلوب يطغي عليك لإنك بمرور الوقت بهذا الإسلوب ستمل من اللغه لأنك ستجد انك تكتب كل شئ بيبدك.

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#61
محمد علاء الدين كتب:

@محمد ابو زايد: بدافع الفضول قرأت الكود الخاص بك الموجود بالمشاركه بالأعلي و لاحظت انك كتبت كل الدوال، إليك ملاحظات لتحسين و تقليل الكود:

و الله ولي التوفيق

على الرحب والسعة دائما موضوعاتك وملاحظاتك محل اهتمامنا الشديد بكم ومنك نتعلم . طيب الله خاطرك

والله ولى التوفيق

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#62

مرحبا أخوتي :)

بشكل عام, المشروع لا يطلب من المبرمج اختراع العجلة, أقصد كتابة كل شيء من جديد.

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

@محمد علاء الدين

نرجو أن تتواجد معنا مساء هذا اليوم في موضوع النقاش حتى تُساعدنا في تنقيح برامجنا و اكتشاف الثغرات الموجودة بها.

لي عودة :)

تم تعديل هذه المشاركة بواسطة khaled_prg في 3 مارس 2012 في 14:07

#63

رأيت أن وقت نهاية التسليم تم تمديده يوم آخر، فقلت أضيف بعض التحسينات على مشروعي happy.gif

(أظن أني لم أتجاوز الحد بعد، الساعة الآن 11 ونصف تقريباً حسب GMT)

الإضافات:

  • أربع دوال إضافية تشابه الدوال قياسية، كي أستخدم المؤشرات في العمليات المجراة على السلاسل.
  • تحديث ملف الوورد

مع تحياتي

Series3 v0.1.zip

تم تعديل هذه المشاركة بواسطة ElectroDoc في 3 مارس 2012 في 14:43

#64

السلام عليكم

اقتباس
رأيت أن وقت نهاية التسليم تم تمديده يوم آخر، فقلت أضيف بعض التحسينات على مشروعي Posted Image

(أظن أني لم أتجاوز الحد بعد، الساعة الآن 11 ونصف تقريباً حسب GMT)

و من قال بتمديد موعد تسليم المشروع ؟ :)

أنا قلتُ :

اقتباس
آخر موعد لتسليم ملفات الوورد سيكون 03 Mars الساعة 12:00 GMT.

تم تمديد موعد تسليم ملفات الوورد و ليس المشروع برُمتِه ! :)

عموما, إضافاتك تلك ستفيد قارئ الموضوع بلا شك :happy:

أنا أيضا تأخرت عن الموعد المُحدد لتسليم ملف الوورد, لذا لن أحصل على النقاط الخاصة بالملف :)

و لكن من باب إفادة الآخرين أحببت أن أرفق الشرح هنا حتى يستفيد القارئ المبتدئ فالنقاط كما نعلم ليست كل شيء ... :happy:

جاري تصحيح المحاولات و توزيع نقاط المشروع, طبعا ستكون هذه النتيجة الأولية لكل مشارك. النتيجة الكاملة سنعلن عنها بعد انتهاء مناقشة المحاولات و توزيع النقاط الخاصة بتقييم الأعضاء.

Doc.pdf

#65

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

كيف أحوالكم

قمت بعمل البرنامج بشكل أخر كما لمح الأخ ElectroDoc وقام بالتنفيذ الأخ خالد فأردت طرح فكرة التحقق اللحظى بشكل أخر أرجو أن تعجبكم.

بالنسبة للأصوات فأنا أخذت بكلام الأخ ElectroDoc وسماعها فى برنامج الأخ خالد :D

أعلم أن وقت التسليم قد ولُى :D ولكن للإستفادة:

الملاحظات على الكود :

1 - لا يدعم حالياً إلا yahoo.ar :D .

2 - لا يظهر جمل بالأخطاء لأنة بكل بساطة لا يقبلها أصلاً.

إليكم الكود مع الملف التنفيذى فى المرفقات

newEmailVal.zip

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#66

الترتيب سيكون حسب أسبقية المحاولة :

  • Omnivore
  • ahmedsaoud31
  • khaled_prg
  • محمد ابوزايد
  • ElectroDoc

العضو Omnivore :

  • الإيميل يدعم النسخة الفرنسية (fr) و الإنجليزية (com) في آن واحد (2/2)
  • كتابة دوال للتحقق من الإيميل و كلمة المرور في مكتبة منفصلة (2/2)
  • التحقق يجب أن يكون باستخدام المؤشرات فقط (2/2)
  • كل خطأ يجب أن يحتوي على رسالة تُوضح ماهية الخطأ (2/2)
  • تلوين رسائل الخطأ (2/2)
  • كتابة ملف الوورد (0/2)
  • تقييم الأعضاء للمحاولة (12/?)

  • مجموع النقاط بدون تقييم الأعضاء = (10/12)
  • مجموع النقاط حسب تقييم الأعضاء = (12/?)

العضو ahmedsaoud31 :

  1. الإيميل يدعم النسخة الفرنسية (fr) و الإنجليزية (com) في آن واحد (2/2)
  2. كتابة دوال للتحقق من الإيميل و كلمة المرور في مكتبة منفصلة (2/2)
  3. التحقق يجب أن يكون باستخدام المؤشرات فقط (2/2)
  4. كل خطأ يجب أن يحتوي على رسالة تُوضح ماهية الخطأ (2/2)
  5. تلوين رسائل الخطأ (2/2)
  6. كتابة ملف الوورد (0/2)
  7. تقييم الأعضاء للمحاولة (12/?)

  • مجموع النقاط بدون تقييم الأعضاء = (10/12)
  • مجموع النقاط حسب تقييم الأعضاء = (12/?)

العضو khaled_prg :

  • الإيميل يدعم النسخة الفرنسية (fr) و الإنجليزية (com) في آن واحد (0/2)
  • كتابة دوال للتحقق من الإيميل و كلمة المرور في مكتبة منفصلة (2/2)
  • التحقق يجب أن يكون باستخدام المؤشرات فقط (2/2)
  • كل خطأ يجب أن يحتوي على رسالة تُوضح ماهية الخطأ (2/2)
  • تلوين رسائل الخطأ (2/2)
  • كتابة ملف الوورد (0/2)
  • تقييم الأعضاء للمحاولة (12/?)

  • مجموع النقاط بدون تقييم الأعضاء = (08/12)
  • مجموع النقاط حسب تقييم الأعضاء = (12/?)

العضو محمد ابوزايد :

  • الإيميل يدعم النسخة الفرنسية (fr) و الإنجليزية (com) في آن واحد (2/2)
  • كتابة دوال للتحقق من الإيميل و كلمة المرور في مكتبة منفصلة (2/2)
  • التحقق يجب أن يكون باستخدام المؤشرات فقط (2/2)
  • كل خطأ يجب أن يحتوي على رسالة تُوضح ماهية الخطأ (2/2)
  • تلوين رسائل الخطأ (0/2)
  • كتابة ملف الوورد (0/2)
  • تقييم الأعضاء للمحاولة (12/?)

  • مجموع النقاط بدون تقييم الأعضاء = (08/12)
  • مجموع النقاط حسب تقييم الأعضاء = (12/?)

العضو ElectroDoc

  • الإيميل يدعم النسخة الفرنسية (fr) و الإنجليزية (com) في آن واحد (2/2)
  • كتابة دوال للتحقق من الإيميل و كلمة المرور في مكتبة منفصلة (2/2)
  • التحقق يجب أن يكون باستخدام المؤشرات فقط (2/2)
  • كل خطأ يجب أن يحتوي على رسالة تُوضح ماهية الخطأ ((2/2)
  • تلوين رسائل الخطأ (2/2)
  • كتابة ملف الوورد (2/2)
  • تقييم الأعضاء للمحاولة (12/?)

  • مجموع النقاط بدون تقييم الأعضاء = (12/12)
  • مجموع النقاط حسب تقييم الأعضاء = (12/?)

بالتوفيق للجميع.

#67
اقتباس
قمت بعمل البرنامج بشكل أخر كما لمح الأخ ElectroDoc وقام بالتنفيذ الأخ خالد فأردت طرح فكرة التحقق اللحظى بشكل أخر أرجو أن تعجبكم.

وجبة دسمة :D و تكون لذيذة أكثر عندما يدعم البرنامج com و fr و ar في آن واحد :wink:

اقتباس
بالنسبة للأصوات فأنا أخذت بكلام الأخ ElectroDoc وسماعها فى برنامج الأخ خالد :D

:lol: :lol: :lol:

جاري فتح موضوع النقاش :)

#68

شكراً لك أخ خالد على العلامات smile.gif

لكن بما أن مشاركتي الأخيرة لن تحسب (والحق معك) فلا أدري إن كان كودي السابق يستحق 12/12 blush.gif

#69
اقتباس
بما أن مشاركتي الأخيرة لن تحسب (والحق معك) فلا أدري إن كان كودي السابق يستحق 12/12 :blush:

أنت تستحق 12/12 بدون مشاركتك الأخيرة :)

السبب الذي جعل بقية المشاركين يحصلون على 08/12 و 10/12 كان يكمن في تلوين رسائل الخطأ و كتابة ملف الوورد و انت قمت بتلوين رسائل الخطأ و كتبت ملف الوورد أيضا, لذا فأنت تستحق 12/12 عن جداره. ألف مبروك لك :clapping:

بالمناسبة, تم افتتاح موضوع النقاش :

اختبر مهاراتك في المؤشرات (الحلقة الرابعة) - مناقشة الحلول التي قدمها الأعضاء لمشروع مُحاكاة الـ Yahoo !

بالتوفيق.

تم تعديل هذه المشاركة بواسطة khaled_prg في 3 مارس 2012 في 20:17

#70
اقتباس
لكن بما أن مشاركتي الأخيرة لن تحسب (والحق معك) فلا أدري إن كان كودي السابق يستحق 12/12 Posted Image

التقييم كان على أساس النقاط المطلوبة وأنت حققت النقاط المطلوبة كلها ... :clapping: تحياتى لك

اقتباس

وجبة دسمة :D و تكون لذيذة أكثر عندما يدعم البرنامج com و fr و ar في آن واحد :wink:

تم تعديل الكود ليدعم الدومينات الثلاثة ولكن الدومين yahoo.ar لا أظنه موجود فى الحقيقة :D البرنامج " فى المرفقات "

نلقاكمك عما قريب فى المناقشة

newEmailVal.zip

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#71

شكراً لكما اخوتي خالد وأحمد smile.gif هذا واجبي

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…