PDA

View Full Version : 2سوال:رنگی نوشتن و چاپ اعداد 4رقمی به صورت رندومایز



amanj99
پنج شنبه 13 اردیبهشت 1386, 03:43 صبح
1.می خواستم بدونم در بورلند 30++ میشه متن رنگی داشت
اگه لطف کنید یک نمونه برام بزارید ممنون میشم
2.یه قطعه کد که هر بار (حتی با خارج کردن و اجرای 2باره)عددی 4 رقمی به ما بده که تکراری نباشه(این اعداد مثل کد دفترچه)
میبخشید که 2سوال هم زمان پرسیدم:خجالت:

amanj99
پنج شنبه 13 اردیبهشت 1386, 03:45 صبح
اگر ایرادی هست به تازه واردی من ببخشید

emad_67
پنج شنبه 13 اردیبهشت 1386, 08:18 صبح
در مورد سوال دومت:
برای چاپ اعداد به صورت رندوم میتونی از تابع rand() در هدر فایل stdlib.h استفاده کنی و برای اینکه اعدادی که میده به صورت چهار رقمی در بیان باید اینطور بنویسی:


1000+rand()%1000

که تابع rand میاد یه عدد تولید میکنه و باقیمونده عدد به 1000 به دست میاد که بین 0تا 999 هستش که وقتی در ادامه با 1000 جمع بشه یه عدد بین 1000 تا 1999 به دست میاد که چهار رقمی هست
ضمنا برای اینکه اعداد کاملا رندوم بشن باید عبارت


srand(time(0))

رو اضافه کنی که از ساعت سیستم برای تولید اعداد استفاده کنه ضمنا برای لستفاده از این دستور time.h رو هم به برنامت اضافه کن

amanj99
پنج شنبه 13 اردیبهشت 1386, 18:47 عصر
نمی تونید در رابطه با رنگی نوشتن کمکم کنید؟

emad_67
پنج شنبه 13 اردیبهشت 1386, 19:48 عصر
در مورد رنگی نوشتن اطلاعاتی ندارم

amanj99
دوشنبه 17 اردیبهشت 1386, 01:23 صبح
من این قطعه کد رو نوشتم . قاعدتا باید عددی 11 رقمی رو در خروجی چاپ کنه اما عدد 10 رقمی هست . چرا؟
#include<iostream.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
void main(){
l:long int p;
const long int o=10000000000;
srand(time(0));
p=o+rand()%o;
cout<<p<<endl;
char x;
cin>>x;
if(x=='y')
goto l;

}

emad_67
دوشنبه 17 اردیبهشت 1386, 16:10 عصر
به خاطر اینه که عددی که به دست میاد در گستره int نمی گنجه اگه برنامه رو اینجوری هم امتحان کنی می بینی که عدد درستی رو چاپ نمیکنه


#include<iostream.h>
void main()
{
long int p;
const long int o=10000000000;
cout<<o<<endl;
}

گستره int و long int بین -2147483647 تا 2147483647 است

amanj99
دوشنبه 17 اردیبهشت 1386, 20:01 عصر
ممنون
خوب الن من باید عدد رو از چه نوعی تعریف کنم که یک عدد 11 رقمی به من بده؟

emad_67
سه شنبه 18 اردیبهشت 1386, 20:56 عصر
فقط با double میتونی همچین کستره ای رو پوشش بدی که اگه این کار رو بکونی از این خط error میگیره:
p=o+rand()%o
چون اگر o رو هم از نوع double تعریف کنی دیگه باقیمونده ای نداره
این کاری که شما می خوای بکنی فکر نکنم اصلا درست باشه چون ماکزیمم عددی که تابع rand تولید میکنه 32767 است که اگر با قیمونده اون رو به o به دست بیاریهمون خود مفدار rand میشه که اگه برنامه رو هم به این صورت بنویسی فقط عددی 11 رقمی بین 10 میلیارد تا 10000032767 بهت میده


#include<iostream.h>
#include<conio.h>
#include<time.h>
#include<iomanip.h>
#include<stdlib.h>
void main(){
l:
double p=10000000000;
long int o=100000;
srand(time(0));
p=p+rand()%o;
cout<<setiosflags(ios::fixed)<<setprecision(0)<<p<<endl;
char x;
cin>>x;
if(x=='y')
goto l;
}

