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

مشكله مع ال int ؟؟؟ يستقبل حروف ليش ؟؟

بدأه mimma في 18 أكتوبر 2010 · 6 رد · 949 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

بس واجهت مشكله واتمنى منكم المساعده الممكنه

انا معرف متغير على انه integer بس اذا ادخلت فيه اي حرف يقبله

طيب هو integer اصلا ... كيف يقبل char ؟ ؟ ؟

سؤالي الثاني

انا شفت انه في بعض البرامج الاكواد او الاسطر في ال cout screan ملونه , فهل هذا ببرنامج معين او بكود اضيفه ؟!

سؤالي الاخير

كيف اضيف الوقت في البرنامح حقي بحيث انه يظهر في الcout screan ؟ وهل هو ممكن اصلا ؟؟

تحياتي ,,

#2

سأجيبك عن سؤالك الاول و الثانى بأذن الله

السؤال الاول :

الحروف فى الكمبيوتر اساسها ارقام اذا فأن كتبت حرف A ستكون رقم 65 و اذا كتبت B سيكون رقم 66 و هكذا راجع الجدول القادم

http://web.cs.mun.ca/~michael/c/ascii-table.html

السؤال الثانى ستجد الاجابة عنه فى هذا الموضوع من حلى :

الرابط الخاص بي

1

.Everyone has a dream

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

...No Pain No Gain

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

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

#3

السؤال الثالث:

إستخدم المكتبه ... ctime ....

#4

السلام عليكم

اقتباس
انا معرف متغير على انه integer بس اذا ادخلت فيه اي حرف يقبله

خطأ, مادام المتغير من نوع int فلن يقبل إلا عددا صحيحا, انظر الكود :

#include<iostream>
using namespace std;
int main()
{
    int n = -1;
    cout<<"n = ";
    cin>>n;
    cout<<"n = "<<n<<endl;
    system("pause");
    return 0;
}

عندما نُدخل حرف أو رمز أو كلمة أو حتى جملة للمتغير n فلن يتم تخزينها بداخله (لأنها لا تتوافق مع نوعه) و ستبقى قيمته الإبتدائية كما هي .. لن تتغير, توجد حالة خاصة و هي إدخال عدد حقيقي .. هنا سيتم تجاهل الفاصلة و تخزين الجزء الصحيح للعدد المُدخل.

اقتباس
طيب هو integer اصلا ... كيف يقبل char ؟ ؟ ؟

السؤال خاطئ أصلا ! (كما هو مبين في الأعلى)

طبعا النوع char حالة خاصة من النوع int لأن كل حرف من جدول آسكي تقابله شفرة خاصة به لذا يمكن التعامل مع char على أنه int انطلاقا من الشفرة التي يمثلها كل حرف في الآسكي كود. (هذه ليست إجابة سؤلك بل هي معلومة جانبية فصياغة سؤالك خاطئة أصلا)

اقتباس
انا شفت انه في بعض البرامج الاكواد او الاسطر في ال cout screan ملونه , فهل هذا ببرنامج معين او بكود اضيفه ؟!

يمكنك استخدام الدالة system لتلوين الأسطر و لكن بلون واحد أما إن أردت تلوين الأسطر بألوان مختلفة و كنت تعمل على الويندوز فيمكنك استخدام الدالة SetConsoleTextAttribute التي تستقبل معاملان, الأول يحتوى على الـ Handle الخاص بالكتابة/التلوين داخل الـ Console و الثاني يحتوي على رقم اللون المراد استعماله, مثال :

#include<windows.h>
#include<iostream>
using namespace std;
int main()
{
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 9);
    cout<<"arabteam2000"<<endl;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 10);
    cout<<"arabteam2000"<<endl;
    system("pause");
    return 0;
}

علما أنه لا يمكننا إظهار هذ المخرجات باستخدام الدالة system

اقتباس
كيف اضيف الوقت في البرنامح حقي بحيث انه يظهر في الcout screan ؟

انظر الكود :

#include<iostream>
using namespace std;
int main()
{
    cout<<"L’heure actuelle est : ";
    system("time /t");
    system("pause");
    return 0;
}

الدالة system تستقبل أمر من أوامر النظام (الدوس إذا كنا في بيئة الويندوز), في هذا المثال استخدمنا الأمر time الخاص بعرض الوقت مع إمكانية تغييره ولكننا استعملنا الرمز /t الذي يُظهر الوفت بدون إمكانية التغيير.

بالتوفيق.

#5
XMasterrrr كتب:

سأجيبك عن سؤالك الاول و الثانى بأذن الله

السؤال الاول :

الحروف فى الكمبيوتر اساسها ارقام اذا فأن كتبت حرف A ستكون رقم 65 و اذا كتبت B سيكون رقم 66 و هكذا راجع الجدول القادم

http://web.cs.mun.ca/~michael/c/ascii-table.html

السؤال الثانى ستجد الاجابة عنه فى هذا الموضوع من حلى :

الرابط الخاص بي

شيكت على الموضوع

تشاكرات عزيزي على المساعده

هويدي كتب:

السؤال الثالث:

إستخدم المكتبه ... ctime ....

شكرا على المداخله

#6
khaled_prg كتب:

