كيف يمكنني رسم جدول بلغة السي وكيف يمكنني وضع المؤشر بداخل كل مربع فيها؟؟
وشكرا
كيف يمكنني رسم جدول بلغة السي وكيف يمكنني وضع المؤشر بداخل كل مربع فيها؟؟
وشكرا
أين تريد الرسم (البرنامج ذو واجهة رسومية أم console فقط)؟
و ماذا تقصد بـ:
اقتباسكيف يمكنني وضع المؤشر بداخل كل مربع فيها
اشكرك يا اخي على الرد ... ما اقصده هو انني اريد ان ارسم جدول على ال Console باستخدام for Loop ويحدد عدد ال rows و columns عند بدء البرنامج وكل مرة تضغط فيها enter ينتقل من ال cell الاولى الى الثانية وهكذا حتى املاها بالارقام
وشكرا
يمكن أن تستخدم مكتبه لgraphics وخاصه لعمل الجدول ، لأن رسم الجدول وبعدها التنقل في الخلايا يحتاج لدوال تتعامل مع الأبعاد لكي تنتقل بحريه فيها مثل داله gotoxy الموجوده في بورلاند ..
أبحث عن المكتبه graphics.h ، وعن BGI graphics Programming :
Turbo c++ graphics programming
وهناك الكثير من الدروس والمقالات حول الرسم بهذه المكتبه ، وهي سهله في التعامل ،،
واذا لم ترد العمل في أصدارت تربو القديمه ، يمكنك أن تستخدم المكتبه الجديده والتي تعمل في مترجمات Gcc بلا مشاكل ، راجع درس محمد معاشر :
إحياء الـ Bgi من جديد على الـ Gcc
وهنا درس لكيفيه أستخدامها في DEV-C++:
ويمكن أن تجد طرق أخرى بمكتبات ثانيه ، ربما يفيدك الشباب بشيء أخر ،،
بالتوفيق ،
تم تعديل هذه المشاركة بواسطة Wajdy Essam في 10 أكتوبر 2008 في 17:04
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
أخي وجدي الاقتراح الذي تتكلم عنه يطرح مشكلا
و هو التعامل مع الشاشة
استعملت نفس الطريقة من قبل مع pascal
تصبح الشاشة كلها graphic
و بالتالي إذا أردت إظهار نص فلن يتم ذلك بـ printf و إنما بدوال مخصصة لرسم النصوص
ربما الأخ يقصد استعمال ASCII
يمكن رسم جدول باستعمال الرموز التالية:
(الشكل و كود الـ ascii الخاص به)
│ 179 ┤ 180 └ 192 ┴ 193 ┬ 194 ┘ 217 ┌ 218 ─ 196 ┼ 197 ┐ 191 ├ 195 ┤ 180 ┘ 217
و عليه يمكن إنشاء جداول بالشكل التالي:
أخي matrix007
الآن لديك مثال عن كيفية إنشاء جدول
يبقى عليك الآن أن تعرف كيف تسقط هذه الأفكار على المطلوب منك
فعلا ، لن تستطيع استخدام دوال الطباعه العاديه ، لأنك سوف تكون في Graphics Mode .
الجدول الذي طبعته صحيح ، لكن الأن كيف يمكن أن ترجع للخليه الأولى لكي تنتظر من المستخدم أي يدخل رقم ، ثم بعد أن يدخله يجب أن تتحرك للخانه الثانيه ، كيف يمكن ذلك ؟؟
على حد علمي لن يمكنك ذلك ، يعني بعد ما طبعت الجدول لن تستطيع الرجوع للخلايا أبدا ..
يمكن أن نستخدم طريقتك لعمل الجدول لكن On The Fly ، يعني نرسم الهيدر ، والخليه الأولى ، وبعدها ننتظر المستخدم ادخال قيمه ، ثم نرسم فاصل ، ونذهب للخانه الثانيه ، وووهكذاا ...
والله أعلم ،
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
وجدت هذه الدالة لدى بحثي على google
لتجنب تعقيدات SetConsoleCursorPosition في كل مرة ;)
ncurses.h
على لينكس
http://en.wikipedia.org/wiki/Ncurses
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html
وبتشتغل على انظمه ثانيه مثل وندوز وماك ...
اضافه سريعه .. ايضا مكتبه conio.h تدعم ذلك .. نسيتها بسبب اني تركتها من زمان ههه
تم تعديل هذه المشاركة بواسطة openSUSE في 10 أكتوبر 2008 في 23:54
Be Happy
^_^
مشكور جدا يا اخواني على تعاونكم معي زز أعتقد ان انسب حل هو حل الاخ djug ولكن مازال بعيدا عما اريد ان افعله .. فماذا لو اردت ان ارسم عدد محدد من ال rows و columns يحدده user هل هناك اي طريقة اخرى يمكن فعلها باسخدام ال Loop??
وشكرا
يبدو انك لم تنتبه جيدا اخي العزيز
انت تريد رسم مثل هذه النوافذ لكي تعمل برنامجك ..
http://en.wikipedia.org/wiki/Text_user_interface
اذا ارجع للمصادر ..
اذا غير ذلك .. ابحث
Be Happy
^_^
نعم اريد ان ارسم مثل هذه النوافذ ولكنها ثابتة اكنني اريدها تتحدد من البرنامج نفسه
اقتباسهل هناك اي طريقة اخرى يمكن فعلها باسخدام ال Loop
اقتباسالمشاركة رقم 5 ورقم 8 تؤدي المطلوب بالضبط فقط أستخدمها وحاول ستجد الموضوع سهل.
اقتباسأخي matrix007الآن لديك مثال عن كيفية إنشاء جدول
يبقى عليك الآن أن تعرف كيف تسقط هذه الأفكار على المطلوب منك
أخي الفاضل لقد طرح الإخوة الأفكار الأساسية لعمل المطلوب
بقي الآن أن تجرب
جرب .. اطرح تجربتك هنا...و سنتناقش حتى نتعلم كلنا مع بعض ;)
واخيرا توصلت للحل الذي اريده وهو ان يتمكن المستخدم من رسم جدول بتحديد عدد ال اعمدة والصفوف وذللك بعمل تعديل بسيط في كود الأخ djug
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
int main()
{
clrscr();
int n;
int i;
int y;
int j;
clrscr();
scanf("%d",&y);
scanf("%d",&n);
getch();
for(j=1;j<=y;j++)
{
for (i = 1; i <= n; i++)
{
gotoxy(i*3,6+j*2);
printf("%c%c%c%c",218 ,196, 196, 191);
gotoxy(i*3,7+j*2);
printf("%c %c ",179,179);
gotoxy(i*3,8+j*2);
printf("%c%c%c%c\n",192,196 ,196 ,217);
//printf("%d",i);
}
}
getch();
return 0;
}