Driller
یک شنبه 23 اردیبهشت 1386, 09:44 صبح
برای ایجاد اعداد مختلف از تابع Randomize() استفاده کن و برای چاپ رنگی از cprintf()

amanj99
پنج شنبه 27 اردیبهشت 1386, 19:50 عصر
با این دستوری که نوشتید کار کردم اما بازم 10 رقمی شد(اقای عماد 67)

kiani.mehdi
دوشنبه 31 اردیبهشت 1386, 20:09 عصر
برای رنگی نوشتن





#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{

int gdriver = EGA, gmode = EGAHI, errorcode;
int color, maxcolor, x, y;
char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

maxcolor = getmaxcolor();

settextjustify(CENTER_TEXT, CENTER_TEXT);
x = getmaxx() / 2;
y = getmaxy() / 2;

for (color=1; color<=maxcolor; color++)
{
cleardevice();

setcolor(color);

sprintf(msg, "Color: %d", color);
outtextxy(x, y, msg);
getch();
}

closegraph();
return 0;
}





اگه جاییش را نفهمیدی تا توضیح بدم
کار اصلی را تابع setcolor انجام میده
قبلش هم یک سری کارای مقدماتی باید انجم بدی مثل initgraph و بقیه که در کد مشخص شده
برای هر کار گرافیکی بایستی این اعمال را انجام بدی


مهدی کیانی

emad_67
دوشنبه 31 اردیبهشت 1386, 23:29 عصر
با این دستوری که نوشتید کار کردم اما بازم 10 رقمی شد(اقای عماد 67)

شما همون کدی رو که نوشتم کمپایل کردی؟
چون من مجددا چک کردم و 11 رقمی میده
اینم کدش:


#include<iostream.h>
#include<conio.h>
#include<time.h>
#include<iomanip.h>
#include<stdlib.h>
void main(){
l:
double p=10000000000;
long int o=100000;
srand(time(0));
p=p+rand()%o;
cout<<setiosflags(ios::fixed)<<setprecision(0)<<p<<endl;
char x;
cin>>x;
if(x=='y')
goto l;
}

amanj99
چهارشنبه 02 خرداد 1386, 00:00 صبح
به اتفاقا الانم پیست کردم 10 رقمی داد
(من از توربو سی++ استفاده می کنم)

emad_67
چهارشنبه 02 خرداد 1386, 07:52 صبح
به اتفاقا الانم پیست کردم 10 رقمی داد
(من از توربو سی++ استفاده می کنم)

مشکل باید از کامپایلرت باشه به احتمال زیاد چون من هم با vc++ وهم با borland c++ چک کردم و هر دو تاشون 11 زقمی دادند

emad_67
چهارشنبه 02 خرداد 1386, 11:34 صبح
اگه جاییش را نفهمیدی تا توضیح بدم
کار اصلی را تابع setcolor انجام میده
قبلش هم یک سری کارای مقدماتی باید انجم بدی مثل initgraph و بقیه که در کد مشخص شده
برای هر کار گرافیکی بایستی این اعمال را انجام بدی

من برنامتون رو وقتی compile میکنم یه error میده که میگه BGI geraphics not suport under windows می میخواستم بدونم چی کار باید بکنم؟

kiani.mehdi
چهارشنبه 02 خرداد 1386, 15:50 عصر
شما باید فایل EGAVGA.bgi را کنار برنامه هایی که از گرافیک استفاده می کنند بذاری
یه نمونه برنامه خیلی ساده برات میذارم
تا فایل فوق نباشه برنامه های گرافکی کار نمی کنند
فایل فوق در واقع برای detect کردن و تغییر صفحه نمایش از mode متنی به mode گرافیکی به کار میره
برنامه زیر فقط یک در است که باز و بسته میشهوکار خاصی نمیکنه
فقط برای اینه که متوجه منظورم بشی
اگه خواستی کدش را بهت بدم خدت کاملش کن

دقت کن که اگه اون فایل کنار فایل exe نباشه باز هم همون error را میده