السلام عليكم

خطأ, مادام المتغير من نوع int فلن يقبل إلا عددا صحيحا, انظر الكود :

#include<iostream>
using namespace std;
int main()
{
    int n = -1;
    cout<<"n = ";
    cin>>n;
    cout<<"n = "<<n<<endl;
    system("pause");
    return 0;
}

عندما نُدخل حرف أو رمز أو كلمة أو حتى جملة للمتغير n فلن يتم تخزينها بداخله (لأنها لا تتوافق مع نوعه) و ستبقى قيمته الإبتدائية كما هي .. لن تتغير, توجد حالة خاصة و هي إدخال عدد حقيقي .. هنا سيتم تجاهل الفاصلة و تخزين الجزء الصحيح للعدد المُدخل.

السؤال خاطئ أصلا ! (كما هو مبين في الأعلى)

طبعا النوع char حالة خاصة من النوع int لأن كل حرف من جدول آسكي تقابله شفرة خاصة به لذا يمكن التعامل مع char على أنه int انطلاقا من الشفرة التي يمثلها كل حرف في الآسكي كود. (هذه ليست إجابة سؤلك بل هي معلومة جانبية فصياغة سؤالك خاطئة أصلا)

يمكنك استخدام الدالة system لتلوين الأسطر و لكن بلون واحد أما إن أردت تلوين الأسطر بألوان مختلفة و كنت تعمل على الويندوز فيمكنك استخدام الدالة SetConsoleTextAttribute التي تستقبل معاملان, الأول يحتوى على الـ Handle الخاص بالكتابة/التلوين داخل الـ Console و الثاني يحتوي على رقم اللون المراد استعماله, مثال :

#include<windows.h>
#include<iostream>
using namespace std;
int main()
{
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 9);
    cout<<"arabteam2000"<<endl;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), 10);
    cout<<"arabteam2000"<<endl;
    system("pause");
    return 0;
}

علما أنه لا يمكننا إظهار هذ المخرجات باستخدام الدالة system

انظر الكود :

#include<iostream>
using namespace std;
int main()
{
    cout<<"L’heure actuelle est : ";
    system("time /t");
    system("pause");
    return 0;
}

الدالة system تستقبل أمر من أوامر النظام (الدوس إذا كنا في بيئة الويندوز), في هذا المثال استخدمنا الأمر time الخاص بعرض الوقت مع إمكانية تغييره ولكننا استعملنا الرمز /t الذي يُظهر الوفت بدون إمكانية التغيير.

بالتوفيق.

المعذره سؤالي لم اصغه جيدا

ولكن الشكر الجزيل لك اخي ، لم تدخر جهدا في المساعده

سؤالي - بعد الصياغه - الداله string تقبل الارقام الحروف

كيف يمكنني ان اجعلها تقبل حروف فقط ؟

وايضا الstring ممكن تكون null كيف اضع شرطا للبرنامج بحيث لا ينتقل للخطوه التاليه الا اذا تم ادخال على الاقل حرف واحد

فاذا ضغط المستخدم انتر ولم يدخل شي ، يعيده البرنامج من جديد للادخال

وشكرا مقدما على المساعده

#7
اقتباس
المعذره سؤالي لم اصغه جيدا

يعني ما استفدت شي من المعلومات التي كتبتُها لك !!!؟ :blink: :wacko:, يا إلهي !!!

ربما يستفيد منها بعض الإخوة :)

اقتباس
كيف يمكنني ان اجعلها تقبل حروف فقط ؟

يمكنك كتابة دالة تتحقق من هذا الأمر:

bool isNumber(char* str)
{
        char *pMove = str;

        while(*pMove)
                if (*pMove < 0x30 || *pMove > 0x39)
                        return false;
                else
                        pMove++;

        return true;
}

الدالة السابقة تعيد true عدنما يكون العدد المُدخل "عدد صحيح خالص" :) أما إذا كانت المُدخلات (حروف,رموز,حروف+رموز,عدد حقيقي,عجينة مما سبق أو ...) فستعيدfalse

اقتباس
وايضا الstring ممكن تكون null كيف اضع شرطا للبرنامج بحيث لا ينتقل للخطوه التاليه الا اذا تم ادخال على الاقل حرف واحد

فاذا ضغط المستخدم انتر ولم يدخل شي ، يعيده البرنامج من جديد للادخال

النوع string عادة ما يُقرأ بالكائن cin و الذي لا يقبل الإدخال الفارغ !, أقصد أن الإدخال سيكون على الأقل حرف واحد :)

لعلك تقصد المصفوفات, انظر إلى المثال التالي :

#include<iostream>
#include<string>
using namespace std;
int main()
{
    char name[] ="arabteam";
    cin.getline(name,'\n');
    if(strcmp(name,"")==0)
    cout<<"ERROR !\a"<<endl;
    else
    cout<<name<<endl;
    system("pause");
    return 0;
}

بإمكانك تطوير المثال بـ while, لا أريد ان أعطيك الحل كاملا :), أرنا محاولتك و الباقي علينا :wink:

ملاحظة . يُرجى ترشيح المشاركة التي تراها مناسبة لجواب سؤالك :)

بالتوفيق.

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