امییدوارم کمکت کنه
مهدی کیانی

emad_67
چهارشنبه 02 خرداد 1386, 21:15 عصر
خیلی ممنون از جوابتون
ولی می خواستم بدونم چی کار باید کرد که موقع کامپایل این ارور BGI رو نده چون من فایل EGAVGA.bgi رو هم در کنار فایل cpp قرار دادم ولی باز هم ارور میده و اصلا نمیشه فایل exe رو ساخت

kiani.mehdi
چهارشنبه 02 خرداد 1386, 23:23 عصر
کارت گرافیکت نصب ؟
file BGi را برای کامپایل کنار فایل exe خود TC بذار
برای اجرا باید پیش فایل exe باشه

emad_67
چهارشنبه 02 خرداد 1386, 23:44 عصر
کارت گرافیکت نصب ؟
file BGi را برای کامپایل کنار فایل exe خود TC بذار
برای اجرا باید پیش فایل exe باشه

کارت گرافیکم نصب هست
من مشکلم اینه که وقتی کامپایل میکنم ارور BGI میده و اصلا فایل exe ساخته نمیشه که من بخوام برا اجرا فایل BGI رو کنار اون بزارم

آرمان1367
چهارشنبه 09 خرداد 1386, 02:24 صبح
دقیقا من هم این مشکل را دارم میگن برای کار گرافیکی باید از ++cتحت داس استفاده کنید

pluskid
چهارشنبه 09 خرداد 1386, 07:54 صبح
اگه بگی عدد یازده رقمی را برای چی می خوای و چطور مقداردهی میشه می تونم کمکت کنم

pluskid
چهارشنبه 09 خرداد 1386, 08:01 صبح
خیلی ممنون از جوابتون
ولی می خواستم بدونم چی کار باید کرد که موقع کامپایل این ارور BGI رو نده چون من فایل EGAVGA.bgi رو هم در کنار فایل cpp قرار دادم ولی باز هم ارور میده و اصلا نمیشه فایل exe رو ساخت

در برنامه آقای کیانی مقدار gdrive=DETECT,gmode=0 بذار درست میشه

emad_67
چهارشنبه 09 خرداد 1386, 17:15 عصر
در برنامه آقای کیانی مقدار gdrive=DETECT,gmode=0 بذار درست میشه
این کارم کردم ولی بازم ارور میگیره که BGI geraphic not suported under windows

kiani.mehdi
چهارشنبه 09 خرداد 1386, 23:09 عصر
من گفتم فایل bgi را کنر فابل exe خود TC بذارید
این کار را کردید و باز خطا داد؟
البته بعضی از کامپالر های زبان های C , C++ با گرافیک مشکل دارن
من یک کامپایلر خوب دارم اگه خواستید میتونم براتون آپلود کنم
من خودم ازش استفاده می کنم و مشکلی ندارم

موفق باشید
مهدی کیانی

emad_67
چهارشنبه 09 خرداد 1386, 23:26 عصر
آخه مشکل من اینه که اصلا فایل exe ساخته نمیشه که فایل bji رو بخوام بذارم کنارش وقتی کامپایلر ارور میده خوب اصلا فایل exe ساخته نمیشه

kiani.mehdi
پنج شنبه 10 خرداد 1386, 00:00 صبح
آخه مشکل من اینه که اصلا فایل exe ساخته نمیشه که فایل bji رو بخوام بذارم کنارش وقتی کامپایلر ارور میده خوب اصلا فایل exe ساخته نمیشه


قربون قدت برم
منظور من از فایل TC یعنی فایل BGI را بذار کنار فایل exe خود TC.EXE یعنی فایلی که باهاش خود کامپایلر سی را اجرا می کنی
دیگه واضح تر از این نمیتونم بگم:عصبانی++:

emad_67
پنج شنبه 10 خرداد 1386, 08:30 صبح
قربون قدت برم
منظور من از فایل TC یعنی فایل BGI را بذار کنار فایل exe خود TC.EXE یعنی فایلی که باهاش خود کامپایلر سی را اجرا می کنی
دیگه واضح تر از این نمیتونم بگم

ببخشید دوباره مزاحمتون میشم من با borland کار میکنم و فایل bgi رو کنار فایلی که خود borland باهاش اجرا میشه گذاشتم یعنی تو فولدر Bin ولی نشد و بازم همون ارور را داد

kiani.mehdi
پنج شنبه 10 خرداد 1386, 09:14 صبح
ببخشید دوباره مزاحمتون میشم من با borland کار میکنم و فایل bgi رو کنار فایلی که خود borland باهاش اجرا میشه گذاشتم یعنی تو فولدر Bin ولی نشد و بازم همون ارور را داد

راستش من خودم با TC کار میکنم و هیچ مشکلی هم ندارم
بعضی از دوستام هم که با borland کار می کنند مشکل شما را دارند
پیشنهاد می کنم از یه TC خوب استفاده کنی و خودتو خلاص کنی
خواستی من یکی خوبشو دارم
برات آپ کنم
موفق باشید
مهدی کیانی

emad_67
پنج شنبه 10 خرداد 1386, 09:24 صبح
راستش من خودم با TC کار میکنم و هیچ مشکلی هم ندارم
بعضی از دوستام هم که با borland کار می کنند مشکل شما را دارند
پیشنهاد می کنم از یه TC خوب استفاده کنی و خودتو خلاص کنی
خواستی من یکی خوبشو دارم
برات آپ کنم
موفق باشید
مهدی کیانی

اگه خیلی سنگین نیست upload کنید ممنون میشم

kiani.mehdi
پنج شنبه 10 خرداد 1386, 22:04 عصر
راستش حدود 4 meg هستش
یه بار می خواستم آپ کنم ولی نشد
یه هاست دارم روی اون آپ می کنم و لینکش را میذارم
موفق باشید
مهدی کیانی

آرمان1367
جمعه 11 خرداد 1386, 02:11 صبح
اگه بگی عدد یازده رقمی را برای چی می خوای و چطور مقداردهی میشه می تونم کمکت کنم
خوب اینو تو صفحات اولیه نوشتم ولی خوب:
من یه تابع دارم که بعد از کارش باید یه عدد 11رقمی برای من چاپ کنه( به عنوان شماره حساب )این عدد باید به صورت رندوم محاسبه بشه

آرمان1367
جمعه 11 خرداد 1386, 03:00 صبح
راستش حدود 4 meg هستش
یه بار می خواستم آپ کنم ولی نشد
یه هاست دارم روی اون آپ می کنم و لینکش را میذارم
موفق باشید
مهدی کیانی
ممنون میشم اگه زودتر برامون بزارید چون باید تا3.27پروژمونو تحویل بدیم

kiani.mehdi
جمعه 11 خرداد 1386, 20:38 عصر
http://www.esnips.com/doc/4a9eec01-239b-4bf2-9e79-86d633325a13/Turbo-C++-Compiler-Full

ببخشید که یکمی دیر شد
ترم اخره و هزارو یک دربدری
موفق باشید
مهدی کیانی

آرمان1367
شنبه 12 خرداد 1386, 23:38 عصر
امید وارم با این کامپایلر مشکلمون حل بشه

saeid5977
یک شنبه 13 خرداد 1386, 01:43 صبح
سلام
این کارا چیه دیگه واسه رنگی کردن که نباید بری سراغ محیط گرافیکی که تو همون محیط ساده متنی هم میشه!


#include <conio.h>
int main(void)
{
int i, j;
clrscr();
for (i=0; i<9; i++)
{
for (j=0; j<80; j++)
cprintf("C");
cprintf("\r\n");
textcolor(i+1);
textbackground(i);
}
return 0;
}

kiani.mehdi
یک شنبه 13 خرداد 1386, 14:38 عصر
این کارا چیه دیگه واسه رنگی کردن که نباید بری سراغ محیط گرافیکی که تو همون محیط ساده متنی هم میشه




اون چیزایی که من گفتم کلا برای کار کردن با محیط گرافیکی در C++ بود
اگه همه پستهای این topic را میخوندی میدیدی که به دستور cprintf هم قبلا اشاره شده بود
بهتر نیست قبل از پست دادن به بقیه پست ها هم یه نگاهی بندازی تا مطلب تکراری ندی؟
این تاپیک 4 صفحه پست داره !!!!!!!

آرمان1367
دوشنبه 14 خرداد 1386, 01:06 صبح
شما باید فایل EGAVGA.bgi را کنار برنامه هایی که از گرافیک استفاده می کنند بذاری

میخواستم بدونم egavga.bgi کجا هست؟

emad_67
دوشنبه 14 خرداد 1386, 08:39 صبح
توی صفحه 2 گذاشته شده

saeid5977
دوشنبه 14 خرداد 1386, 08:50 صبح
اون چیزایی که من گفتم کلا برای کار کردن با محیط گرافیکی در C++ بود
اگه همه پستهای این topic را میخوندی میدیدی که به دستور cprintf هم قبلا اشاره شده بود
بهتر نیست قبل از پست دادن به بقیه پست ها هم یه نگاهی بندازی تا مطلب تکراری ندی؟
این تاپیک 4 صفحه پست داره !!!!!!!

راستش من تمام صفحات رو نگاه کرده بودم اما ندیده بودم از cprintf چیزی نوشته شده باشه. دوباره که مرور کردم دیدم که یکی از دوستان اشاره ای کرده به هر حال معذرت!:اشتباه:

البته تا اونجا که من میدونم آقا آرمان برای پروژه بانک این سوال رو پرسید بنابراین بهتره از همون حالت متنی استفاده کنه و خودش رو درگیر مد گرافیک نکنه.


این مشکلی هم که پیش اومده بعید میدونم مربوط به استفاده از BC باشه چون من بارها از محیط گرافیکی اون استفاده کردم فقط 2 تا نکته هست که حتما دوستان میدونند یکی اینکه
تو منو options تحت گزینه linker\libraries باید graphics library تیک بخوره و دوم اینکه تو تابع initgraph پارامتر سوم مسیر فایل bgi.* که معمولا تو دایرکتوری bgi قرار داره به اون به صورت کامل داده بشه.
موفق باشید.

آرمان1367
دوشنبه 14 خرداد 1386, 15:49 عصر
#include <conio.h>
int cprintf(const char *format);
int textcolor(int newcolor);
void textbackground(int newcolor);
int main(void)
{
int i, j;
clrscr();
for (i=0; i<9; i++)
{
for (j=0; j<80; j++)
cprintf("C");
cprintf("\r\n");
textcolor(i+1);
textbackground(i);
}
return 0;
}
سلام من برای رنگی نوشتن این کدها رو نوشتم وقتی RUN کردم این ارور رو داد
تو عکس ضمیمه شده هست . می خواستم بدونم مشکل از کجاست؟

saeid5977
دوشنبه 14 خرداد 1386, 19:13 عصر
شما داری از کامپایلر تحت ویندوز بورلند استفاده میکنی؟! اصلا چیزه جالبی نیست.
اگه میخوای تحت ویندوز کار کنی برو سراغ vc و اگر تحت داس میخوای کار کنی برو سراغ borland cpp 3 یا توربو سی.

آرمان1367
سه شنبه 15 خرداد 1386, 01:13 صبح
الان با dos کار میکنم
چطوری minمیشه آخه الان full screenهست؟

saeid5977
سه شنبه 15 خرداد 1386, 02:21 صبح
اون کدی که من نوشتم (مال help هستش) و با بورلند سی پلاس پلاس تحت dos کار میکنه. البته تو ویندوز هم run میشه (منظورم کامپایلر هست نه اون کد) .
alt+enter میبره به full و برمیگردونه.

آرمان1367
سه شنبه 15 خرداد 1386, 02:34 صبح
من با توربو سی تحت DOS کار میکنم واقا فضای خسته کنندهای داره
و FULL SCREENباید تایپ کنم چون نمی دونم چطور MIN میشه

emad_67
سه شنبه 15 خرداد 1386, 07:52 صبح
همون طور که جناب saeid5977 گفتن از alt +enter استفاده کن

mmir10
چهارشنبه 16 خرداد 1386, 00:43 صبح
برای کوچک کردنش روی آیکنش راست کلیک کن تو قسمت اسکرین، ویندوز رو علامت دار کن