PDA

نسخه کامل مشاهده نسخه کامل : سوالات مبتدی و عمومی (++C, C) خود را اینجا بپرسید



صفحه ها : [1] 2 3 4 5 6 7 8 9 10 11 12 13 14

amsjavan
09-11-2007, 10:48
سلام
خیلی از کسانی که C رو تازه شروع کردند سوالات زیادی براشون پیش میاد
این تاپیک رو راه انداختم تا از اساتید دعوت کنم به این تاپیک بیان و به سوالات ما مبتدی ها پاسخ بده ند. تا همه با کمک هم بتونیم پیشرفت کنیم

amsjavan
09-11-2007, 10:59
اولین سوال رو خودم شروع می کنم اگه لطف کنید جواب بدید ممنون می شم.

#include <stdio.h>
int main()
{
int x=15, y=20;
printf("\nx=%%%d\ty=%%%d", x, y);
return 0;
}
امن نمی فهمم چرا تو خط 5 ، 3 تا % داریم؟

m3hrz4d
09-11-2007, 11:15
اگه بخوای توی printf , خود ِ علامت % رو چاپ کنی باید 2 تا % بگذاری.درصد سوم هم اینجا نقش اصلیش رو بازی میکنه. در واقع این کد 15% و 20% رو چاپ میکنه.

ali zi zeperto
09-11-2007, 18:23
یعنی بیرون از اینجا نمیشه در باره c,c++ سوال کرد تا ما اساتید جواب بدیم.:31:
شما هم واسه افتتاحیه یه سوال آب دوغ خیاری گذاشتی که بنیانگذار باشی.
گمونم تاپیک تمامی مباحث مربوط به c++ واسه همینه.
ببخشید:6:

Mojmos
09-11-2007, 18:39
سلام
من در c++ اومدم و دو تا آرايه دو بعدي به صورت زير تعريف کردم:
int ** A;
int ** B;

و اونها رو به صورت دو تا آرايه دو بعدي 4*4 مقداردهي کردم به اين صورت:

A[0][0]=4;
A[0][1]=1;
A[0][2]=2;
A[0][3]=0;
A[1][0]=1;
A[1][1]=1;
A[1][2]=0;
A[1][3]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
A[2][3]=2;
A[3][0]=0;
A[3][1]=0;
A[3][2]=2;
A[3][3]=3;
//
B[0][0]=2;
B[0][1]=2;
B[0][2]=2;
B[0][3]=0;
B[1][0]=0;
B[1][1]=0;
B[1][2]=1;
B[1][3]=1;
B[2][0]=1;
B[2][1]=1;
B[2][2]=0;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=1;
B[3][3]=3;
//

چيزي که غير معقول به نظر ميآد اينه که وقتي درايه ها رو نشون مي دم همه درايه ها درست مثل مقدار دهي من هستند به جز درايه هاي سطر سوم از A که دقيقا مثل درايه هاي سطر سوم B ميشن!

براي اينکه بهتر بفهمين فايل سورسشو مي ذارم اينجا
سلام
من در c++ اومدم و دو تا آرايه دو بعدي به صورت زير تعريف کردم:
int ** A;
int ** B;

و اونها رو به صورت دو تا آرايه دو بعدي 4*4 مقداردهي کردم به اين صورت:

A[0][0]=4;
A[0][1]=1;
A[0][2]=2;
A[0][3]=0;
A[1][0]=1;
A[1][1]=1;
A[1][2]=0;
A[1][3]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
A[2][3]=2;
A[3][0]=0;
A[3][1]=0;
A[3][2]=2;
A[3][3]=3;
//
B[0][0]=2;
B[0][1]=2;
B[0][2]=2;
B[0][3]=0;
B[1][0]=0;
B[1][1]=0;
B[1][2]=1;
B[1][3]=1;
B[2][0]=1;
B[2][1]=1;
B[2][2]=0;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=1;
B[3][3]=3;
//

چيزي که غير معقول به نظر ميآد اينه که وقتي با دستورات زير درايه ها رو نشون مي دم همه درايه ها درست مثل مقدار دهي من هستند به جز درايه هاي سطر سوم از A که دقيقا مثل درايه هاي سطر سوم B ميشن!

براي اينکه بهتر بفهمين فايل سورسشو مي ذارم اينجا

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ممنون از همه عزيزان

m3hrz4d
09-11-2007, 23:21
شما توی کد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دو تا Pointer به Pointer به عدد صحیح درست کردین که میتونه در شرایطی نقش ماتریس رو بازی کنه ولی اینجا اصلا حافظه ای به متغیر هاتون برای یک ماتریس اختصاص ندادین و اصلا تعداد سطر و ستون ماتریس هم مشخص نیست!اگه تعداد سطر و ستون ماتریس زمان کامپایل مشخص هست میتونین از کد زیر واسه تعریف 2 تا ماتریس 4 در 4 استفاده کنین:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که عدد ها اینجا باید مقدار ثابت باشن نه متغیر.
و اگه تعداد سطر و ستون ها زمان اجرا مشخص میشه(مثلا بوسیله کاربر) باید از new استفاده کنین تا اونقدر که نیاز هست حافظه برای ماتریس اختصاص بدین.

Mehran NZ
10-11-2007, 03:49
ای بابا بازم تاپیک مضخرف
متاسفانه این قسمت از مدیریت ضعیفی برخورداره
دوستان عزیز تاپیکهایی که می گن بیاید همه سوالها رو اینجا بپرسید یا ...... خلاف قوانین هستند و کلا نظم این بخش و یهم ریختن

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Mojmos
10-11-2007, 18:40
شما توی کد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دو تا Pointer به Pointer به عدد صحیح درست کردین که میتونه در شرایطی نقش ماتریس رو بازی کنه ولی اینجا اصلا حافظه ای به متغیر هاتون برای یک ماتریس اختصاص ندادین و اصلا تعداد سطر و ستون ماتریس هم مشخص نیست!اگه تعداد سطر و ستون ماتریس زمان کامپایل مشخص هست میتونین از کد زیر واسه تعریف 2 تا ماتریس 4 در 4 استفاده کنین:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که عدد ها اینجا باید مقدار ثابت باشن نه متغیر.
و اگه تعداد سطر و ستون ها زمان اجرا مشخص میشه(مثلا بوسیله کاربر) باید از new استفاده کنین تا اونقدر که نیاز هست حافظه برای ماتریس اختصاص بدین.


مرسی به شما
می شه بیشتر در مورد عملگر new تو ضیح بدین و مثال سورس سی پلاس پلاس بذارید؟ لطفاً

amsjavan
10-11-2007, 22:30
یعنی بیرون از اینجا نمیشه در باره c,c++ سوال کرد تا ما اساتید جواب بدیم.:31:
شما هم واسه افتتاحیه یه سوال آب دوغ خیاری گذاشتی که بنیانگذار باشی.
گمونم تاپیک تمامی مباحث مربوط به c++ واسه همینه.
ببخشید:6:

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

amsjavan
10-11-2007, 22:34
ای بابا بازم تاپیک مضخرف
متاسفانه این قسمت از مدیریت ضعیفی برخورداره
دوستان عزیز تاپیکهایی که می گن بیاید همه سوالها رو اینجا بپرسید یا ...... خلاف قوانین هستند و کلا نظم این بخش و یهم ریختن

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اگه شما احساس می کنی مضخرف هست به مدیر بگو حذفش کنه. به نظر من خیلی هم مفیده. خیلی از اونهایی که تازه شروع می کنن مثل من دنبال یه همچین جایی هستند

m3hrz4d
11-11-2007, 08:30
مرسی به شما
می شه بیشتر در مورد عملگر new تو ضیح بدین و مثال سورس سی پلاس پلاس بذارید؟ لطفاً
عملگر new در زمان اجرا به مقدار مورد نیاز حافظه از heap اختصاص میده و آدرس شروع اون رو برمیگردونه. مثلا برای گرفتن فضا برای یک integer (کار عاقلانه ای نیست فقط برای توضیح میگم) :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که البته بعد از اینکه کارمون با اون فضا تموم شد باید حتما memory اختصاص یافته رو با عملگر delete آزاد کنیم.
واسه گرفتن فضا برای یه آرایه n تایی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
واسه گرفتن فضا برای یک ماتریس(آرایه دو بعدی) میشه از یک new استفاده کرد ولی باید تعداد ستون ثابت باشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته میشه از چند new هم در حالتی که ستون ثابت نیست استفاده کرد.

amsjavan
11-11-2007, 10:22
خیلی ممنون m3hrz4d جان که به سوالات، خیلی عالی و قشنگ جواب می دی

*نماد علمی که با %e, %E, %g نشون میدن چیه؟ چه کاربردی داره؟
* || (یا) با ^ (یای انحصاری) چه فرقی داره؟

farnaz_bahall
11-11-2007, 17:23
سلام
من برنامه نویسی با c رو تازه شروع کردم قبلا با vb کار می کردم به خاطر همین الان تو دستور نویسی خیلی مشکل دارم یه برنامه نوشتم که مشکلات زیادی داره لطفا اشکالات برنامه ی من رو بگید چون هر کاری می کنم درست نمی شه:
برنامه این است که سه عدد از ورودی می گیره و اعلام می کنه که آیا این سه عدد اضلاع مثلث می توانند باشند یا نه اگر بله چه نوع مثلثی.
#include <stdio.h>
void main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if (c >= (a + b)) || (b >= (c + a)) || (a >= (b + c))
{
printf( "Mosallas Nist");
GoTo 0;
}
if a = c And b = c;
{
printf( "M.azla");
GoTo 0;
}
if (a = b) || (b = c) || (a = c);
{
If (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
printf( "M.saghein ghaemozavieh");
Else
printf( "M.saghein");
GoTo 0;
}
if (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
{
printf("Ghaemozavieh");
GoTo 0;
}
printf( "Mokhtalefolazla");
0
}

m3hrz4d
11-11-2007, 18:19
خیلی ممنون m3hrz4d جان که به سوالات، خیلی عالی و قشنگ جواب می دی

*نماد علمی که با %e, %E, %g نشون میدن چیه؟ چه کاربردی داره؟
* || (یا) با ^ (یای انحصاری) چه فرقی داره؟

وظیفس :31:

*در مورد نماد علمی..مثلا فرض کن توی کدی که داری مینویسی بجای میخوای یه عدد رو در 10 بتوان 1 ضرب کنی!
خوب میتونی یه 1 و 1 تا صفر بگذاری که کار جالبی نیست میتونی بجاش از نماد علمی استفاده کنی(1E10)
کاربر نماد علمی توی سی مثل کاربردش توی خارج از محیط برنامه نویسی ِ! یعنی واسه راحت تر نوشتن اعداد.

*کلا بخوای حساب کنی یای انحصاری یعنی اینکه اگه 2 تا گزاره مثل A و B داشته باشی میدونی که" A یا B " زمانی درسته که حداقل یکی از ایندو درست باشه یعنی یا A درست باشه یا B درست باشه یا هم A درست باشه هم B.ولی وقتی یای انصاری در نظر بگیری فقط زمانی درسته که" یا A درست باشه یا B " و اگه هم A و هم B درست باشه دیگه گزاره حاصل درست نیست.

ولی توی C ما دو جور ازین گزاره ها داریم. یک سری Logical (منطقی) و یک سری Bitwise (بیتی).
Logical ها کل دو عبارت رو با هم مقایسه میکنن که && و || هستن و نتیجه درست یا غلط برمیگردونن ولی
Bitwise ها دو مقدار رو بیت به بیت با هم مقایسه میکنن و نتیجه مقایسه رو برمیگردونن که | & و ^ هستن.

یعنی این ^ ی که میبینی توی C فقط Bitwise ش هست و منطقی ش(یه چیزی مثل ^^) نیست و نمیشه ^ رو با || مقایسه کرد چون اصلا از یه نوع نیستن.

m3hrz4d
11-11-2007, 18:26
سلام
من برنامه نویسی با c رو تازه شروع کردم قبلا با vb کار می کردم به خاطر همین الان تو دستور نویسی خیلی مشکل دارم یه برنامه نوشتم که مشکلات زیادی داره لطفا اشکالات برنامه ی من رو بگید چون هر کاری می کنم درست نمی شه:
برنامه این است که سه عدد از ورودی می گیره و اعلام می کنه که آیا این سه عدد اضلاع مثلث می توانند باشند یا نه اگر بله چه نوع مثلثی.
#include <stdio.h>
void main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if (c >= (a + b)) || (b >= (c + a)) || (a >= (b + c))
{
printf( "Mosallas Nist");
GoTo 0;
}
if a = c And b = c;
{
printf( "M.azla");
GoTo 0;
}
if (a = b) || (b = c) || (a = c);
{
If (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
printf( "M.saghein ghaemozavieh");
Else
printf( "M.saghein");
GoTo 0;
}
if (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
{
printf("Ghaemozavieh");
GoTo 0;
}
printf( "Mokhtalefolazla");
0
}

اشکالات خیلی زیاده مثلا اینکه ^ که توی ویبی توان بود دیگه توی C عملگر توان نیست و باید از تابعpow استفاده کنی.
برای انتساب باید از == بجای = استفاده کنی. عملگر = بر خلاف وبی حتی توی if , مقدار سمت چپ رو توی سمت راستی قرار میده و نتیجه رو برمیگردونه.بجای And باید از عملگر && استفاده کنه ضمن اینکه برای if پرانتز اجباریه برخلاف ویبی.آخر شرط if نباید ; بگذاری.goto رو باید با حروف کوچیک بنویسی و...

بهتر اول یه کتاب در مورد مقدمات C بخونی تا راحتتر کار کنی.

shadmehrdj
11-11-2007, 21:40
سلام دوستان.من می خواستم 1- برنامه بنوسید که یک آرایه 100 تایی با مقادیر تصادفی پر کند و واریانس را بدست بیاورد و خانه های فرد آرایه را صفر کند.

2- برنامه بنویسید که یک آرایه با n عنصر تعریف نمایید و عنصر هفتم آنرا حذف کند؟

3- دستور درج کردن در آرایه چی می باشد؟

shadmehrdj
11-11-2007, 21:43
اگه زحمتی نیست میشه به این برنامه من الگوریتم مرتب کردن اضافه کنید.چون برنامه جست و جوی باینری باید قبلش آرایه مرتب شده باشه من خودم اضافه کردم ولی برنامه ایراد داشت.

#include<stdio.h>
#include<conio.h>
#define max_size 5
int bin_search(int[] ,int);
void main(){
int f,i,n,arr[max_size];
clrscr();
for (i=0;i<max_size;i++)
scanf("%d",arr[i]);
printf("Enter a number to search:");
scanf("%d",n);
f=bin_search(arr,n);
if (f<-1)
printf("Your number is%d",f+1);
else
printf("your number was not found");
getch();
}
int bin_search(int a[],int k)
{
int b,m,e;
b=0;
e=max_size;
while (b<=e){
m=(b+e)/2;
if (k==a[m])
return m;
else if (k<a[m])
e=m-1;
else
b=m+1;
}
return -1;
}

farnaz_bahall
12-11-2007, 01:26
اشکالات خیلی زیاده مثلا اینکه ^ که توی ویبی توان بود دیگه توی C عملگر توان نیست و باید از تابعpow استفاده کنی.
برای انتساب باید از == بجای = استفاده کنی. عملگر = بر خلاف وبی حتی توی if , مقدار سمت چپ رو توی سمت راستی قرار میده و نتیجه رو برمیگردونه.بجای And باید از عملگر && استفاده کنه ضمن اینکه برای if پرانتز اجباریه برخلاف ویبی.آخر شرط if نباید ; بگذاری.goto رو باید با حروف کوچیک بنویسی و...

بهتر اول یه کتاب در مورد مقدمات C بخونی تا راحتتر کار کنی.
از راهنماییت ممنون خودم هم می دونم از c هیچ سر در نمی یارم و باید هر آنچه رو که از vb بلدم بریزم دور تا بتونم باهاش کار کنم اما وقتی مثل من وقت نداشته باشی مجبوری که این جوری برنامه بنویسی.
از مواردی که گفتی همه رو درست کردم اما دو تاش رفع نشد:
1 این دستور:
if (c >= a + b) || (b >= c + a) || (a >= b + c)
2 همون قضیه توان که این جا باید از تابع استفاده کنم اگر راجع بهش توضیح بدی ممنون می شم اگر include خاصی هم باید اضافه کنم بگو.

m3hrz4d
12-11-2007, 13:31
از راهنماییت ممنون خودم هم می دونم از c هیچ سر در نمی یارم و باید هر آنچه رو که از vb بلدم بریزم دور تا بتونم باهاش کار کنم اما وقتی مثل من وقت نداشته باشی مجبوری که این جوری برنامه بنویسی.
از مواردی که گفتی همه رو درست کردم اما دو تاش رفع نشد:
1 این دستور:
if (c >= a + b) || (b >= c + a) || (a >= b + c)
2 همون قضیه توان که این جا باید از تابع استفاده کنم اگر راجع بهش توضیح بدی ممنون می شم اگر include خاصی هم باید اضافه کنم بگو.

همیشه توی C باید 2 پرانتر دور کل شرط باشن یعنی باید اینطوری بنویسی:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
واسه توان هم اول math.h رو include کن بعد بجای a ^ b باید بگذاری :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

farnaz_bahall
12-11-2007, 21:20
ممنون که به سوالات ابتدایی من جواب می دی اما برای این که این برنامه کار کنه آخرین جاییش که می لنگه دستور goto شه.
این برنامه بعد از کلی تغییر به این جا رسیده اما دستور goto شو نمی دونم چه طوری باید اصلاح کنم:

#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if ((c >= a + b) || (b >= c + a) || (a >= b + c))
{
printf( "Mosallas Nist");
goto 0;
}
if ((a == c) && (b == c))
{
printf( "M.azla");
goto 0;
}
if ((a == b) || (b == c) || (a == c))
{
printf( "M.saghein");
goto 0;
}
if ((pow(c,2) == pow(b,2) + pow(a,2)) || (pow(b,2) == pow(c,2) + pow(a,2)) || (pow(a,2) == pow(b,2) + pow(c,2)))
{
printf("Ghaemozavieh");
goto 0;
}
printf( "Mokhtalefolazla");
0;
}

m3hrz4d
12-11-2007, 21:46
توی این کدت Label ی که goto بهش پرش میکنه 0 هست واسه همین error میده.اسم Label مثل اسم متغیر نباید با عدد شروع بشه.مثلا میتونی بگذاری 0_ ضمن اینکه برای تعریف Label نباید بعد اسمش ; بگذاری باید : بگذاری.یه چیز دیگه اینکه باید بعد از Label حداقل یه دستور باشه و مثلا نمیتونه آخر function بیاد.
میتوی یه ;NULL بگذاری بعدش یا حالا که آخر function هست یه ;return بعد از تعریف Label بگذاری.

و یا اصلا مجبور نیستی توی این کد از goto استفاده کنی تا به آخر function بری.میتونی بجای هر goto یه ;return بگذاری تا مستقیما از function خارج بشی و برنامه به آخر برسه.

amsjavan
13-11-2007, 14:11
با عرض خسته نباشید و تشکر فراوان مجدد به m3hrz4d جان که یک تنه به همه سوالات جوب می دن واقعا خسته نباشید.
من یه برنامه می خواستم که اولین روز ماه رو بگیره و بعد یه تاریخی بین 1 تا 30 بگیره و بگه این تاریخ چند شنبه است. خودم به یه جاهایی رسیدم می خواستم نوع فکر دوستان دیگه رو هم بدونم

m3hrz4d
13-11-2007, 14:48
با عرض خسته نباشید و تشکر فراوان مجدد به m3hrz4d جان که یک تنه به همه سوالات جوب می دن واقعا خسته نباشید.
من یه برنامه می خواستم که اولین روز ماه رو بگیره و بعد یه تاریخی بین 1 تا 30 بگیره و بگه این تاریخ چند شنبه است. خودم به یه جاهایی رسیدم می خواستم نوع فکر دوستان دیگه رو هم بدونم

ممنون.
چیزی که به ذهن من رسید اینه که اگه روز اول ماه توی firstDay(شنبه:0 یکشنبه:1...جمعه:6) و روز (1 تا 30) توی Day باشه میشه با فرمول بدست آورد که امروز چند شنبس.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
[/COLOR][/SIZE]

Mehran NZ
13-11-2007, 16:13
اگه شما احساس می کنی مضخرف هست به مدیر بگو حذفش کنه. به نظر من خیلی هم مفیده. خیلی از اونهایی که تازه شروع می کنن مثل من دنبال یه همچین جایی هستند

سلام دوست عزیز امیدوارم از حرف من دلخور نشده باشید
این اصلا مشکل شما نیست مشکل مدیریت هستش که نه تنها اینکه این نوع تاپیک ها رو قفل نمی کنن بلکه میان توش شرکت هم می کنن که واقعا عجیبه :18:
این لینک تاپیکی باهمین مضمون ولی در انجمن دیگه که مدیران اون بخش قفلش کردن


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تازه اگر هم من اشتباه کرده باشم دقیقا عین همین تاپیک توی این بخش زده شده اینم لینکش

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشی :11:

egoldfars
13-11-2007, 21:05
سلام
اگر ممگن هست کمک کنید که چه طور میشه این برنامه رو نوشت من تازه برنامه نویسی با سی رو شروع کردم.
write a program to generate the fibonacci series.(1,1,2,3,5,8,13,.......)the
یه چیزایی نوشتم اساتید تصحیح کنند.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int i,s=1,sum,num;
for(i=0;i<=5;i++)
{
sum=i;
printf("%d\t",sum);
num=s++;
if(num==2)
printf("%d\t",sum+i);
}
getch();
}

shadmehrdj
13-11-2007, 21:11
سلام.کسی نیست جواب من را بده؟

m3hrz4d
13-11-2007, 21:35
سلام
اگر ممگن هست کمک کنید که چه طور میشه این برنامه رو نوشت من تازه برنامه نویسی با سی رو شروع کردم.
write a program to generate the fibonacci series.(1,1,2,3,5,8,13,.......)the
یه چیزایی نوشتم اساتید تصحیح کنند.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int i,s=1,sum,num;
for(i=0;i<=5;i++)
{
sum=i;
printf("%d\t",sum);
num=s++;
if(num==2)
printf("%d\t",sum+i);
}
getch();
}
والا نتونستم کد شما رو تحلیل کنم.اما اینی که خودم نوشتم این هست که:
همونطور که میدونین توی این دنباله هر عدد برابر مجموع 2 عدد قبل هست. و اولین عدد 0 و بعدی 1 هست.
پس ما 2 تا متغیر میگیریم تا عدد اول و دوم رو توشون داشته باشیم.بعد از چاپ کردن اولین عدد ما یه عدد به جلو حرکت میکنیم چون دیگه به اولین عدد احتیاج نداریم و به عدد دوم و سوم احتیاج داریم.
بنابراین عدد دوم رو میزیم توی متغیر اول و عدد سوم توی دنباله (1+0 = 1) رو میریزیم توی متغیر دوم(تا یکی به جلو حرکت کرده باشیم و دوبار متغیر اول(که حالا عدد دوم دنباله رو داره) رو چاپ میکنیم و این اعمال ادامه دارن.
ضمن اینکه برای این جابجایی اعداد ما نیاز به یک temp هم داریم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

m3hrz4d
13-11-2007, 22:00
سلام.کسی نیست جواب من را بده؟
به کدی که نوشته بودین تابع selection sort رو اضافه کردم منتها همون کد قبلیتون چند تا اشکال کوچیک داشت:
یکی اینکه وقتی میخوایین با scanf یه متغیر رو بخونین باید آدرس ش رو ارسال کنین نه خودش رو بنابراین باید وقتی scanf رو فراخوانی میکنین یه & قبل از اسم متغیر بگذارین.شرط (if (f < -1 رو با (if (f >-1 عوض کردم. برعکس نوشته بودین.

در ضمن بهتره تمرین هاتون رو هرچقدر هم که دردسر داشته باشه خودتون انجام بدین وگرنه توی یاد گیری برنامه نویسی دچار مشکل میشین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

egoldfars
13-11-2007, 22:04
خیلی ممنون ...میشه گفت راه رو اشتباه رفته بودم.
بازم ممنون که راهنماییم کردید.

shadmehrdj
14-11-2007, 13:00
m3hrz4d جان دستت درد نکنه.
من نمی دونم چه جوری واریانس را بنویسم.
در ضمن دستور درج کردن در آرایه و حذف کردن از آرایه چی هست؟

sherlockholmz
14-11-2007, 13:04
سلام
من برنامه نویسی با c رو تازه شروع کردم قبلا با vb کار می کردم به خاطر همین الان تو دستور نویسی خیلی مشکل دارم یه برنامه نوشتم که مشکلات زیادی داره لطفا اشکالات برنامه ی من رو بگید چون هر کاری می کنم درست نمی شه:
برنامه این است که سه عدد از ورودی می گیره و اعلام می کنه که آیا این سه عدد اضلاع مثلث می توانند باشند یا نه اگر بله چه نوع مثلثی.
#include <stdio.h>
void main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if (c >= (a + b)) || (b >= (c + a)) || (a >= (b + c))
{
printf( "Mosallas Nist");
GoTo 0;
}
if a = c And b = c;
{
printf( "M.azla");
GoTo 0;
}
if (a = b) || (b = c) || (a = c);
{
If (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
printf( "M.saghein ghaemozavieh");
Else
printf( "M.saghein");
GoTo 0;
}
if (c ^ 2 = b ^ 2 + a ^ 2) || (b ^ 2 = c ^ 2 + a ^ 2) || (a ^ 2 = b ^ 2 + c ^ 2);
{
printf("Ghaemozavieh");
GoTo 0;
}
printf( "Mokhtalefolazla");
0
}

اين برنامه را خوب بررسي كنيد:

#include <stdio.h>
#include <conio.h>

void main(void)
{int a,b,c;
while(1)
{clrscr();
printf("\nAdade khod ra vared konid");
printf("\na=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);
printf("\nc=");
scanf("%d",&c);
if((a+b)<c || (a+c)<b || (b+c)<a)
printf("\nIn yek mosallas nist!");
else if(a==b & a==c)
printf("\nIn yek mosallas motasaviol'azla ast.");
else if(a==b || a==c || b==c)
printf("\nIn yek mosallas motasavios'saghein ast.");
else if(a*a==(b*b)+(c*c) || b*b==(a*a)+(c*c) || c*c==(a*a)+(b*b
printf("\nIn yek mosallas ghaemoz'zavie ast.");
else printf("\nIn yek mosallas mokhtalefol'azla ast.");
printf("\nDo you want to try again(y/n)?");
if(getch()=='y')continue;
break;
{
{

m3hrz4d
14-11-2007, 13:17
m3hrz4d جان دستت درد نکنه.
من نمی دونم چه جوری واریانس را بنویسم.
در ضمن دستور درج کردن در آرایه و حذف کردن از آرایه چی هست؟
منم در مورد واریانس نمیدونم..
حذف یا درج دستور خاصی نداره.الگوریتم درج اینه که همه ی اعضای آرایه از اونجایی که درج میخواد انجام بشه یه خونه به جلو حرکت کنن و بعد ما عضو مورد نظرمون رو قرار بدیم.مثلا اگه A B C D E F عضو های آرایه باشن و ما بخوانیم X رو بین C و D یعنی تو خونه ی چهارم بگذاریم باید اول D , E , F رو یه خونه ببریم جلو(ارایه باید طولش به اندازه کافی باشه) یعنی آرایمون اینطوری میشه : A B C D D E F حالا X رو توی خونه ی سوم(بجای D ی قبلی) قرار میدیم و میشه A B C X D E F.با این عملیات size ظاهری آرایه یکی زیاد میشه.
برای حذف هم کافیه از اونجایی که عضو مورد نظر رو میخواهیم حذف کنیم به بعد, اعضا رو یه خونه بیاریم عقب مثلا اگه توی A B C D E F بخواهیم B رو حذف کنیم باید C, D , E , F رو به ترتیب یه خونه بیاریم عقب تا بشه A C D E F F و حالا ما یه عضو اضافه F آخر آرایه داریم که با کم کردن 1 از size ظاهری آرایه اصلا این F اضافی رو در نظر نمیگیرم.(یعنی اینجا فرض میکنیم طول آرایه 5 تاس نه 6 تا)

shadmehrdj
14-11-2007, 13:19
منم در مورد واریانس نمیدونم..
حذف یا درج دستور خاصی نداره.الگوریتم درج اینه که همه ی اعضای آرایه از اونجایی که درج میخواد انجام بشه یه خونه به جلو حرکت کنن و بعد ما عضو مورد نظرمون رو قرار بدیم.مثلا اگه A B C D E F عضو های آرایه باشن و ما بخوانیم X رو بین C و D یعنی تو خونه ی چهارم بگذاریم باید اول D , E , F رو یه خونه ببریم جلو(ارایه باید طولش به اندازه کافی باشه) یعنی آرایمون اینطوری میشه : A B C D D E F حالا X رو توی خونه ی سوم(بجای D ی قبلی) قرار میدیم و میشه A B C X D E F.با این عملیات size ظاهری آرایه یکی زیاد میشه.
برای حذف هم کافیه از اونجایی که عضو مورد نظر رو میخواهیم حذف کنیم به بعد, اعضا رو یه خونه بیاریم عقب مثلا اگه توی A B C D E F بخواهیم B رو حذف کنیم باید C, D , E , F رو به ترتیب یه خونه بیاریم عقب تا بشه A C D E F F و حالا ما یه عضو اضافه F آخر آرایه داریم که با کم کردن 1 از size ظاهری آرایه اصلا این F اضافی رو در نظر نمیگیرم.(یعنی اینجا فرض میکنیم طول آرایه 5 تاس نه 6 تا)

من چه جوری این کار ار در برنامه نویسی انجام بدم.کدش را میشه بنویسید.

m3hrz4d
14-11-2007, 13:35
من چه جوری این کار ار در برنامه نویسی انجام بدم.کدش را میشه بنویسید.
اگه با حلقه ی for آشنایی داشته باشین راحت میتونین بنویسین کافیه یکم وقت بگذارین تا دستتون بیاد.

shadmehrdj
14-11-2007, 13:44
اگه با حلقه ی for آشنایی داشته باشین راحت میتونین بنویسین کافیه یکم وقت بگذارین تا دستتون بیاد.

من با دستور for آشنایی دارم.میشه شما یک مثال برای من بزنید(البته با کد)
من نمی دونم چه جوری یک خانه به جلو ببرم.

m3hrz4d
14-11-2007, 14:47
من با دستور for آشنایی دارم.میشه شما یک مثال برای من بزنید(البته با کد)
من نمی دونم چه جوری یک خانه به جلو ببرم.
از آخر به اول که حساب کنیم, عضو 1+i ام آرایه باید برابر با عضو i ام بشه و بعد عضو i ام برابر با عضو i-1 ام الی آخر...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

shadmehrdj
14-11-2007, 19:17
m3hrz4d دستت درد نکنه.خیلی زحمت برای این تاپیک میکشی.

seyyedi
16-11-2007, 16:19
دوستان سلام
من می خوام ابتدایی ترین سوال ممکن رو بپرسم چون مبتدی هستم
بین #c و ++C و vb کدوم رو برا یادگیری انتخاب کنم؟؟؟؟
معیارم هم کمی سرگرم شدن و خیلی بیشتر آینده اون هست
این سوالو تو تاپیک vb هم مطرح کردم
ممنون میشم جواب من مبتدی رو هم بدید

farnaz_bahall
16-11-2007, 22:36
اين برنامه را خوب بررسي كنيد:

#include <stdio.h>
#include <conio.h>


void main(void)
{int a,b,c;
while(1)
{clrscr();
printf("\nAdade khod ra vared konid");
printf("\na=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);
printf("\nc=");
scanf("%d",&c);
if((a+b)<c || (a+c)<b || (b+c)<a)
printf("\nIn yek mosallas nist!");
else if(a==b & a==c)
printf("\nIn yek mosallas motasaviol'azla ast.");
else if(a==b || a==c || b==c)
printf("\nIn yek mosallas motasavios'saghein ast.");
else if(a*a==(b*b)+(c*c) || b*b==(a*a)+(c*c) || c*c==(a*a)+(b*b
printf("\nIn yek mosallas ghaemoz'zavie ast.");
else printf("\nIn yek mosallas mokhtalefol'azla ast.");
printf("\nDo you want to try again(y/n)?");
if(getch()=='y')continue;
break;
{
{

جناب شرلوک هلمز من این برنامه رو اجرا کردم خب باید قبول کنم برنامه شما از برنامه ی من خیلی بهتر بود اما به من حق بدید چون من با vb کار می کردم و با قرار دادن textbox و این جور چیزا کارم رو راه می انداختم و حالا که اومدم سراغ c می دونم هنوز خیلی توش باید کار کنم تا برنامه های خوبی مثل این بنویسم.
از برنامه تون ممنون یه سری چیز جدید یاد گرفتم.

farnaz_bahall
16-11-2007, 22:43
بازم برنامه ی اشکال دار و باز هم درخواست از یه نفر برای حل مشکل:
این برنامه ی محاسبه ی sin بر اساس دنباله ی مربوطشه.
این برنامه نیاز داره که فاکتوریل بعضی اعداد رو محاسبه کنه که من برای این کار fact رو تعریف کردم و بعد در زیر برنامه ی fact رو نوشتم اما وقتی اجرا می کنم ارور می ده و می گه این function تعریف شده نیست و اصلا به آخر برنامه توجه نمی کنه حالا چی کار باید بکنم؟
#include <stdio.h>
#include <math.h>
void main (void)
{
float x,sin=0;
scanf("%f",&x);
int i;
for(i=1;i<10;i++)
sin=sin+pow(x,2*i-1)*pow(-1,i-1)/Fact(2*i-1);
printf("Sin%f=%f",x,sin);
}
int Fact(int n)
{
int i,result=1;
for(i=1;i<=n;i++)
result=result*i;
return result;
}

sherlockholmz
17-11-2007, 15:23
بازم برنامه ی اشکال دار و باز هم درخواست از یه نفر برای حل مشکل:
این برنامه ی محاسبه ی sin بر اساس دنباله ی مربوطشه.
این برنامه نیاز داره که فاکتوریل بعضی اعداد رو محاسبه کنه که من برای این کار fact رو تعریف کردم و بعد در زیر برنامه ی fact رو نوشتم اما وقتی اجرا می کنم ارور می ده و می گه این function تعریف شده نیست و اصلا به آخر برنامه توجه نمی کنه حالا چی کار باید بکنم؟
#include <stdio.h>
#include <math.h>
void main (void)
{
float x,sin=0;
scanf("%f",&x);
int i;
for(i=1;i<10;i++)
sin=sin+pow(x,2*i-1)*pow(-1,i-1)/Fact(2*i-1);
printf("Sin%f=%f",x,sin);
}
int Fact(int n)
{
int i,result=1;
for(i=1;i<=n;i++)
result=result*i;
return result;
}

برنامه شما متاسفانه اشكال زياد داشت،تصحيح آن بصورت زير است:



#include <stdio.h>
#include <conio.h>
#include <math.h>

double fact(int n)
{int i;
double result=1;
for(i=1;i<=n;i++)result*double(1);
return result;
}
void main (void)
{long int i;
float x;
double sin;
while(1)
{clrscr();
printf("Enter your angle(radian):");
scanf("%f",&x);
sin=0;
for(i=0;i<50;i++)
sin=sin+pow(x,2*i+1)*pow(-1,i)/fact(2*i+1);
printf("\nsin%5.2f=%lf",x,sin);
printf("\n\nDo you want to continue(y/n)?");
if(getch()=='y')continue;
break;
}
printf("\nGOOD LUCK!");
getch();
}

seyyedi
17-11-2007, 19:14
دوستان سلام
میگم من جواب ندارم یا اینکه به مبتدی ها جواب نمیدید؟؟؟؟؟؟؟؟؟؟؟

farnaz_bahall
17-11-2007, 20:05
جناب شرلوک هلمز فرق برنامه ی من باشما در باطن، جابجا کردن جای fact با main بوده با تفاوت های ظاهری.
اما جالبیت مسئله این جاست که هیچ کدوم جواب درست رو نمی ده.

sherlockholmz
18-11-2007, 09:26
جناب شرلوک هلمز فرق برنامه ی من باشما در باطن، جابجا کردن جای fact با main بوده با تفاوت های ظاهری.
اما جالبیت مسئله این جاست که هیچ کدوم جواب درست رو نمی ده.

بله ،درباز نويسي برنامه اشتباهي رخ داده كه با عرض پوزش برنامه صحيح را برايتان قرار مي دهم:




#include <stdio.h>
#include <conio.h>
#include <math.h>

double fact(int n)
{int i;
double result=1;
for(i=1;i<=n;i++)result=result*double(i);
return result;
}
void main (void)
{long int i;
float x;
double sin;
while(1)
{clrscr();
printf("Enter your angle(radian):");
scanf("%f",&x);
sin=0;
for(i=0;i<50;i++)
sin=sin+pow(x,2*i+1)*pow(-1,i)/fact(2*i+1);
printf("\nsin%5.2f=%lf",x,sin);
printf("\n\nDo you want to continue(y/n)?");
if(getch()=='y')continue;
break;
}
printf("\nGOOD LUCK!");
getch();
}


برنامه فوق را اجرا كنيد(اشتباه در اين خط بود;(for(i=1;i<=n;i++)result=result*double(i)
واگر جواب داد اين نكات را بخاطر بسپاريد:
1-بدليل داشتن دو تابع سريعا" صعودي(توان و فاكتوريل) انتخاب نوع متغيرها مهم است ومتغيرهاي ساده مانند int سريعا" پر شده وجواب نمي دهد.(پيشنهاد مي شود مبحث انواع متغيرها را به دقت مطالعه بفرمائيد،البته فقط پيشنهاد مي شود)

2- در c قبل از استفاده از هر تابع در يك بلوك، بايد آن تابع تعريف شود.همانطور كه براي استفاده از توابع كليدي بايد header مربوطه در بالاي برنامه قرارگيرد، تابع fact نيز قبل از استفاده در بلوك main بايدتعريف گردد.حال شما يا مي توانيد مانند من كل تابع را قبل از main بنويسيد ويا مانند خودتان اصل تابع را بعد از main بنويسيد ولي تابع را قبل از main تعريف نمائ.
3- و سرانجام توچين نوشتن، اضافه كردن دستور پاك كردن screen ، اضافه كردن توضيحات لازم، اضافه سازي دستور نگه دارنده و ... 2 حسن دارد اولا" به ريبائي و شكيل بودن برنامه كمك مي كند و ثانيا" كسي راكه مستقيما" به برنامه شما ويا فايل اجرائي آن برمي خورد راهنمائي مي نمايد.
موفق باشيد.

amsjavan
18-11-2007, 11:16
دوستان سلام
میگم من جواب ندارم یا اینکه به مبتدی ها جواب نمیدید؟؟؟؟؟؟؟؟؟؟؟

با پاسکال یا سی شروع کنی بهتره

farnaz_bahall
18-11-2007, 11:54
بله ،درباز نويسي برنامه اشتباهي رخ داده كه با عرض پوزش برنامه صحيح را برايتان قرار مي دهم:




#include <stdio.h>
#include <conio.h>
#include <math.h>


double fact(int n)
{int i;
double result=1;
for(i=1;i<=n;i++)result=result*double(i);
return result;
}
void main (void)
{long int i;
float x;
double sin;
while(1)
{clrscr();
printf("Enter your angle(radian):");
scanf("%f",&x);
sin=0;
for(i=0;i<50;i++)
sin=sin+pow(x,2*i+1)*pow(-1,i)/fact(2*i+1);
printf("\nsin%5.2f=%lf",x,sin);
printf("\n\nDo you want to continue(y/n)?");
if(getch()=='y')continue;
break;
}
printf("\nGOOD LUCK!");
getch();
}



برنامه فوق را اجرا كنيد(اشتباه در اين خط بود;(for(i=1;i<=n;i++)result=result*double(i)



واگر جواب داد اين نكات را بخاطر بسپاريد:


1-بدليل داشتن دو تابع سريعا" صعودي(توان و فاكتوريل) انتخاب نوع متغيرها مهم است ومتغيرهاي ساده مانند int سريعا" پر شده وجواب نمي دهد.(پيشنهاد مي شود مبحث انواع متغيرها را به دقت مطالعه بفرمائيد،البته فقط پيشنهاد مي شود)



2- در c قبل از استفاده از هر تابع در يك بلوك، بايد آن تابع تعريف شود.همانطور كه براي استفاده از توابع كليدي بايد header مربوطه در بالاي برنامه قرارگيرد، تابع fact نيز قبل از استفاده در بلوك main بايدتعريف گردد.حال شما يا مي توانيد مانند من كل تابع را قبل از main بنويسيد ويا مانند خودتان اصل تابع را بعد از main بنويسيد ولي تابع را قبل از main تعريف نمائ.



3- و سرانجام توچين نوشتن، اضافه كردن دستور پاك كردن screen ، اضافه كردن توضيحات لازم، اضافه سازي دستور نگه دارنده و ... 2 حسن دارد اولا" به ريبائي و شكيل بودن برنامه كمك مي كند و ثانيا" كسي راكه مستقيما" به برنامه شما ويا فايل اجرائي آن برمي خورد راهنمائي مي نمايد.


موفق باشيد.






این برنامه درست کار کرد ممنون.
اما چند تا سوال و توضیح:
1 چرا در همین دستور به جای این که در i ضرب بشه در double(i)ضرب شده؟
2 در vb بعد while یک شرط می گذاشتیم اما این جا شما عدد یک گذاشتید این دستور چه معنی دارد؟
3 در دستور sin%5.2f=%lf چرا از %f معمولی استفاده نکردید چه فرقی دارد ؟
4 تابع fact رو چه طور می توان قبل از main تعریف کرد که بعد از main بلوک fact را قرار داد؟
5 درباره ی آخرین نکته ای هم که گفتید حرف شما رو قبول دارم اما وقتی هنوز اصل برنامه درست در نمی یاد این جور توجه به ظاهر برنامه که قبول دارم لازمه در اولویت دوم قرار می گیره و گر نه من تو برنامه های vb به این نکته دقت می کردم اما الان تو c برنامه اول باید درست کار کنه بعد.

sherlockholmz
18-11-2007, 16:45
خدمت Farnaz_Bahal گرامي عرض كنم كه:
1-چون result يك متغير double است و i يك متغير int ،براي يكسان سازي نوع متغيرها اين عمل صورت پذيرفته است.
2-اين هم ((while(1) ) يك شرط است تنها با اين تفاوت كه هميشه درست است.پس با اين عمل ما يك حلقه ائي ساختيم كه همواره شرطش درست است.حال براي خروح از آن چه كنيم؟ از دستورات continue و break استفاده كرده ايم.(توجه ضروري : در حلقه هاي همواره درست مانند اين،شرط خروج بسيار مهم است،چون اگر شرط بطور صحيح انتخاب نگردد، برنامه تا بي نهايت در loop باقي خواهد ماند!)
3-f%، فورمتي بصورت *******.****... دارد .به بيان ديگر تعداد رقمهاي اعشاري كه نشان مي دهد، بيش از اندازه معمولي است و در صورتي كه عددي هم نباشد بجاي آن صفر قرار مي دهد.مثلا" اگر جواب 2.56 باشد بصورت 2.560000000 نشان مي دهد كه قبول كنيد شكيل نيست(من قبول كردم).5.2f % فورمت خاصي به عدد اعشاري شما مي دهد،بدين صورت كه 5 مجموع تعداد ارفام صحيح و اعشاري ومميز است و 2 تعداد ارقام پس از مميز را نشان مي دهددر واقع شكل كلي را به صورت **.** معين مي كند.
4-خيلي ساده، تابع كامل را بعد از بلوك main مينويسيم و قبل از بلوك main اين خط را اضافه ميكنيم:

double fact(int n);
به علامت ; در پايان خط توجه شود.در واقع اسم تابع را نوشته با يك ; آنرا مي بنديم.
5-صلاح مملكت خويش خسروان دانند ولي به نظر من از پايه رعايت نكات راحتتر است چون آدم عادت مي كند و سپس ترك آن مشكل است.در هر صورت موفق باشيد.

egoldfars
18-11-2007, 23:06
سلام
اعداد تام به چه معنی هست و چه اعدادی هستند؟
مثلا اعداد تام ا تا 1000 چه طوری به دست میاد؟
راهنمایی کنید

m3hrz4d
18-11-2007, 23:14
یه نگاه به اینجا بندازین [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] در مورد اعداد تام هست

egoldfars
18-11-2007, 23:36
دوستان سلام
من می خوام ابتدایی ترین سوال ممکن رو بپرسم چون مبتدی هستم
بین #c و ++C و vb کدوم رو برا یادگیری انتخاب کنم؟؟؟؟
معیارم هم کمی سرگرم شدن و خیلی بیشتر آینده اون هست
این سوالو تو تاپیک vb هم مطرح کردم
ممنون میشم جواب من مبتدی رو هم بدید
با سلام خدمت دوستم باید بگم اگر برای سرگرمی میخوای کار کنی VB چونکه یاد گیریش آسان تر هست اما اگر می خوای حرفه ای تو برنامه نویسی بیشی #c و ++C رو انتخاب کن چونکه اگر ++ C رو کامل بلد شی میتونی بادیگر زبانهای برنامه نویسی مثل PHP و JAVA و.... هم کار کنی چونکه این زبانها شبیه ++C هستند.میشه گفت C مادر تمام زبان هاست مثل انگلیسی که زبان بین المللیست.اینا نظر من هست نمیدونم ایا نظر اساتید با من یکی هست یا خیر چونکه من خودم 3هفته برنامه نویسی با C رو شروع کردم قبلا با VB کار میکردم.
امیدوارم که موفق باشی ....................

amsjavan
20-11-2007, 18:39
سلام به همگی



کسی می تونه منو راهنمای کنه که چه جوری این برنامه رو بنویسم.


ما یه خونه 5 در 4 داریم. نقطه a در خونه اول و نقطه ی b در خونه ی آخر. یه برنامه ای باید بنویسم که تعداد مسیرها رو از a به b مشخص بکند ونشون بده که هر مسیر چه جوری هست. فقط هم می تونیم به راست و پایین حرکت کنیم.

seyyedi
21-11-2007, 15:35
با سلام خدمت دوستم باید بگم اگر برای سرگرمی میخوای کار کنی VB چونکه یاد گیریش آسان تر هست اما اگر می خوای حرفه ای تو برنامه نویسی بیشی #c و ++C رو انتخاب کن چونکه اگر ++ C رو کامل بلد شی میتونی بادیگر زبانهای برنامه نویسی مثل PHP و JAVA و.... هم کار کنی چونکه این زبانها شبیه ++C هستند.میشه گفت C مادر تمام زبان هاست مثل انگلیسی که زبان بین المللیست.اینا نظر من هست نمیدونم ایا نظر اساتید با من یکی هست یا خیر چونکه من خودم 3هفته برنامه نویسی با C رو شروع کردم قبلا با VB کار میکردم.
امیدوارم که موفق باشی ....................
دوستان سلام
ممنون دوست عزیز
نظر خودم هم روی #C بود ولی می خواستم نظر اساتید رو هم تو این زمینه بدونم
شنیدم سی شارپ در شکل گرایی و راحت بودن فضای اون مثل جاواست و از ++c بهتره ؟؟؟ آیا درسته؟؟؟؟

amsjavan
21-11-2007, 20:58
در مورد سوال خودم استادمون گفت با 9 تا حلقه ی for میشه اما راه خوبی نیست. راه درستش اینه که با توابع بازگشتی این کار رو انجام بدیم اما من هنوز نتونستم کسی می تونه کمکم کنه؟ البته تونستم با 3 تا حلقه for تعداد راه ها رو به دست بیارم اما نمی تونم چه جوری یه کاری کنم که بگه راه ها چی هستند( مثلا بگه 5 تا به رست و 4 تا پایین)

m3hrz4d
22-11-2007, 06:03
اگه صورت مساله رو راحت تر کنی راه حل رو راحت بدست میاری.فرض کن این خونه 3 در 3 باشه.:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چون فقط مسیر به پایین و راست مجازه, تنها راه رسیده به b دو بار حرکت به راست و 2 بار حرکت به پایین توی حالت های مختلف هست.اگر R رو بگیریم حرکت به راست و D رو بگیریم حرکت به پایین, مساله این طوری میشه که R, R, D, D رو به چند صورت و چه صورت هایی میتونیم کنار هم بگذاریم؟
اگه خونه ی ما M سطر و N ستون داشته باشه, N-1 تا R و M-1 تا D داریم و باید مساله رو برای این مقدار ها حل کنیم.
قسمت اول یعنی" چند صورت" مثل یه مساله ی احتمال حل میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که ! علامت فاکتوریل هست که با پیاده سازیش توی C میشه جواب این قسمت رو راحت حساب کرد.
اما قسمت مشکل تر پیدا کردن کل راه هاست:
بدست آوردن راه هایی که میشه (M-1) تا R و (N-1) تا D رو کنار هم گذاشت.
خودم یکم زور زدم که بنویسمش اما الان 6 صبحه و من هنوز نخوابیدم مخم نمیکشه.
شاید اینایی که گفتم رو خودت میدونستی ولی به هر حال نوشتم تا بعدا دوباره نخوام بدستشون بیارم!

amsjavan
22-11-2007, 14:19
اگه صورت مساله رو راحت تر کنی راه حل رو راحت بدست میاری.فرض کن این خونه 3 در 3 باشه.:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدچون فقط مسیر به پایین و راست مجازه, تنها راه رسیده به b دو بار حرکت به راست و 2 بار حرکت به پایین توی حالت های مختلف هست.اگر R رو بگیریم حرکت به راست و D رو بگیریم حرکت به پایین, مساله این طوری میشه که R, R, D, D رو به چند صورت و چه صورت هایی میتونیم کنار هم بگذاریم؟
اگه خونه ی ما M سطر و N ستون داشته باشه, N-1 تا R و M-1 تا D داریم و باید مساله رو برای این مقدار ها حل کنیم.
قسمت اول یعنی" چند صورت" مثل یه مساله ی احتمال حل میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه ! علامت فاکتوریل هست که با پیاده سازیش توی C میشه جواب این قسمت رو راحت حساب کرد.
اما قسمت مشکل تر پیدا کردن کل راه هاست:
بدست آوردن راه هایی که میشه (M-1) تا R و (N-1) تا D رو کنار هم گذاشت.
خودم یکم زور زدم که بنویسمش اما الان 6 صبحه و من هنوز نخوابیدم مخم نمیکشه.
شاید اینایی که گفتم رو خودت میدونستی ولی به هر حال نوشتم تا بعدا دوباره نخوام بدستشون بیارم!
یه چیزی رو در نظر نگرفتی. حتما نباید سط و ستون برابر باشه

m3hrz4d
22-11-2007, 15:41
یه چیزی رو در نظر نگرفتی. حتما نباید سط و ستون برابر باشه
در نظر گرفتم! به همین خاطر گفتم اگه تعداد سطر ها M و تعداد ستون ها N باشه! اگر نه که از یه حرف استفاده میکردم!!

m3hrz4d
22-11-2007, 16:28
این کد بدون استفاده از آرایه مسیر ها رو به صورت شبه درختی رسم میکنه.یعنی اون قسمت هایی که در ابتدای یک مسیر تکراری هستن رو چاپ نمیکنه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثلا برای یک خونه با 2 سطر و 3 ستون :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که اینجا RDR رو DR نوشته و باید از بالایی جایگذین کرد که با یه آرایه میشه این کار رو انجام داد و همه ی جواب ها رو کامل چاپ کرد.

amsjavan
23-11-2007, 11:33
اگه صورت مساله رو راحت تر کنی راه حل رو راحت بدست میاری.فرض کن این خونه 3 در 3 باشه.:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدچون فقط مسیر به پایین و راست مجازه, تنها راه رسیده به b دو بار حرکت به راست و 2 بار حرکت به پایین توی حالت های مختلف هست.اگر R رو بگیریم حرکت به راست و D رو بگیریم حرکت به پایین, مساله این طوری میشه که R, R, D, D رو به چند صورت و چه صورت هایی میتونیم کنار هم بگذاریم؟
اگه خونه ی ما M سطر و N ستون داشته باشه, N-1 تا R و M-1 تا D داریم و باید مساله رو برای این مقدار ها حل کنیم.
قسمت اول یعنی" چند صورت" مثل یه مساله ی احتمال حل میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه ! علامت فاکتوریل هست که با پیاده سازیش توی C میشه جواب این قسمت رو راحت حساب کرد.
اما قسمت مشکل تر پیدا کردن کل راه هاست:
بدست آوردن راه هایی که میشه (M-1) تا R و (N-1) تا D رو کنار هم گذاشت.
خودم یکم زور زدم که بنویسمش اما الان 6 صبحه و من هنوز نخوابیدم مخم نمیکشه.
شاید اینایی که گفتم رو خودت میدونستی ولی به هر حال نوشتم تا بعدا دوباره نخوام بدستشون بیارم!
ببین من خوب این چیزی که گفتی رو نفهمیدم یه ذره بیشتر توضیح میدی.
در مورد برنامه ات هم بیشتر توضیح بده یعنی بگو روش کارت چه جوریه. آخه می دونی من یک ماه نشده که سی رو شروع کردم

رعناشفاهی
23-11-2007, 11:50
سلام من سوالی درباره فایلهای سربار داشتم در توربو سی اصلا فایلهای سربار شناخته شده نیستند و پیام خطا هنگام اجرا می ده باید چیکار کنم؟ پیغام اینطوریه:unable to open include file

رعناشفاهی
23-11-2007, 11:54
سلام وقتی می خواهم برنامه هایم را اجرا کنم فایلهای سربار اجرا نمی شوند و این پیغام را دریافت می کنم
unable to open include file لطفا کمکم کنید.

m3hrz4d
23-11-2007, 15:38
ببین من خوب این چیزی که گفتی رو نفهمیدم یه ذره بیشتر توضیح میدی.
در مورد برنامه ات هم بیشتر توضیح بده یعنی بگو روش کارت چه جوریه. آخه می دونی من یک ماه نشده که سی رو شروع کردم
دقیقا کجاش رو نفهمیدی؟

m3hrz4d
23-11-2007, 15:49
سلام وقتی می خواهم برنامه هایم را اجرا کنم فایلهای سربار اجرا نمی شوند و این پیغام را دریافت می کنم
unable to open include file لطفا کمکم کنید.
اول اینکه شما باید توی منوی Options/Directories برین و اونجا Include Directories رو به صورت :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وارد کنین که اینجا c:\turbo_c آدرس جاییه که Turbo C رو نصب کردین(جایگزین کنین).در واقع شما با این کار به کامپایلر میگین که کجا دنبال فایل هایی که include میکنین بگرده.
اگه باز هم error داد و شما از :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
واسه include استفاده میکنین و error میده, بجاش از :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده کنین.
یه برنامه ++C رو من اینطوری نوشتم تا کار کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و در آخر اگه از من میشوید برین سراغ یه IDE ی درست حسابی مثل Visual C یا C Builder .شاید اول کار یکم کار باهاش پیچیده باشه اما اگه راه بیفتین دیگه ازین جور مشکل ها باهاش ندارین

amsjavan
23-11-2007, 23:59
دقیقا کجاش رو نفهمیدی؟
این فرمول رو درست نفهمیدم. البته اشکال از ریاضیات منه. در هر صورت اگه بیشتر توضیح بدی ممنون می شم.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

amsjavan
24-11-2007, 00:09
یه چیز دیگه هم هست. یه جای برنامه ای که نوشتی اشکال داره چون من اینو می دونم که 4 در 5 حدود تا120 راه داره در صورتی که برنامه میگه 35 !
راستی usingnamespace std; چیه و چی کار می کنه؟ نمی دونم چرا turbo c ازش اشکال گرفت. من هم برداشتمش و برنامه اجرا شد.

m3hrz4d
24-11-2007, 01:26
این فرمول رو من توی درس آمار و احتمال خوندم.
به !N طریق میشه N شی متمایز رو توی یک ردیف کنار هم قرار داد.
حالا اگه از این N شی,K1 تاشون با هم نامتمایز باشن و K2 تاشون هم با همدیگه نامتمایز باشن ( مثلا K1 لامپ قرمز و K2 لامپ سفید) توی این فرمول !N , ما !K1 و !K2 بار این تعداد جابجایی رو اضافه حساب کردیم بنابر این !N رو بر !K1 و !K2 تقسیم میکنیم و فرمول میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا مساله ی ما اینجا اینه : N-1 ی R و M - 1 ی D داریم که میخواهیم کنار هم قرارشون بدیم.(مثل 3 تا لامپ قرمز و 2 تا لامپ سفید) و عدد هارو میگذاریم توی فرمول.
من شاید درست نتونم توضیح بدم اما اگه خیلی گیری توی کتاب آمار و احتمال دکتر جواد بهبودیان صفحه 96 مثال 21 این فرمول هست.
--
اینی که میگه تعداد رو اشتباه میده علت اینه که وقتی تو خونه رو 4-5 میگیری, نقطه ی شروع رو توی خونه ی اول نمیگیری و جوری میگیری که نیاز به 5 حرکت به سمت راست و چهار حرکت به سمت بالاست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و به این خاطر هست که بجای اینکه 4 حرکت به سمت راست و سه تا به سمت پایین داشته باشی یکی بیشتر داری(توی صورت مساله گفته بودی نقطه ی شروع در خونه ی اوله)
بنابر این اگه توی کدی که دادم خونه رو 6 در 5 بگیری جوابی که میگی حاصل میشه یعنی 126

using namespace std هم توی ++C اضافه شده که برای دسته بندی بهتر کد ها و حل مشکل هم نام بودن بعضی متد ها یا متغیر هاست که کامپایلر های قدیمی نمیشناسنش.

behdad_20
24-11-2007, 20:21
باعرض سلام و خسته نباشید .


من برنامه ای میخواستم که 1 رشته از ورودی گرفته و مشخص نماید آیا نیمه سمت راست با نیمه سمت چپ آن برابر است یا خیر و پیغام مناسب در خروجی چاپ کند.
با تشکر.
برنامه دیگه ای هم میخواستم که شماره دانشجویی ، نام ، نام خانوادگی و معدل یک کلاس5 نفری را از ورودی گرفته و شاگرد اول و دوم را به همراه شماره دانشجویی و نام آن مشخص کند و آن را در خروجی چاپ کند.
برنامه ها رو با ++C میخواستم .
با تشکر.

amsjavan
24-11-2007, 20:24
این فرمول رو من توی درس آمار و احتمال خوندم.
به !N طریق میشه N شی متمایز رو توی یک ردیف کنار هم قرار داد.
حالا اگه از این N شی,K1 تاشون با هم نامتمایز باشن و K2 تاشون هم با همدیگه نامتمایز باشن ( مثلا K1 لامپ قرمز و K2 لامپ سفید) توی این فرمول !N , ما !K1 و !K2 بار این تعداد جابجایی رو اضافه حساب کردیم بنابر این !N رو بر !K1 و !K2 تقسیم میکنیم و فرمول میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدحالا مساله ی ما اینجا اینه : N-1 ی R و M - 1 ی D داریم که میخواهیم کنار هم قرارشون بدیم.(مثل 3 تا لامپ قرمز و 2 تا لامپ سفید) و عدد هارو میگذاریم توی فرمول.
من شاید درست نتونم توضیح بدم اما اگه خیلی گیری توی کتاب آمار و احتمال دکتر جواد بهبودیان صفحه 96 مثال 21 این فرمول هست.
--

خیلی خوب توضیح دادی. تقریبا فهمیدم یعنی همون قدری که تو دبیرستان فهمیدم الان یام اومد. باید خیلی بیشتر روی کدت فکر کنم. ببین تو از توابع بازگشتی استفاده نکردی؟ چه جوری این قدر سریع تونستی این برنامه رو بنویسی استاد به بچه ها 2 هفته وقت داده فقط 1 نفر تونسته تاحالا حلش کنه. البته من خودم تونستم با یه روش خاص برنامه ای بنویسم که تعداد رو حساب کنه. اما نمی تونست راه رو بگه. به هرحال خیلی ممنون

amsjavan
24-11-2007, 21:04
اینی که میگه تعداد رو اشتباه میده علت اینه که وقتی تو خونه رو 4-5 میگیری, نقطه ی شروع رو توی خونه ی اول نمیگیری و جوری میگیری که نیاز به 5 حرکت به سمت راست و چهار حرکت به سمت بالاست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو به این خاطر هست که بجای اینکه 4 حرکت به سمت راست و سه تا به سمت پایین داشته باشی یکی بیشتر داری(توی صورت مساله گفته بودی نقطه ی شروع در خونه ی اوله)
بنابر این اگه توی کدی که دادم خونه رو 6 در 5 بگیری جوابی که میگی حاصل میشه یعنی 126

using namespace std هم توی ++C اضافه شده که برای دسته بندی بهتر کد ها و حل مشکل هم نام بودن بعضی متد ها یا متغیر هاست که کامپایلر های قدیمی نمیشناسنش.

منظور من این جوری بود :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

amsjavan
24-11-2007, 21:40
یه مشکل دیگه. من ترتیب نشون دادن راه ها رو نفهمیدم! یعنی راه ها رو همین جوری پشت سر هم می نویسه؟ مگه نباید هر مرحله رو توی یه خط بنویسه؟

nahid68
25-11-2007, 00:24
mishe lotfan recursive insertion sort ro baram begid?

m3hrz4d
25-11-2007, 06:29
منظور من این جوری بود :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من فکر کردم قراره از مرکز خونه ها حرکت کنه نه از روی مرز ها.
پس توی کدی که گذاشتم من تعداد حرکت ها رو N-1 و M-1 گذاشتم که باید بجاش M و N میگذاشتم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید[/SIZE]

m3hrz4d
25-11-2007, 06:37
خیلی خوب توضیح دادی. تقریبا فهمیدم یعنی همون قدری که تو دبیرستان فهمیدم الان یام اومد. باید خیلی بیشتر روی کدت فکر کنم. ببین تو از توابع بازگشتی استفاده نکردی؟ چه جوری این قدر سریع تونستی این برنامه رو بنویسی استاد به بچه ها 2 هفته وقت داده فقط 1 نفر تونسته تاحالا حلش کنه. البته من خودم تونستم با یه روش خاص برنامه ای بنویسم که تعداد رو حساب کنه. اما نمی تونست راه رو بگه. به هرحال خیلی ممنون
توابع بازگشتی هست دیگه.توی کد تابع findWays خودش رو صدا میزنه.اصلا بعید میدونم بدون توابع بازگشتی بشه برای هر M و N ی نوشتش.مثلا اگه M و N خیلی زیاد باشن و نخوای از بازگشتی استفاده کنی باید تعداد زیادی for بگذاری که اصلا معقول نیست..
انصافا برای درس شما سوال سختی هست معلومه استاد سخت گیری دارین:31: ولی اگه صورت مساله رو کامل درک کنی و مفهوم تابع بازگشتی رو بفهمی میتونی راحت بنویسیش.

m3hrz4d
25-11-2007, 06:42
یه مشکل دیگه. من ترتیب نشون دادن راه ها رو نفهمیدم! یعنی راه ها رو همین جوری پشت سر هم می نویسه؟ مگه نباید هر مرحله رو توی یه خط بنویسه؟
هر مرحله رو توی یک خط مینویسه منتها به حالت درختی(چون نخواستم آرایه بگذارم) یعنی مثلا برای 3 در 3 خروجی این هست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که اولین مسیر میشه R R R D D D دومی میشه R R D R D D که دو مرحله ی اول مسیر دوم(R R) نوشته نشده چون عینا توی مسیر اول هست.
مسیر سوم میشه R R D D R D که دوباره 3 مرحله ی اول مسیر سوم (R R D) چاپ نشده چون عینا توی مسیر دوم هست. الی آخر.
میشه با روشی کاری کرد که همه رو چاپ کنه (مثل آرایه) اما من خواستم ساده تر باشه تا موضوع رو بگیری بعد خودت کامل بنویسی

amsjavan
25-11-2007, 10:10
توابع بازگشتی هست دیگه.توی کد تابع findWays خودش رو صدا میزنه.اصلا بعید میدونم بدون توابع بازگشتی بشه برای هر M و N ی نوشتش.مثلا اگه M و N خیلی زیاد باشن و نخوای از بازگشتی استفاده کنی باید تعداد زیادی for بگذاری که اصلا معقول نیست..
انصافا برای درس شما سوال سختی هست معلومه استاد سخت گیری دارین:31: ولی اگه صورت مساله رو کامل درک کنی و مفهوم تابع بازگشتی رو بفهمی میتونی راحت بنویسیش.

استاد ما هنوز تابع بازگشتی رو نگفته من خودم از کتاب جعفر نژاد قمی خوندم. خیلی سخته هر کاری می کنم نمی تونم بفهمم می تونی برام توضیح بدی؟ تو خودت چه جوری فهمیدی؟
استاد گفته بود که این تمرین اختیاریه و هر کی بیاره 1 نمره می گیره.

sherlockholmz
25-11-2007, 10:18
استاد ما هنوز تابع بازگشتی رو نگفته من خودم از کتاب جعفر نژاد قمی خوندم. خیلی سخته هر کاری می کنم نمی تونم بفهمم می تونی برام توضیح بدی؟ تو خودت چه جوری فهمیدی؟
استاد گفته بود که این تمرین اختیاریه و هر کی بیاره 1 نمره می گیره.


يك نكته راجع به تابع بازگشتي در نظر داشته باش كه چون توابع بازگشتي با پشته stack كار مي كند، به سرعت پشته را پر كرده و اگر تعداد مراجعه به آن بيش از حد معقول باشد باعث overflow پشته خواهد شد. برنامه نويسان حرفه اي بر خلاف تصور استفاده از توابع بازگشتي را مگر در مواقع ضروري پيشنهاد نمي كنند.(جهت استحضار)

amsjavan
25-11-2007, 10:23
هر مرحله رو توی یک خط مینویسه منتها به حالت درختی(چون نخواستم آرایه بگذارم) یعنی مثلا برای 3 در 3 خروجی این هست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه اولین مسیر میشه R R R D D D دومی میشه R R D R D D که دو مرحله ی اول مسیر دوم(R R) نوشته نشده چون عینا توی مسیر اول هست.
مسیر سوم میشه R R D D R D که دوباره 3 مرحله ی اول مسیر سوم (R R D) چاپ نشده چون عینا توی مسیر دوم هست. الی آخر.
میشه با روشی کاری کرد که همه رو چاپ کنه (مثل آرایه) اما من خواستم ساده تر باشه تا موضوع رو بگیری بعد خودت کامل بنویسی
اینو تقریبا فهمیدم. میشه با آرایه هم بگی شاید اونجوری راحتتر مسئله رو بگیرم

farnaz_bahall
25-11-2007, 23:06
سلام من توي يك برنامه يك مشكل عجيب پيدا كردم.
اين قسمتي از برنامه ي منه:
for (i=99;i>=0;i--)
B[i]=getche()-48;
B[100]=0;
for (i=0;i<=200;i++)
C[i]=0;
كه تو اين برنامه توي آرايه ي B قراره صد تا عدد بريزه و اعداد آرايه C رو هم صفر كنه اما مشكل اين جاست كه B[0] رو وقتي مي گيره از دست مي ده يعني وقتي برنامه رو اين جوري اجرا مي كنم:
for (i=99;i>=0;i--)
B[i]=getche()-48;
B[100]=0;
printf("\n%d%d",B[1],B[0]);
for (i=0;i<=200;i++)
C[i]=0;
printf("\n%d%d",B[1],B[0]);
در پرينت اول بي صفر و يك رو درست چاپ مي كنه اما در دومين پرينت مقدار بي صفر رو از دست مي ده و به جاش عدد صفر رو چاپ مي كنه!
حالا مشكل اين از كجاست؟

sherlockholmz
26-11-2007, 08:55
سلام من توي يك برنامه يك مشكل عجيب پيدا كردم.
اين قسمتي از برنامه ي منه:
for (i=99;i>=0;i--)
B[i]=getche()-48;
B[100]=0;
for (i=0;i<=200;i++)
C[i]=0;
كه تو اين برنامه توي آرايه ي B قراره صد تا عدد بريزه و اعداد آرايه C رو هم صفر كنه اما مشكل اين جاست كه B[0] رو وقتي مي گيره از دست مي ده يعني وقتي برنامه رو اين جوري اجرا مي كنم:
for (i=99;i>=0;i--)
B[i]=getche()-48;
B[100]=0;
printf("\n%d%d",B[1],B[0]);
for (i=0;i<=200;i++)
C[i]=0;
printf("\n%d%d",B[1],B[0]);
در پرينت اول بي صفر و يك رو درست چاپ مي كنه اما در دومين پرينت مقدار بي صفر رو از دست مي ده و به جاش عدد صفر رو چاپ مي كنه!
حالا مشكل اين از كجاست؟

اگر خطوط برنامه اتان دقيقا" همين هست كه نوشتيد، احتمالا" در بخشي از برنامه []B بصورت تابعي از []C تعريف شده است. بهمين دليل است كه با تغيير []Cمقادير[] B تغيير مي كند. بررسي كنيد واگر حل نشد و تمايل داشتيد برنامه را كامل بگذاريد تا شايد بتوان مشكل را حل كرد.
علاوه بر اين مشكل،شما كه از ورودي عدد ميگيريد ،چرا از تابع getche استفاده كرده ايد؟

m3hrz4d
26-11-2007, 12:21
استاد ما هنوز تابع بازگشتی رو نگفته من خودم از کتاب جعفر نژاد قمی خوندم. خیلی سخته هر کاری می کنم نمی تونم بفهمم می تونی برام توضیح بدی؟ تو خودت چه جوری فهمیدی؟
استاد گفته بود که این تمرین اختیاریه و هر کی بیاره 1 نمره می گیره.
معمولا وقتی بخواهیم یه عمل تکراری رو چندین بار انجام بدیم میتونیم از توابع بازگشتی استفاده کنیم و توی تابع, خود تابع رو صدا بزنیم و با استفاده از چک کردن آرگومان ها این حلقه تا یه جایی ادامه پیدا کنه.
فکر کنم یه مثال ساده در مورد توابع بازگشتی تابع فاکتوریل بشه (گرچه نوشتن فاکتوریل به صورت بازگشتی از لحاظ سرعت اجرا جالب نیست اما مثال خوبیه)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ما میخواهیم تابعی بنویسیم که این !5 رو حساب کنه.توی محاسبه ی این ضرب, ما عدد 1 رو داریم که در عدد بعدیش یعنی 2 ضرب میشه.نتیجه در عدد بعدی یعنی 3 ضرب میشه.بعدی در 4 و الی آخر.یعنی یه عمل تکراری باید انجام بشه.و البته برعکس هم میشه بهش نگاه کرد.ما عدد 5 رو داریم که باید در عدد کمتر از خودش یعنی 4ضرب بشه.نتیجه باید در عدد کمتر یعنی 3 ضرب بشه تا اینکه به 1 برسیم و وقتی به یک رسیدیم دیگه کار تمومه.
تابع رو برای حالت دوم مینویسیم.
تابع(fact) فقط یک عدد(n) میگیره و فاکتوریلش رو برمیگردونه, به این صورت که اگه عدد یک بود, 1 رو برمیگردونه و در غیر این صورت, مقدار(n * fact(n-1 رو که برابر همون !n هست رو برمیگردونه.وقتی توی خود تابع, (fact(n-1 فراخوانی میشه, مسیر برنامه به اول تابع میره (مثل وقتی که توی یک تابع, یک تابع دیگه رو صدا بزنی) و n-1 رو به تابع میده.دوباره اینجا اگه n دو باشه n-1 میشه 1 و تابع 1 رو برای تابع فراخواننده(که همین تابع هست) برمیگردونه در نتیجه در تابع اول, (fact(n-1 رو برمیگردونه. اگه n بیشتر از 2 باشه دوباره توی تابع دوم تابع fact برای بار دوم صدا زده میشه (fact(n-1 -1 و مقدار در n-1 ضرب میشه و برای تابع اول فرستاده میشه.
این حلقه ی تو در تو تا جایی که n ی که برای تابع فرستاده میشه 1 نباشه ادامه پیدا میکنه و نتیجه ای که توی اولین تابع بدست میاد میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میدونم شاید درست توضیح ندادم روی شکل خیلی راحتر میشه توضیح داد.اگه از یه IDE مثل Visual Studio که Debug قوی داشته باشه استفاده میکنی, با Trace کردن خط به خط این تابع خیلی راحتتر متوجه میشی که منظور چیه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

m3hrz4d
26-11-2007, 12:46
اینو تقریبا فهمیدم. میشه با آرایه هم بگی شاید اونجوری راحتتر مسئله رو بگیرم
با آرایه ساده تر نمیشه اما اینجا برای اینکه خیلی پیچیده نشه از آرایه ایستا(Static) استفاده کردم(فکر کنم هنوز آرایه پویا(استفاده از new) رو نخونده باشین) واسه همین طول آرایه باید از قبل مشخص باشه و برنامه نمیتونه برای هر M و N ی نتیجه رو حساب کنه.آرایه دو بعدی رو 20 در 6 گرفتم تا نتیجه ی مساله برای حالت 3 در 3 توش ریخته بشه(20 مسیر 6 حرکتی) و چاپ بشه.ضمن اینکه باز هم واسه سادگی آرایه رو سراسری تعریف کردم و آرایه به صورت آرگومان به تابع ارسال نمیشه.اگه میخوای برای مقدار های بیشتر هم نتیجه رو ببینی باید اندازه ی آرایه رو بیشتر کنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تابع آرایه رو پر میکنه و بعد توی main چاپ میشه
[/SIZE]

shadmehrdj
26-11-2007, 12:48
میشه بگید مشکل این برنامه کجا هست.این برنامه دترمینان ماتریس 5*5 را حساب میکنه.اما وقتی اجرا می کنم Divide Error میده.

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main(){
clrscr();
int a[5][5];
int i,j,n,d,k;
for (i=1;i<5;i++)
for (j=1;j<5;j++)
a[i][j]=random(9);
for (i=1;i<5;i++){
for (j=1;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");}
for (k=1;k<5-1;k++)
for (i=k+1;i<5;i++)
for (j=1;j<5;j++)
a[i][j]=a[i][j]*(a[k][k]/a[i][k])-a[k][j];
d=1;
for (i=1;i<5;i++)
d=d*a[i][i];
printf("Determinant is:%d",d);
getch();
}

m3hrz4d
26-11-2007, 12:55
علتerror که مسلما ههمون جاییه که تقسیم کردی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی توی شرایطی [a[i][k براربر 0 میشه.اما اینکه چرا اینطوریه اگه فرمول دترمینان 5x5 رو بگذاری بهتر میشه کمک کرد

shadmehrdj
26-11-2007, 13:03
میشه شما یک برنامه برای من بنویسید که دترمینان ماتریس 5*5 را حساب کنه؟

m3hrz4d
26-11-2007, 15:34
فرمولش رو ندارم

amsjavan
26-11-2007, 20:12
تابع(fact) فقط یک عدد(n) میگیره و فاکتوریلش رو برمیگردونه, به این صورت که اگه عدد یک بود, 1 رو برمیگردونه و در غیر این صورت, مقدار(n * fact(n-1 رو که برابر همون !n هست رو برمیگردونه.وقتی توی خود تابع, (fact(n-1 فراخوانی میشه, مسیر برنامه به اول تابع میره (مثل وقتی که توی یک تابع, یک تابع دیگه رو صدا بزنی) و n-1 رو به تابع میده.دوباره اینجا اگه n دو باشه n-1 میشه 1 و تابع 1 رو برای تابع فراخواننده(که همین تابع هست) برمیگردونه در نتیجه در تابع اول, (fact(n-1 رو برمیگردونه.

دقیقا مشکل من همین جاست و قتی ما در تابع مثلا فرمولی نداریم این تابع (fact(n-1 چی رو به ما برمیگردونه!؟


n * (n-1) * (n-2) * (n - 3) * ... * 1

من فکر کنم نتیجه برعکس چاپ میشه چون تابع fact باید تا آخر بره تا دستور return 1 برسه بعد حالا شروع به چاپ می کنه:




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اگه از یه IDE مثل Visual Studio که Debug قوی داشته باشه استفاده میکنی, با Trace کردن خط به خط این تابع خیلی راحتتر متوجه میشی که منظور چیه

با turbo c++ 4.5 میشه trace کرد- منظورت از IDE چیه؟ visual studio برای c++ نیست؟ c هم میشه توش اجرا کرد؟

amsjavan
26-11-2007, 20:17
با آرایه ساده تر نمیشه اما اینجا برای اینکه خیلی پیچیده نشه از آرایه ایستا(Static) استفاده کردم(فکر کنم هنوز آرایه پویا(استفاده از new) رو نخونده باشین) واسه همین طول آرایه باید از قبل مشخص باشه و برنامه نمیتونه برای هر M و N ی نتیجه رو حساب کنه.آرایه دو بعدی رو 20 در 6 گرفتم تا نتیجه ی مساله برای حالت 3 در 3 توش ریخته بشه(20 مسیر 6 حرکتی) و چاپ بشه.ضمن اینکه باز هم واسه سادگی آرایه رو سراسری تعریف کردم و آرایه به صورت آرگومان به تابع ارسال نمیشه.اگه میخوای برای مقدار های بیشتر هم نتیجه رو ببینی باید اندازه ی آرایه رو بیشتر کنی

نمیشه هر راه رو در یک آرایه ی یک بعدی ریخت یعنی مثلا 3 در 3 در یک آرایه 6 تایی بار اول راه اول رو چاپ کنه بعد خط بعد دوباره همین آرایه مقادیر جدید بگیره راه دوم رو چاپ کنه

amsjavan
26-11-2007, 20:20
فرمولش رو ندارم
فرمول نمی خواد که با 3 تا حلقه ی for میشه. من الگوریتمش رو نوشتم.

behdad_20
26-11-2007, 20:25
باعرض سلام و خسته نباشید .
m3hrz4ad جان قربونت جواب ما رو هم بده دیگه .


من برنامه ای میخواستم که 1 رشته از ورودی گرفته و مشخص نماید آیا نیمه سمت راست با نیمه سمت چپ آن برابر است یا خیر و پیغام مناسب در خروجی چاپ کند.
با تشکر.
برنامه دیگه ای هم میخواستم که شماره دانشجویی ، نام ، نام خانوادگی و معدل یک کلاس5 نفری را از ورودی گرفته و شاگرد اول و دوم را به همراه شماره دانشجویی و نام آن مشخص کند و آن را در خروجی چاپ کند.
برنامه ها رو با ++C میخواستم .
با تشکر.

m3hrz4d
26-11-2007, 21:13
دقیقا مشکل من همین جاست و قتی ما در تابع مثلا فرمولی نداریم این تابع (fact(n-1 چی رو به ما برمیگردونه!؟

من فکر کنم نتیجه برعکس چاپ میشه چون تابع fact باید تا آخر بره تا دستور return 1 برسه بعد حالا شروع به چاپ می کنه:




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


با turbo c++ 4.5 میشه trace کرد- منظورت از IDE چیه؟ visual studio برای c++ نیست؟ c هم میشه توش اجرا کرد؟
خوب (fact(n-1 اگه n بزرگتر از1 باشه به ما(n * fact(n-2 رو برمیگردونه.فرمولی نیاز نیست چون تنها کاری که توی بدست آوردن فاکتوریل انجام میشه عمل ضرب هست.این * n چیزی هست که کل کار رو انجام میده.

اینجا که نتیجه چاپ نمیکنیم اما در کل نمیشه گفت نتیجه برعکس چاپ میشه چون اولین چیزی که اجرا میشه * n هست نه * 1 .مثلا این کد رو اگه اجرا کنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نتیجه میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
منظورم از IDE همین محیط های برنامه نویسی هست. Visual Studio برای ++C هست اما چون C زیرمجموعه ی ++C هست میتونی توش C بنویسی هیچ مشکلی هم نداری.

shadmehrdj
26-11-2007, 21:26
فرمول نمی خواد که با 3 تا حلقه ی for میشه. من الگوریتمش رو نوشتم.

شما میشه برنامه را برای من بنویسید.

farnaz_bahall
26-11-2007, 22:28
اگر خطوط برنامه اتان دقيقا" همين هست كه نوشتيد، احتمالا" در بخشي از برنامه []B بصورت تابعي از []C تعريف شده است. بهمين دليل است كه با تغيير []Cمقادير[] B تغيير مي كند. بررسي كنيد واگر حل نشد و تمايل داشتيد برنامه را كامل بگذاريد تا شايد بتوان مشكل را حل كرد.
علاوه بر اين مشكل،شما كه از ورودي عدد ميگيريد ،چرا از تابع getche استفاده كرده ايد؟
فكر نمي كنم در جايي از برنامه B را تابعي از C تعريف كرده باشم اما باز شما هم بررسي كنيد بد نيست.
براي گرفتن ورودي از نوع عدد از چه روشي بايد استفاده مي كردم؟ با اين روش مشكلي در برنامه ايجاد مي شه ؟

farnaz_bahall
26-11-2007, 22:36
اين جا هر چه قدر تلاش مي كنم نمي تونم برنامه رو بزارم.

m3hrz4d
27-11-2007, 02:00
نمیشه هر راه رو در یک آرایه ی یک بعدی ریخت یعنی مثلا 3 در 3 در یک آرایه 6 تایی بار اول راه اول رو چاپ کنه بعد خط بعد دوباره همین آرایه مقادیر جدید بگیره راه دوم رو چاپ کنه
میشه و اتفاقا از لحاظ حافظه هم به صرفه هست ولی در این صورت نتیجه رو خود تابع باید چاپ کنه. اگه بخواهیم از آرایه معمولی(ایستا) استفاده کنیم بهتره آرایه خارج از تابع تعریف بشه و به عنوان آرگومان به تابع ارسال بشه تا خود تابع محدودیتی در مورد سایز نداشته باشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته بهترین روش استفاده از آرایه ی پویا هست که دیگه لازم نیست سایز آرایه رو از قبل معلوم کنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بازم به خودت بستگی داره که چطوری بنویسی.اینی هم که من نوشتم ممکنه بدون اشکال نباشه و بشه بهترش رو نوشت(توی کدی که قبلا نوشته بودم count یه مشکلاتی داشت)

m3hrz4d
27-11-2007, 02:24
باعرض سلام و خسته نباشید .

m3hrz4ad جان قربونت جواب ما رو هم بده دیگه .


من برنامه ای میخواستم که 1 رشته از ورودی گرفته و مشخص نماید آیا نیمه سمت راست با نیمه سمت چپ آن برابر است یا خیر و پیغام مناسب در خروجی چاپ کند.
با تشکر.
برنامه دیگه ای هم میخواستم که شماره دانشجویی ، نام ، نام خانوادگی و معدل یک کلاس5 نفری را از ورودی گرفته و شاگرد اول و دوم را به همراه شماره دانشجویی و نام آن مشخص کند و آن را در خروجی چاپ کند.
برنامه ها رو با ++C میخواستم .

با تشکر.

عزیز اینجا تاپیک پرسیدن سوال هست نه حل کردن پروژه های دانشجویی . البته دوستان دیگه هم هستن که میتونن جواب بدن منتها من حوصله ش رو ندارم:13:

m3hrz4d
27-11-2007, 02:29
اين جا هر چه قدر تلاش مي كنم نمي تونم برنامه رو بزارم.
مشکلت برای گذشتن کد چی هست؟ توی ساده ترین حالت میتونیCopy-Paste کنی و یا اگه میخوای ظاهرش قشنگ تر باشه بین تگ های [ C O D E ] و [C O D E / ] قرارشون بده(بدون فاصله هایی که گذاشتم) البته خود Editor هم یه دکمه واسه این کار داره(#)

sherlockholmz
27-11-2007, 08:42
فكر نمي كنم در جايي از برنامه B را تابعي از C تعريف كرده باشم اما باز شما هم بررسي كنيد بد نيست.
براي گرفتن ورودي از نوع عدد از چه روشي بايد استفاده مي كردم؟ با اين روش مشكلي در برنامه ايجاد مي شه ؟

تابع دريافت اعداد از ورودي scanf است. در ضمن اصلا" بعد getch , scanf متفاوت است.مگر آنكه شما منظورتان دريافت كد اسكي اعداد باشد.بهر حال ،ارائه صورت مسئله به تمام اين سوالات پاسخ خواهد داد.

behdad_20
27-11-2007, 13:02
عزیز اینجا تاپیک پرسیدن سوال هست نه حل کردن پروژه های دانشجویی . البته دوستان دیگه هم هستن که میتونن جواب بدن منتها من حوصله ش رو ندارم:13:
سلام.
مرسی .
یعنی این همه برنامه که تو این بخش هست هیچ کدوم مربوط به پروژه های دانشجویی نمیشه ؟؟؟؟؟؟؟؟
عجب ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟:18:

پس مربوط به چی میشه ؟

مگه این تاپیک مربوط به پرسیدن سوالات نیست ؟

amsjavan
27-11-2007, 13:54
شما میشه برنامه را برای من بنویسید.
من می تونم الگوریتم رو برات بنویسم. ببین به نفعته که خودت برنامه رو بنویسی

amsjavan
27-11-2007, 13:57
سلام.
مرسی .
یعنی این همه برنامه که تو این بخش هست هیچ کدوم مربوط به پروژه های دانشجویی نمیشه ؟؟؟؟؟؟؟؟
عجب ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟:18:

پس مربوط به چی میشه ؟

مگه این تاپیک مربوط به پرسیدن سوالات نیست ؟
ببین اینجا نباید بگی من این برنامه رو می خوام کسانی که اینجا جواب می دن نوکر من یا تو نیستن. این دوستان لطف می کنن و ما رو برای حل مسئله راهنمایی می کنن. برنامه ای هم که شما خواستید اگه کمی روش فکر کنید به راحتی حل میشه

amsjavan
27-11-2007, 14:11
این کد بدون استفاده از آرایه مسیر ها رو به صورت شبه درختی رسم میکنه.یعنی اون قسمت هایی که در ابتدای یک مسیر تکراری هستن رو چاپ نمیکنه :
[code]
#include <iostream>
usingnamespace std;
int findWays(int nRight, int nDown, int iCol = 0);
int main()
{
int nRows, nCols, nWays;

cout << "Enter number of rows : ";
cin >> nRows;
cout << "Enter number of columns : ";
cin >> nCols;
nWays = findWays(nCols - 1, nRows - 1);
cout << "Number Of Ways : " << nWays << endl;
return 0;
}
int findWays(int nRight, int nDown, int iCol)
{
static int count = 0;
if (nRight == 0 && nDown == 0)
{
cout << endl;
count++;
return count;
}
if (nRight != 0)
{
cout << "R " ;
findWays(nRight-1, nDown, iCol + 1);
}
if (nDown != 0)
{
if (nRight != 0)
for (int i = 0; i < iCol; i++)
cout << " ";
cout << "D " ;
findWays(nRight, nDown-1, iCol + 1);
}
return count;
}

ببین من هر کاری کردم نتونستم این برنامه اولی رو بفهمم(هنوز کدهای جدیدی که امروز گذاشتی رو بررسی نکردم). ببین من این قدر ها هم خنگ نیستم یا یه چیز هایی رو ما نخوندیم یایه ذره سخت گفتی. مثلا چه جوری از یه تابع 2 تا خروجی می گیری؟ مگه قرار نبود برای محاسبه ی تعداد از اون فرمول استفاده کنی؟ هر چی فکر می کنم نمی دونم چه جوری تو این بین تعداد راه ها رو حساب کردی؟ می تونی فقط برنامه ی چاپ راه ها رو بنویسی تعدادش رو نمی خواد.

amsjavan
27-11-2007, 14:25
خوب (fact(n-1 اگه n بزرگتر از1 باشه به ما(n * fact(n-2 رو برمیگردونه.فرمولی نیاز نیست چون تنها کاری که توی بدست آوردن فاکتوریل انجام میشه عمل ضرب هست.این * n چیزی هست که کل کار رو انجام میده.

اینجا که نتیجه چاپ نمیکنیم اما در کل نمیشه گفت نتیجه برعکس چاپ میشه چون اولین چیزی که اجرا میشه * n هست نه * 1 .مثلا این کد رو اگه اجرا کنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نتیجه میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

امروز استادمون توابع بازگشتی رو گفت. راست می گی با نوشتن توضیح دادن خیلی سخته. فکر کنم تقریبا مفهوم تابع بازگشتی رو فهمیدم. استادمون گفت وقتی با استفاده از تابع بازگشتی فاکتوریل رو حساب می کنیم تابع یه فضایی به نام stack در نظر می گیره و هر عملی که انجام میشه رو در یک خونه میذاره. مثلا برای 4! ابتدا 4 رو در پایین ترین خونه میذاره بعد 3 رو در خونه بعدی از پایین میذاره تا به 1 برسه حالا همه رو از بالا به پایین ضرب میکنه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اینجوری میشه:



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Safa_110
27-11-2007, 14:27
سلام به همه اساتید!
من میخواستم بدونم کجا میتونم یک مرجع خوب برای آموزش برنامه نویسی ADO با زبان ++C و بصورتMFC با نسخه Visual Studio 2005 پیدا کنم. ممنون میشم اگر کسی راهنمایی کنه.

m3hrz4d
27-11-2007, 15:26
ببین من هر کاری کردم نتونستم این برنامه اولی رو بفهمم(هنوز کدهای جدیدی که امروز گذاشتی رو بررسی نکردم). ببین من این قدر ها هم خنگ نیستم یا یه چیز هایی رو ما نخوندیم یایه ذره سخت گفتی. مثلا چه جوری از یه تابع 2 تا خروجی می گیری؟ مگه قرار نبود برای محاسبه ی تعداد از اون فرمول استفاده کنی؟ هر چی فکر می کنم نمی دونم چه جوری تو این بین تعداد راه ها رو حساب کردی؟ می تونی فقط برنامه ی چاپ راه ها رو بنویسی تعدادش رو نمی خواد.

اگه اول فاکتوریل رو کامل درک نکردی اول برو سراغ اون تا اون رو 100 درصد متوجه بشی.این یکم پیچیده تر از اونه.
تعداد رو میشد از اون فرمول هم حساب کرد اما اینجا هر بار که یه مسیر کامل طی میشه یه واحد به count اضافه میشه.به هر حال بدون count میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آرگومان های این تابع , اولیش nRight هست که تعداد مسیر هایی هست که مجاز هستیم به سمت راست بریم و nDown هم تعداد مسیر های مجاز به سمت پایین.iCol هم نشون میده که ما الان توی چندمین حرکت قرار داریم(مثلا اگه 2 تا به سمت راست و یکی به پایین رفته باشیم توی سومین حرکت هستیم)
وقتی توی main تابع findWays صدا زده میشه(مثلا برای 4 سطر در 3 ستون), تعداد مسیر های مجاز به سمت راست 3 تا هست و تعداد مسیر های مجاز به سمت پایین 4 تا.(nRight = 3 nDown = 4) و در لحظه ی اول هم ما توی حرکت 0 ام از اولین مسیر قرار داریم پس iCol = 0.

اینجا چک میشه که اگه تعداد مسیر های مجاز به سمت راست و پایین صفر هست به آخر مسیر رسیدیم و چون هر مسیر توی یک خط چاپ میشه اینجا ما یک خط چاپ میکنیم تا مسیر بعدی توی خط بعد باشه.و بعد هم از تابع خارج میشیم چون دیگه این مسیر تمومه و چیزی واسه این مسیر نیست که چاپ کنیم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینجا چک میشه که اگه تعداد مسیر های مجاز به سمت راست صفر نشده بود میتونیم یکی به سمت راست بریم(R چاپ میشه) و بعد خود تابع رو صدا میزنیم تا بقیه این مسیر رو ادامه بده و اینجا چون یکی به سمت راست کردیم یکی از تعداد مسیر های مجاز به سمت راست کم میشه (nRight - 1) ولی هنوز تعداد مسیر های به سمت پایین nDown هست و چون یکی به جلو رفتیم در حرکت بعدی قرار گرفتیم(iCol + 1)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بعد همین کار رو برای حرکت به سمت پایین میکنیم (فعلا اون for رو در نظر نگیر اصلا)

m3hrz4d
27-11-2007, 15:45
سلام به همه اساتید!
من میخواستم بدونم کجا میتونم یک مرجع خوب برای آموزش برنامه نویسی ADO با زبان ++C و بصورتMFC با نسخه Visual Studio 2005 پیدا کنم. ممنون میشم اگر کسی راهنمایی کنه.
فکر نکنم منبع خیلی کاملی باشه اما کتاب قمی آموزش ویژوال ++C یه فصل در این مورد داره اگه میخوای حتما از MFC توی ++C استفاده کنی.میتونی بدون MFC هم این کار رو بکنی..
راستی خود MSDN مایکروسافت هم هست : msdn2.microsoft.com/en-us/library/2dhc1abk(VS.80).aspx

behdad_20
27-11-2007, 20:38
ببین اینجا نباید بگی من این برنامه رو می خوام کسانی که اینجا جواب می دن نوکر من یا تو نیستن. این دوستان لطف می کنن و ما رو برای حل مسئله راهنمایی می کنن. برنامه ای هم که شما خواستید اگه کمی روش فکر کنید به راحتی حل میشه
__________________________________________________ __________________________________

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

بنده اگه جایی ار کارم ایراد نداشت که نمیومدم این سئوال را تو این بخش مطرح کنم؟

با تشکر.

amsjavan
27-11-2007, 20:53
__________________________________________________ __________________________________

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

بنده اگه جایی ار کارم ایراد نداشت که نمیومدم این سئوال را تو این بخش مطرح کنم؟

با تشکر.
ببین خوب شاید من بد نوشتم. منظورم این بود که یه کمی رو مسئله فکر کن اگه نتونستی بعد بیا سوال کن. اینطور که معلومه روش فکر کردی خودت هم میگی که سخت نیست حداکثر 1 ساعت وقت می ذاشتی می تونستی بنویسی. ببین انصافا سوالت هم بد پرسیدی یه جوری گفتی که انگار فقط دنبال کد هستی و نمی خوای به خودت زحمت بدی. به هر حال اگه ناراحتت کردم ببخشید سوال دیگه ای داری بپرس حتما دوستان جواب می دن.

amsjavan
27-11-2007, 21:29
اگه اول فاکتوریل رو کامل درک نکردی اول برو سراغ اون تا اون رو 100 درصد متوجه بشی.این یکم پیچیده تر از اونه.
تعداد رو میشد از اون فرمول هم حساب کرد اما اینجا هر بار که یه مسیر کامل طی میشه یه واحد به count اضافه میشه.به هر حال بدون count میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آرگومان های این تابع , اولیش nRight هست که تعداد مسیر هایی هست که مجاز هستیم به سمت راست بریم و nDown هم تعداد مسیر های مجاز به سمت پایین.iCol هم نشون میده که ما الان توی چندمین حرکت قرار داریم(مثلا اگه 2 تا به سمت راست و یکی به پایین رفته باشیم توی سومین حرکت هستیم)
وقتی توی main تابع findWays صدا زده میشه(مثلا برای 4 سطر در 3 ستون), تعداد مسیر های مجاز به سمت راست 3 تا هست و تعداد مسیر های مجاز به سمت پایین 4 تا.(nRight = 3 nDown = 4) و در لحظه ی اول هم ما توی حرکت 0 ام از اولین مسیر قرار داریم پس iCol = 0.

اینجا چک میشه که اگه تعداد مسیر های مجاز به سمت راست و پایین صفر هست به آخر مسیر رسیدیم و چون هر مسیر توی یک خط چاپ میشه اینجا ما یک خط چاپ میکنیم تا مسیر بعدی توی خط بعد باشه.و بعد هم از تابع خارج میشیم چون دیگه این مسیر تمومه و چیزی واسه این مسیر نیست که چاپ کنیم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینجا چک میشه که اگه تعداد مسیر های مجاز به سمت راست صفر نشده بود میتونیم یکی به سمت راست بریم(R چاپ میشه) و بعد خود تابع رو صدا میزنیم تا بقیه این مسیر رو ادامه بده و اینجا چون یکی به سمت راست کردیم یکی از تعداد مسیر های مجاز به سمت راست کم میشه (nRight - 1) ولی هنوز تعداد مسیر های به سمت پایین nDown هست و چون یکی به جلو رفتیم در حرکت بعدی قرار گرفتیم(iCol + 1)


الان بهتر شد باید بیشتر روش فکر کنم.
فاکتوریل رو امروز استاد توضیح داد فهمیدم. ببین اون stack که گفتم درست بود؟
من نمی دونستم end1 چیه. چون تو c برای رفتن به خط بعد از \n استفاده می کنیم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چرا آخر این نوشتی return0 ؟ دستور if که return نمی خواد

amsjavan
27-11-2007, 21:31
باعرض سلام و خسته نباشید .

m3hrz4ad جان قربونت جواب ما رو هم بده دیگه .


من برنامه ای میخواستم که 1 رشته از ورودی گرفته و مشخص نماید آیا نیمه سمت راست با نیمه سمت چپ آن برابر است یا خیر و پیغام مناسب در خروجی چاپ کند.
با تشکر.





اگه عدد باشه باید معکوس عدد رو حساب کنی بعد ببینی با خود عدد برابره یا نه اما اگه حروف باشه نمیدونم چه جوری میشه.

amsjavan
27-11-2007, 21:46
شما میشه برنامه را برای من بنویسید.
این الگوریتمشه. فکر کنم بتونی راحت به برنامه تبدیلش کنی
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

m3hrz4d
27-11-2007, 23:24
الان بهتر شد باید بیشتر روش فکر کنم.
فاکتوریل رو امروز استاد توضیح داد فهمیدم. ببین اون stack که گفتم درست بود؟
من نمی دونستم end1 چیه. چون تو c برای رفتن به خط بعد از \n استفاده می کنیم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چرا آخر این نوشتی return0 ؟ دستور if که return نمی خواد

stack حافظه ای ه که برای ارسال آرگومان ها به تابع ازش استفاده میشه...حرف استاد شما درست اما باز هم به نظر من با کدی که نوشتم اعداد از آخر به اول در هم ضرب میشن!!
--
endl توی ++C معادل همون n\ در C هست...
--
خوب گفتم که باید در صورت برقرار بودن اون شرط از تابع خارج شد.یعنی چه که "دستور if که return نمیخواد"؟! نفهمیدم منظورت رو:20:

amsjavan
28-11-2007, 10:27
وقتي ما مي گيم return0 دقيقا چه اتفاقي مي افته؟ وقتي علامت&& رو ميذاريم بايد هر دو شرط با هم برقرار باشه؟
وقتي nright و ndown صفر شدند براي چي بايد از تابع خارج بشه؟ مگه نبايد بره خط بعدي؟

amsjavan
28-11-2007, 10:57
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تا مرحله 6 كه اتفاق خاصي نمي افته و فقط يك R چاپ ميشه. بعدش مرحله 7 رو اجرا مي كنه يا ميره مراحل ديگه رو اجرا مي كنه بعد مياد سراغ مرحله 7؟ كلا سيستمش چه جوريه يعني بايد nright به 0 برسه بعد يره سراغ ndown يا طور ديگه اي هست؟ ما يه مثال ساده مثلا 2در2 يا 3در3 مي توني تك تك مراحل رو برام بررسي كني؟ ممنون ميشم.
ديگه دارم قاطي مي كنم نمي دونم چرا نمي فهمم! اين بحث هم خيلي داره طولاني ميشه اگه كسي اين چيزها براش مفيد نيست بگه كه من ديگه سوال نكنم

sherlockholmz
28-11-2007, 11:57
باعرض سلام و خسته نباشید .
m3hrz4ad جان قربونت جواب ما رو هم بده دیگه .


من برنامه ای میخواستم که 1 رشته از ورودی گرفته و مشخص نماید آیا نیمه سمت راست با نیمه سمت چپ آن برابر است یا خیر و پیغام مناسب در خروجی چاپ کند.
با تشکر.
برنامه دیگه ای هم میخواستم که شماره دانشجویی ، نام ، نام خانوادگی و معدل یک کلاس5 نفری را از ورودی گرفته و شاگرد اول و دوم را به همراه شماره دانشجویی و نام آن مشخص کند و آن را در خروجی چاپ کند.
برنامه ها رو با ++C میخواستم .
با تشکر.



سلام،
'گرچه كمك به ديگران در صورت توانائي وظيفه است ولي راه "هلو برو تو گلو" هم راه درستي نيست!
واما در مورد سوالاتت:
1-در مورد رشته، آيا طول آن معين است يا نه؟ومنظورت از نيمه چپ وراست چيست؟يعني كدام دو رشته زير مد نظر توست؟
abcddcba
يا
abcdabcd
2-در مورد برنامه دوم، يك structure تعريف كن كه شامل string (نام) ،int (شماره دانشجوئي) و float (نمره) باشد.سپس با يك حلقه اسامي،شماره دانشجوئي و نمرات آنها را دريافت كن.در حين دريافت بزرگترين نمره را در يك متغيرtemp1 نگهداري كن. پس از پايان كار،بصورت موقت، بزرگترين ركورد را حذف كن و دوباره از بقيه ماكزيمم بگير و در temp2 ذخيره كن. فقط مي ماند temp1 و temp2 را چاپ كني.
موفق باشي:20:

m3hrz4d
28-11-2007, 14:42
وقتي ما مي گيم return0 دقيقا چه اتفاقي مي افته؟ وقتي علامت&& رو ميذاريم بايد هر دو شرط با هم برقرار باشه؟
وقتي nright و ndown صفر شدند براي چي بايد از تابع خارج بشه؟ مگه نبايد بره خط بعدي؟
از تابع خارج میشه اما نه از اولین تابع. همونطور که میدونی این کار بوسیله ی تابع های بازگشتی انجام میشه.تابع اول یک مسیر رو چاپ میکنه و دوباره خودش رو فراخوانی میکنه.دومی به همین ترتیب تا همی ی مسیر اول چاپ بشه پس تابع آخر که دئیگه مسیری برای چاپ نداره دیگه نباید خودش رو فراخونی کنه چون این مسیر تموم شده پس بدون اینکه کاری انجام بشه میاد بیرون.

m3hrz4d
28-11-2007, 15:46
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تا مرحله 6 كه اتفاق خاصي نمي افته و فقط يك R چاپ ميشه. بعدش مرحله 7 رو اجرا مي كنه يا ميره مراحل ديگه رو اجرا مي كنه بعد مياد سراغ مرحله 7؟ كلا سيستمش چه جوريه يعني بايد nright به 0 برسه بعد يره سراغ ndown يا طور ديگه اي هست؟ ما يه مثال ساده مثلا 2در2 يا 3در3 مي توني تك تك مراحل رو برام بررسي كني؟ ممنون ميشم.
ديگه دارم قاطي مي كنم نمي دونم چرا نمي فهمم! اين بحث هم خيلي داره طولاني ميشه اگه كسي اين چيزها براش مفيد نيست بگه كه من ديگه سوال نكنم

تا وقتی مفهوم تابع بازگشتی رو کامل نفمیدی انتظار نداشته باش که این رو کامل درک کنی اول برو سراغ همون فاکتوریل!
--
آره اینجا من nRight رو در اولویت قرار دادم یعنی اگه امکان رفتن به سمت راست باشه اول حرکت های اون رو میره بعد میره سراخ nDown.
--
یه نگاه به این عکس بنداز .کل مسیر های یک حرکت 2 در 2 هست: i10.tinypic.com/81gw12h.jpg
فکر کنم فهمیدنش با عکس راحت باشه.هر علامت پیکان معنیش یک فراخوانی تابع توی خودش هست.
شماره هایی هم که گذاشتم ترتیب کارهاییکه که انجام میشه.

behdad_20
28-11-2007, 18:21
اگه عدد باشه باید معکوس عدد رو حساب کنی بعد ببینی با خود عدد برابره یا نه اما اگه حروف باشه نمیدونم چه جوری میشه.


سلام،
'گرچه كمك به ديگران در صورت توانائي وظيفه است ولي راه "هلو برو تو گلو" هم راه درستي نيست!
واما در مورد سوالاتت:
1-در مورد رشته، آيا طول آن معين است يا نه؟ومنظورت از نيمه چپ وراست چيست؟يعني كدام دو رشته زير مد نظر توست؟
abcddcba
يا
abcdabcd
2-در مورد برنامه دوم، يك structure تعريف كن كه شامل string (نام) ،int (شماره دانشجوئي) و float (نمره) باشد.سپس با يك حلقه اسامي،شماره دانشجوئي و نمرات آنها را دريافت كن.در حين دريافت بزرگترين نمره را در يك متغيرtemp1 نگهداري كن. پس از پايان كار،بصورت موقت، بزرگترين ركورد را حذف كن و دوباره از بقيه ماكزيمم بگير و در temp2 ذخيره كن. فقط مي ماند temp1 و temp2 را چاپ كني.
موفق باشي:20:


ببین خوب شاید من بد نوشتم. منظورم این بود که یه کمی رو مسئله فکر کن اگه نتونستی بعد بیا سوال کن. اینطور که معلومه روش فکر کردی خودت هم میگی که سخت نیست حداکثر 1 ساعت وقت می ذاشتی می تونستی بنویسی. ببین انصافا سوالت هم بد پرسیدی یه جوری گفتی که انگار فقط دنبال کد هستی و نمی خوای به خودت زحمت بدی. به هر حال اگه ناراحتت کردم ببخشید سوال دیگه ای داری بپرس حتما دوستان جواب می دن.

سلام به amsjavan و sherlockholmz عزیز.

خیلی ممنون از راهنمایی های شما دو دوست گل.
sherlockholmz عزیز من امروز کلاس ++C داشتم و با استادمون مشکلم را حل کردن . خیلی ممنون که من را میخواستید راهنمایی کنید . در هر صورت ببخشید . شاید من سوالم را بد پرسیدم که باعث این همه پست بیخودی شد.در هر صورت شرمنده.
خیلی آقایی.

:10::20:

و اما amsjavan عزیز .
من اصلا ناراحت نشدم.میگم احتمالا یه جایی از کار خودم ایراد داشت و یا سوالم را بد پرسیدم.
مشکل برنامه هم بر طرف شد . درسته که امروز نتونستم برنامه رو تحویل استاد بدم ولی در عوض از زبان خود استاد یاد گرفتم.
با 1 بار تمرین ندادن چیزی از آدم کو نمیشه.
ایشالا در برنامه های بعدی بتونی راهنماییم کنی.
خیلی چاکریم.

:10::20:

با تشکر.

shadmehrdj
28-11-2007, 20:47
این الگوریتمشه. فکر کنم بتونی راحت به برنامه تبدیلش کنی
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در اینجا K چی هست؟ درضمن من دترمینان ماتریس را می خواستم نه ضرب دو ماتریس

amsjavan
29-11-2007, 12:13
تا وقتی مفهوم تابع بازگشتی رو کامل نفمیدی انتظار نداشته باش که این رو کامل درک کنی اول برو سراغ همون فاکتوریل!
--
آره اینجا من nRight رو در اولویت قرار دادم یعنی اگه امکان رفتن به سمت راست باشه اول حرکت های اون رو میره بعد میره سراخ nDown.
--
یه نگاه به این عکس بنداز .کل مسیر های یک حرکت 2 در 2 هست: i10.tinypic.com/81gw12h.jpg
فکر کنم فهمیدنش با عکس راحت باشه.هر علامت پیکان معنیش یک فراخوانی تابع توی خودش هست.
شماره هایی هم که گذاشتم ترتیب کارهاییکه که انجام میشه.
دستت درد نکنه عالی بود واقعا می گم عالی بود معلومه که روش وقت گذاشتی و زحمت کشیدی. خیلی ممنون که اینقدر برای فهماندن مطلب تلاش می کنی انشا الله که بتونم جبران کنم
عکسی که گذاشتی خیلی درک عملکرد تابع رو ساده تر کرد اما هنوز درکش برای من سخته باید بیشتر روش فکر کنم. میشه در مورد عکس بیشتر توضیح بدی مثلا ترتیب انجام گرفتن مراحل چه جوریه؟ مثلا تو قسمت دوم مرحله ی 2 و 6 با هم انجام مشه و 6 رو تو پشته(stack) نگه میداره یا جور دیگه ای هست؟

amsjavan
29-11-2007, 12:25
در اینجا K چی هست؟ درضمن من دترمینان ماتریس را می خواستم نه ضرب دو ماتریس
ببخشید من اشتباه فهمیدم. فکر کردم شما ضرب دو ماتریس رو می خوای
اونجا به جای L باید K بذاری اشتباه نوشته بودم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

m3hrz4d
29-11-2007, 15:39
دستت درد نکنه عالی بود واقعا می گم عالی بود معلومه که روش وقت گذاشتی و زحمت کشیدی. خیلی ممنون که اینقدر برای فهماندن مطلب تلاش می کنی انشا الله که بتونم جبران کنم
عکسی که گذاشتی خیلی درک عملکرد تابع رو ساده تر کرد اما هنوز درکش برای من سخته باید بیشتر روش فکر کنم. میشه در مورد عکس بیشتر توضیح بدی مثلا ترتیب انجام گرفتن مراحل چه جوریه؟ مثلا تو قسمت دوم مرحله ی 2 و 6 با هم انجام مشه و 6 رو تو پشته(stack) نگه میداره یا جور دیگه ای هست؟
فکر کنم حالا درگیر Stack نشی راحتر باشی.
صدا زدن تابع از توی خودش مثل صدا زدن یه تابع دیگه هست.مثلا اگه تابع A خود تابع A رو صدا بزنه دقیقا مسیر برنامه مثل وقتیه که ما یه تابع به اسم B داشته باشیم و توی A تابع B رو صدا بزنیم.تابع B پارامتر های خودش رو داره که تابع A موقع فراخوانی براش ارسال کرده و این ها ربطی به پارامتر های خود A ندارن.
توی این حالت چه اتفاقی می افته؟ :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتی تابع A صدا زدن میشه کد هاش خط به خط اجرا میشه تا به فراخوانی B برسه.بعد مسیر برنامه پرش میشه به ابتدای B و کل B اجرا میشه و وقتی B تموم شد ادامه ی A اجرا میشه.درسته؟
حالا فرض کن یه تابع دیگه مثل C هم داشته باشیم و توی B , تابع C رو فراخوانی کنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توی این حالت هم A اجرا میشه تا به فراخوانی B میرسه و مسیر برنامه میره در ابتدای B و کد های B اجرا میشن تا به فراخوانی C برسن.C اجرا میشه و بعد از اجرا شدن C مسیر برنامه به تابع B بعد از فراخوانی C برمیگرده(شماره 4) و B بقیه ی کد هاش کامل اجرا میشه تا تموم بشه و بعد مسیر برنامه به A بعد از فراخوانی B برمیگرده(شماره 5) و ادامه ی کد های A اجرا و عملیات تموم میشه.
شکل سادش میشه:[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اگه دقیقا به تابع های بازگشتی مثل تابع های جداگانه نگاه کنی قاطی نمیکنی.این مسیر توی این 3 تا تابع مثل مسیری هست که توی کد بازگشتی و شکلی که گذشتم فقط با یک تابع انجام میشه.

egoldfars
29-11-2007, 15:57
سلام
لطفا راهنمایی کنید. من یه برنامه نوشتم که اطلاعات یک دانشجو شامل نام و شماره دانشجویی و نمره تعدادی از دروس (5درس) دریافت میکنه ودر آخر معدلش رو چاپ میکنه.
یه سوال داشتم که چه جوری میتونم به جای وارد کردن اطلاعات یک دانشجو اطلاعات5 نفر رو وارد کنم.......
اینم کدی که برای یک نفر نوشتم:
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float sum;
struct student
{
char name[10];
int stno;
float marks[5];
}s1;
printf("student name:");
scanf("%s",s1.name);
printf("student number:");
scanf("%d",&s1.stno);
for(int i=0;i<5;i++)
{
printf("student marks:");
scanf("%f",&s1.marks[i]);
sum+=s1.marks[i];
}
printf("name:%s\n",s1.name);
printf("name:%d\n",s1.stno);
printf("name:%f\n",sum/5);
getch();
}

egoldfars
29-11-2007, 16:26
سلام
لطفا راهنمایی کنید. من یه برنامه نوشتم که اطلاعات یک دانشجو شامل نام و شماره دانشجویی و نمره تعدادی از دروس (5درس) دریافت میکنه ودر آخر معدلش رو چاپ میکنه.
یه سوال داشتم که چه جوری میتونم به جای وارد کردن اطلاعات یک دانشجو اطلاعات5 نفر رو وارد کنم.......
اینم کدی که برای یک نفر نوشتم:
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float sum;
struct student
{
char name[10];
int stno;
float marks[5];
}s1;
printf("student name:");
scanf("%s",s1.name);
printf("student number:");
scanf("%d",&s1.stno);
for(int i=0;i<5;i++)
{
printf("student marks:");
scanf("%f",&s1.marks[i]);
sum+=s1.marks[i];
}
printf("name:%s\n",s1.name);
printf("name:%d\n",s1.stno);
printf("name:%f\n",sum/5);
getch();
}

egoldfars
29-11-2007, 16:28
سلام(به دلیل حذف تاپیک های اضافه ایجاد شده ویرایش کردم) با عرض پوزش.........................................
ممنون m3hrz4d جان. یه نگاهی به کد زیر بینداز (جاهایی که خط تیره گذاشتم) برام یه سوالی هست شما گفتید که s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنیم به این صورت دیگه ورودی اول میگیره ولی با وارد کردن ورودی دوم از برنامه خارج میشه

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float sum=0;
struct student
{
char name[10];
int stno;
float marks[5];
----------------------------- }s1[5];
for(int j=0;j<5;j++)
{
printf("student name:");
-------------------------- scanf("%s",s1[j].name);
printf("student number:");
---------------------------- scanf("%d",&s1[j].stno);
for(int i=0;i<5;i++)
{
printf("student marks:");
-------------------------- scanf("%f",&s1[j].marks[i]);
-------------------------- sum+=s1[j].marks[i];
}
}
/*printf("name:%s\n",s1[j].name);
printf("name:%d\n",s1[j].stno);
printf("name:%f\n",sum/5);*/
getch();
}

m3hrz4d
29-11-2007, 16:30
خوب شما اینجا s1 رو از نوع Struct Student تعریف کردی تا اطلاعات یه دانشجو رو بریزی داخلش.
اگه میخوای این عملیات رو 5 بار برای 5 دانشجو انجام بدی کافیه از قسمت printf اول تا آخر کدت رو توی یک for قرار بدی تا این کار 5 بار تکرار بشه.اما اگه میخوای اول اطلاعات همه ی دانشجو ها رو بخونی بعد معدل ها رو چاپ کنی میتوی s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنی و یک for از printf اول تا قبل قسمتی که اطلاعات رو چاپ میکنی بگذاری و توی هر مرحله یکی از عضو های آرایه ت رو پر کنی و بعد از این for یک for دیگه بگذاری تا تک تگ اسم ها و نمره ها رو از آرایه بخونه و چاپ کنه.
ضمن اینکه اینجا sum رو مقدار اولیه ندادی و توی برنامه مشکل ایجاد میکنه.اول کار 0 ش کن.

amsjavan
29-11-2007, 18:22
فکر کنم حالا درگیر Stack نشی راحتر باشی.
صدا زدن تابع از توی خودش مثل صدا زدن یه تابع دیگه هست.مثلا اگه تابع A خود تابع A رو صدا بزنه دقیقا مسیر برنامه مثل وقتیه که ما یه تابع به اسم B داشته باشیم و توی A تابع B رو صدا بزنیم.تابع B پارامتر های خودش رو داره که تابع A موقع فراخوانی براش ارسال کرده و این ها ربطی به پارامتر های خود A ندارن.

اگه دقیقا به تابع های بازگشتی مثل تابع های جداگانه نگاه کنی قاطی نمیکنی.این مسیر توی این 3 تا تابع مثل مسیری هست که توی کد بازگشتی و شکلی که گذشتم فقط با یک تابع انجام میشه.
نمیشه به تابع بازگشتی مثل تابع های جداگانه نگاه کرد مثلا به این برنامه که عدد رو به مبنای 2 می بره نگاه کن:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

وقتی تابع به mabna(a) میرسه بلافاصله به اول برنمیگرده، ابتداcout<<b رو می خونه و ذخیره اش می کنه و بعد برمیگرده دوباره تابع رو اجرا می کنه. اما وقتی یه تابع جداگانه تابع دیگه ای رو صدا میزنه همه چی به ترتیب اجرا میشه درست میگم؟
من تابع فاکتوریل رو با مفهوم stack فهمیدم و الا بدون این مفهوم که اصلا نمی فهمیدم چی به چیه!

amsjavan
29-11-2007, 19:10
m3hrz4d جان میشه یه بار با حلقه های تو در توی for بگی چه جوری میشه همین کار رو کرد مثلا برای 2 در 2

m3hrz4d
29-11-2007, 19:48
نمیشه به تابع بازگشتی مثل تابع های جداگانه نگاه کرد مثلا به این برنامه که عدد رو به مبنای 2 می بره نگاه کن:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

وقتی تابع به mabna(a) میرسه بلافاصله به اول برنمیگرده، ابتداcout<<b رو می خونه و ذخیره اش می کنه و بعد برمیگرده دوباره تابع رو اجرا می کنه. اما وقتی یه تابع جداگانه تابع دیگه ای رو صدا میزنه همه چی به ترتیب اجرا میشه درست میگم؟
من تابع فاکتوریل رو با مفهوم stack فهمیدم و الا بدون این مفهوم که اصلا نمی فهمیدم چی به چیه!

اشکالت همین جاست! اگه نظر من رو میخوای دقیقا باید به تابع بازگشتی مثل یه تابع جداگانه نگاه کنی! وقتی manba توی manba فراخوانی میشه مسیر برنامه به اول manba میره و یکبار اون رو (با پارامتر جدیدش) اجرا میکنه..
با یه IDE درست و حسابی خط به خط Step In کن و نتیجه رو ببین. این مثالت هم اصلا واضح نیست که بخوام روش توضیح بدم برات.
به نظر من اصلا لزومی نداره توی این مبحث پای stack رو وسط بکشیم.اگه assembly بود یه چیزی..
--
پ.ن: برای اینکه مطمئن شی من یکبار یه تابع رو نوشتم به صورتی که خودش رو صدا میزنه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یکبار هم همین تابع رو نوشتم و بجای f توش یه تابع به اسم g رو صدا زدم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هر دو رو کامپایل کردم و از Disassembly ش عکس گرفتم.میبینی که هر دو کد عین هم هستن فقط یک جا به جای اینکه f فراخوانی(call) بشه g فراخوانی شده و هیچ تفاوتی توی عملکرد نیست و برای کامپایلر فرق نمیکنه که تابع ی که صدا زده میشه خود همون تابع هست یا نه.عملیات یکسانه :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

[/SIZE][/SIZE]

egoldfars
29-11-2007, 20:07
خوب شما اینجا s1 رو از نوع Struct Student تعریف کردی تا اطلاعات یه دانشجو رو بریزی داخلش.
اگه میخوای این عملیات رو 5 بار برای 5 دانشجو انجام بدی کافیه از قسمت printf اول تا آخر کدت رو توی یک for قرار بدی تا این کار 5 بار تکرار بشه.اما اگه میخوای اول اطلاعات همه ی دانشجو ها رو بخونی بعد معدل ها رو چاپ کنی میتوی s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنی و یک for از printf اول تا قبل قسمتی که اطلاعات رو چاپ میکنی بگذاری و توی هر مرحله یکی از عضو های آرایه ت رو پر کنی و بعد از این for یک for دیگه بگذاری تا تک تگ اسم ها و نمره ها رو از آرایه بخونه و چاپ کنه.
ضمن اینکه اینجا sum رو مقدار اولیه ندادی و توی برنامه مشکل ایجاد میکنه.اول کار 0 ش کن.
ممنون m3hrz4d جان. یه نگاهی به کد زیر بینداز (جاهایی که خط تیره گذاشتم) برام یه سوالی هست شما گفتید که s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنیم به این صورت دیگه ولی ورودی اول و دوم میگیره ولی به ورودی سومmark که میرسه از برنامه خارج میشه اشکال کارم کجاست.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float sum=0;
struct student
{
char name[10];
int stno;
float marks[5];
----------------------------- }s1[5];
for(int j=0;j<5;j++)
{
printf("student name:");
-------------------------- scanf("%s",s1[j].name);
printf("student number:");
---------------------------- scanf("%d",&s1[j].stno);
for(int i=0;i<5;i++)
{
printf("student marks:");
-------------------------- scanf("%f",&s1[j].marks[i]);
-------------------------- sum+=s1[j].marks[i];
}
}
/*printf("name:%s\n",s1[j].name);
printf("name:%d\n",s1[j].stno);
printf("name:%f\n",sum/5);*/
getch();
}

shadmehrdj
29-11-2007, 20:17
سلام.میشه این برنامه را یک نگاه بهش بیندازید و تابع Sign و det را برای من توضیح بدید که چه کار میکنه.



#include <stdio.h<

#include <conio.h<



int sign(int , int);

int det(int [10][10],int);

void input(int);



int mat1[10][10];



main()

{

int size=4;

clrscr();

input(size);

printf("\n det=%d",det(mat1,size));

getch();

}



int sign(int a,int b)

{

int s=1;

for (int z=1 ; z<=a+b ; z++)

s *= -1;

return s;

}



int det(int mat[10][10],int n)

{

int matris[10][10];

if (n==2) return mat[0][0]*mat[1][1]-mat[0][1]*mat[1][0];

int temp=0;

for (int i=0 ; i<n ; i++)

{

int k=0,j=0;

for (int row=0 ; row<n ; row++)

{

j=0;

int pass=0;

for (int col=0 ; col<n ; col++)

if ((row!=i) && (col!=0))

{

matris[k][j]=mat[row][col];

j++;

pass=1;

}

if (pass) k++;

}

temp += sign(i+1,1)*mat[i][0]*det(matris,n-1);

}

return temp;

}



void input(int n)

{

for (int i=0 ; i<n ; i++)

for (int j=0 ; j<n ; j++)

scanf("%d",&mat1[i][j]);

}

m3hrz4d
29-11-2007, 20:36
m3hrz4d جان میشه یه بار با حلقه های تو در توی for بگی چه جوری میشه همین کار رو کرد مثلا برای 2 در 2
با for فکر کنم برای دو در دو 4 تا حلقه ی تو در تو میخواد که اصلا جالب نمیشه الان یکم فشار آوردم :31: نتونستم بنویسم اما نه اینکه نشه. یکم وقت میخواد اما آخرش جالب نمیشه.

hasanyami
29-11-2007, 21:08
برنامه ای که چندنفر را از ورودی گرفته واولین اسم رابرحسب الفبا چاپ کند؟جابشو می خواهم.

m3hrz4d
29-11-2007, 22:11
سلام.میشه این برنامه را یک نگاه بهش بیندازید و تابع Sign و det را برای من توضیح بدید که چه کار میکنه.

این برنامه دترمینان ماتریس رو به روش Laplace Expansion و بوسیله ی تابع بازگشتی! حساب میکنه.
فرمولش هست (سطر i ام رو به دلخواه انتخاب میکنیم) :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

که B ماتریس شماست. bij هم عنصر هاش و Cij هم Cofactor ماتریس هست که خود Cofactor هست :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
که Mij ماتریس Minor ماتریس مورد نظر هست که تعریفش هست ماتریسی که از حذف کردن سطر i ام و ستون j ام ماتریس حاصل میشه.
توی کدی که دادی تابع sign این 1- بتوان i+j رو محاسبه میکنه که ببینه جواب میشه 1- یا 1+(روش خوبی رو انتخاب نکرده به نظرم)
اصل روش اینه که شما میان دترمینان ها رو از دترمینان های ماتریس های کوچک شده (Minor) حساب میکنی و انقدر ادامه میدی تا به دترمینان ماتریس 2x2 برسی که فرمولش ساده هستش:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

کاری که توی تابع det انجام میشه اینه که میبینه اگه ماتریس 2 در 2 هست از این فرمول آخری حساب میکنه.اگه بزرگتر بود میاد ماتریس های Minor رو بدست میاره و از طریق فرمول اول (و فراخونی خودش برای محاسبه ی دترمینان ماتریس Minor) توی یک حلقه جواب رو پیدا میکنه.
en.wikipedia.org/wiki/Laplace_expansion

shadmehrdj
29-11-2007, 22:27
دستت درد نکنه مهرزاد جان.(اسم من و شما یکی هست یعنی اسم من هم مهرزاد هست:10:)

shadmehrdj
29-11-2007, 23:20
سلام.بچه ها میشه این کد را طوری تغییر دهید که دترمینان ماتریس را حساب کنه.این کد یک اشکالی که داره و نمی دونم چی هست وقتی ماتریس را مقدارش را خودت وارد می کنی دترمینان را حساب میکنه ولی وقتی به صورت random میگذاریم Divide Error میده.

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main(){
clrscr();
int a[5][5];
int i,j,n,d,k;
for (i=1;i<5;i++)
for (j=1;j<5;j++)
a[i][j]=random(9);
for (i=1;i<5;i++){
for (j=1;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");}
for (k=1;k<5-1;k++)
for (i=k+1;i<5;i++)
for (j=1;j<5;j++)
a[i][j]=a[i][j]*(a[k][k]/a[i][k])-a[k][j];
d=1;
for (i=1;i<5;i++)
d=d*a[i][i];
printf("Determinant is:%d",d);
getch();
}

m3hrz4d
29-11-2007, 23:21
دستت درد نکنه مهرزاد جان.(اسم من و شما یکی هست یعنی اسم من هم مهرزاد هست:10:)
ئه جالبه :31:

m3hrz4d
29-11-2007, 23:33
ممنون m3hrz4d جان. یه نگاهی به کد زیر بینداز (جاهایی که خط تیره گذاشتم) برام یه سوالی هست شما گفتید که s1 رو یه آرایه ی 5 تایی از Struct Student تعریف کنیم به این صورت دیگه ولی ورودی اول و دوم میگیره ولی به ورودی سومmark که میرسه از برنامه خارج میشه اشکال کارم کجاست.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float sum=0;
struct student
{
char name[10];
int stno;
float marks[5];
----------------------------- }s1[5];
for(int j=0;j<5;j++)
{
printf("student name:");
-------------------------- scanf("%s",s1[j].name);
printf("student number:");
---------------------------- scanf("%d",&s1[j].stno);
for(int i=0;i<5;i++)
{
printf("student marks:");
-------------------------- scanf("%f",&s1[j].marks[i]);
-------------------------- sum+=s1[j].marks[i];
}
}
/*printf("name:%s\n",s1[j].name);
printf("name:%d\n",s1[j].stno);
printf("name:%f\n",sum/5);*/
getch();
}
به نظر نمیاد برنامت مشکل جدی که وسط کار قطع بشه داشته باشه. من اجراش کردم . اطلاعات هر 5 دانشجو رو گرفت..:13:
به جز اون قسمتی که توی comment گذاشتی که احتمالا خودت میدونستی..

m3hrz4d
30-11-2007, 01:48
سلام.بچه ها میشه این کد را طوری تغییر دهید که دترمینان ماتریس را حساب کنه.این کد یک اشکالی که داره و نمی دونم چی هست وقتی ماتریس را مقدارش را خودت وارد می کنی دترمینان را حساب میکنه ولی وقتی به صورت random میگذاریم Divide Error میده.
کلا اگه توی ماتریس عنصر 0 باشه مشکل داره.اصلا توی محاسبه ی دترمینان تقسیم نیست نمیفهمم این تقسیم برای چیه.حالا اگه صفر هم نداشته باشیم فکر نکنم درست حساب کنه.یه چیز دیگه اینکه مگه این برای 5 در 5 نباید باشه؟ ظاهرا 4 در چهار میگیره.
اون کد قبلی که دادی درست بود.

egoldfars
30-11-2007, 13:32
سلام آقا مهرزاد
مشکل رو پیداکردم (جاهایی که خط تیره گذاشتم) mark رو از نوع float به int تغییر دادم ولی یه سوالی دارم واینه که نمراتی که ما به ورودی میدیم همیشه که صحیح نیستند و مقدار اعشار هم دارن (مثلا15/25 ) به چه صورت عمل کنم تا جواب بده موقعه ای که به نوع float تغییر میدم از برنامه خارج میشه ممکنه در این قسمت از pointer استفاده کنیم یا خیر.....................
اینم کدی رو که تغییر دادم.........................

#include<stdio.h>
#include<conio.h>
void main()
{
//clrscr();
-----------------------------------int sum=0;
struct student
{
char name[10];
int stno;
----------------------------------int marks[5];
}s1[5];
for(int k=1;k<5;k++)
{
for(int j=0;j<5;j++)
{}
printf("student name%d:",k);
scanf("%s",s1[j].name);
printf("student number%d:",k);
scanf("%d",&s1[j].stno);
for(int i=0;i<5;i++)
{
printf("student marks%d:",k);
-----------------------------------scanf("%d",&s1[j].marks[i]);
sum+=s1[j].marks[i];
}
}
/*printf("name:%s\n",s1[j].name);
printf("name:%d\n",s1[j].stno);
printf("name:%f\n",sum/5);*/
getch();
}
}

m3hrz4d
30-11-2007, 16:07
سلام آقا مهرزاد
مشکل رو پیداکردم (جاهایی که خط تیره گذاشتم) mark رو از نوع float به int تغییر دادم ولی یه سوالی دارم واینه که نمراتی که ما به ورودی میدیم همیشه که صحیح نیستند و مقدار اعشار هم دارن (مثلا15/25 ) به چه صورت عمل کنم تا جواب بده موقعه ای که به نوع float تغییر میدم از برنامه خارج میشه ممکنه در این قسمت از pointer استفاده کنیم یا خیر.....................
اینم کدی رو که تغییر دادم.........................

توی یک کامپایلر جدید من همون کد اول رو راحت و بدون مشکل اجرا کردم اما وقتی توی ++Turbo C خواستم اجرا کنم توی خوندن float به این صورت مشکل داشت و از برنامه خارج میشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بجاش این رو زدم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینطوری Turbo C مشکل نداشت!! حالا نمیدونم مشکل تو هم همینه یا چیز دیگه ایه!!

egoldfars
30-11-2007, 16:46
توی یک کامپایلر جدید من همون کد اول رو راحت و بدون مشکل اجرا کردم اما وقتی توی ++Turbo C خواستم اجرا کنم توی خوندن float به این صورت مشکل داشت و از برنامه خارج میشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بجاش این رو زدم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینطوری Turbo C مشکل نداشت!! حالا نمیدونم مشکل تو هم همینه یا چیز دیگه ایه!!
ممنون
آره مشکلم همین قسمت بود آخه من با ++Turbo C ورژن 3 داس کارمیکنم.
شما برای بار اول که برنامه رو تست کردید از چه کامپایلری استفاده کردی که دچار این مشکل نشد.
بازم ممنون از توجه شما آقا بهزاد..................

m3hrz4d
30-11-2007, 17:09
ممنون
آره مشکلم همین قسمت بود آخه من با ++Turbo C ورژن 3 داس کارمیکنم.
شما برای بار اول که برنامه رو تست کردید از چه کامپایلری استفاده کردی که دچار این مشکل نشد.
بازم ممنون از توجه شما آقا مهرزاد..................

با ++Visual C اجرا کردم..

egoldfars
01-12-2007, 18:28
سلام .خسته نباشی
من این برنامه رو میخوام با تابع بنویسم یه تابع برای ورودی و یه تابع برای محاسبه معدل و یکی هم برای خروجی.........

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یه چیزایی نوشتم یه نگاهی کن ببین کجای کارم اشتباست این تابع رو برای محاسبه معدل نوشتم راستی میشه برای ورودی وخروجی هم از تابع استفاده کرد....

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

solosara
01-12-2007, 20:13
سلام ببخشید یه سوال داشتم !!! حتما جوابم بدینا !!!

می خوام برنامه ی فاکتوریل رو برای عددهای بین 20-40 بنویسم ! از چه نوع داده ای استفاده کنم ؟ باید با حافظه پویا کار کنم؟ چه جوری؟؟

egoldfars
01-12-2007, 20:38
سلام ببخشید یه سوال داشتم !!! حتما جوابم بدینا !!!

می خوام برنامه ی فاکتوریل رو برای عددهای بین 20-40 بنویسم ! از چه نوع داده ای استفاده کنم ؟ باید با حافظه پویا کار کنم؟ چه جوری؟؟
این برنامه یه عدد از ورودی میگیره و فاکتوریلش رو حساب میکنه البته با استفاده از تابع نوشتم یه نگاهی به روش کاربرنامه کن ....

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

solosara
02-12-2007, 09:09
این برنامه یه عدد از ورودی میگیره و فاکتوریلش رو حساب میکنه

مرسی از توجه تون !برنامه درسته ! ولی
int sum=1; داده ی int حجمش اونقدر زیاد نیست که فاکتوریل اعداد بین 20-40 رو حساب کنه ! این برنامه برای اعداد کوچیک کار می کنه .

لطفا اگه بقیه هم می تونن راهنماییم کنن !

sherlockholmz
02-12-2007, 09:20
سلام ببخشید یه سوال داشتم !!! حتما جوابم بدینا !!!

می خوام برنامه ی فاکتوریل رو برای عددهای بین 20-40 بنویسم ! از چه نوع داده ای استفاده کنم ؟ باید با حافظه پویا کار کنم؟ چه جوری؟؟

سلام،
برنامه فاكتوريل از لحاظ نوشتاري والگوريتم بسيار ساده است و در واقع يك ضرب است كه در يك حلقه انجام مي شود.
آن چيزي كه اين برنامه را براي اساتيد جذاب مي كند، نحوه تعريف متغيرهاي آن است كه بستگي به محدوده عملياتي دارد. محدوده عملياتي شما اعداد 20 تا 40 است يعني:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بديهي است كه نوع int جوابگوي متغيرها نخواهد بود.مي توان از long و... استفاده كردكه هر كدام محدوده اي را ساپورت خواهند كرد. در برنامه زير از نوع داده اي double استفاده شده است كه تا حدود !200 را مي تواند محاسبه نمايد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سوالي بود در خدمتم.

solosara
02-12-2007, 10:17
خیلی خیلی ممنون !!!!

من گفتم شاید باید با آحافظه پویا نوشت ! درست فکر می کنم یا در اشتباهم !!!
در مورد حافظه پویا می تونین راهنماییم کنید ؟

sherlockholmz
02-12-2007, 15:54
خیلی خیلی ممنون !!!!

من گفتم شاید باید با آحافظه پویا نوشت ! درست فکر می کنم یا در اشتباهم !!!
در مورد حافظه پویا می تونین راهنماییم کنید ؟



نه،ربطي به حافظه پويا ندارد.حافظه پويا اختصاص بخش غيرثابت از حافظه به حجمي از داده هايي است كه اندازه نهائي آنها يا مشخص نيست و يا ثابت نمي ماند.از حافظه پويا به دو دليل استفاده مي شود.اول آنكه در مواردي تعداد نوع داده اي مشخص نيست و نمي توان طول خاصي براي آن در نظر گرفت و دوم در زماني كه تعداد نوع داده اي زياد است ولي مدت زمان استفاده آن در برنامه كم و مقطعيست وبراي آنكه حافظه بدون استفاده اشغال نماند،از تخصيص حافظه استفاده كرده و پس از اتمام آن حافظه را آزاد مي نمايند.تـابع ()malloc مـخصوص تخصيص حافظه اسـت و تابع ()free جهت آزاد سازي حافظه بكار مي رود.

m3hrz4d
02-12-2007, 17:56
سلام .خسته نباشی
من این برنامه رو میخوام با تابع بنویسم یه تابع برای ورودی و یه تابع برای محاسبه معدل و یکی هم برای خروجی.........

پارامتر های تابع getavg درست نیستن.
هر پارامتر یک تایپ و یک اسم داره.اینطوری که گذاشتی پارامتر اول اصلا مفهوم نداره.میتونی struct student رو سراسر (بالای کد هات) تعریف کنی و کل اطلاعات دانشجو ها رو به صورت یه آرایه از نوعstudent بفرسی.یا اینکه نمره ها رو بریزی توی یک آرایه float و اون رو برای تابع بفرستی

egoldfars
02-12-2007, 18:26
پارامتر های تابع getavg درست نیستن.
هر پارامتر یک تایپ و یک اسم داره.اینطوری که گذاشتی پارامتر اول اصلا مفهوم نداره.میتونی struct student رو سراسر (بالای کد هات) تعریف کنی و کل اطلاعات دانشجو ها رو به صورت یه آرایه از نوعstudent بفرسی.یا اینکه نمره ها رو بریزی توی یک آرایه float و اون رو برای تابع بفرستی
با سلام ممنون که راهنمایی کردید.به این صورت نوشتم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mehdi_50
02-12-2007, 21:45
سلام بر همه عزيزان
حقيقتش تازه عضو اين سايت شدم
يه مشكلي برام پيش اومده ازتون خواهش ميكنم كه كمكم كنيد

يه پروژه بايد بنويسيم كه متاسفانه من اصلا نميتونم

درس #c استادمون يه پروژه خواسته كه بايد يه ماشين رو درست كنيم و اين ماشين چرخ داشته باشد و جرخ ها حركت كنند !:41: حالا مسير و اينها هم نداشت نداشت فقط يه ماشيني باشه كه حركت كنه نكته اصليش همين چرخاشن .

پيشاپيش از كمك شما سپاسگذارم:11:

egoldfars
02-12-2007, 22:54
سلام
میتونم ساختار(structures) به این صورت داخل تابع(functions) استفاده کنم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

m3hrz4d
02-12-2007, 23:25
سلام
میتونم ساختار(structures) به این صورت داخل تابع(functions) استفاده کنم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نه.
شما ساختار student رو بیرون از همه ی توابع (بعد از include ها) تعریف کنین و از اون به بعد با student مثل یه تایپ معمولی برخورد کنین و میتونین یه آرگومان از یه تابع رو از این نوع یا آرایه ای ازین نوع در نظر بگیرین.
برای مثال من اینجا تابعی نوشتم که یه متغیر از نوع student میگیره و اطلاعاتش رو نشون میده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته نکته ای که اینجا هست اینه که برای ارسال struct هایی که بزرگ هستن به توابع بهتره بجای ارسال با مقدار, مثل ارسال آرایه ها از pointer استفاده کنیم تا سرعت اجرا بهتر باشه.من برای اینکه ممکنه براتون پیچیده باشه به صورت معمولی تابع ش رو نوشتم.

shadmehrdj
03-12-2007, 13:41
سلام.میشه در مورد اشاره گر توضیح بدید.

m3hrz4d
03-12-2007, 15:04
سلام.میشه در مورد اشاره گر توضیح بدید.
forum.p30world.com/showthread.php?t=175109

shadmehrdj
03-12-2007, 20:45
آقا مهرزاد دستت درد نکنه.

reza boy
04-12-2007, 00:01
آقا من يه برنامه كامل مي خوام برا يه نفر كسي مي تونه كمك كنه؟

sherlockholmz
04-12-2007, 11:45
آقا من يه برنامه كامل مي خوام برا يه نفر كسي مي تونه كمك كنه؟

سوال جالبي پرسيدي،ديگه كلي تر از اين نمي شد سوال پرسيد!يه برنامه برا يه نفر ،يه نفرم مي خواي كمكت كنه؟
اون يه نفر هيچ توضيحي در مورد برنامش بهت نداده اگه داده بگو تا يه نفر از بچه ها به تو و اون يه نفر كمك كنه.(چي به چي شد)

mehdi_50
04-12-2007, 12:39
سلام بر همه عزيزان
حقيقتش تازه عضو اين سايت شدم
يه مشكلي برام پيش اومده ازتون خواهش ميكنم كه كمكم كنيد

يه پروژه بايد بنويسيم كه متاسفانه من اصلا نميتونم

درس #c استادمون يه پروژه خواسته كه بايد يه ماشين رو درست كنيم و اين ماشين چرخ داشته باشد و جرخ ها حركت كنند !:41: حالا مسير و اينها هم نداشت نداشت فقط يه ماشيني باشه كه حركت كنه نكته اصليش همين چرخاشن .

پيشاپيش از كمك شما سپاسگذارم:11:
دوستان منتظر كمك شما هستم

egoldfars
04-12-2007, 19:21
ممنون از راهنمایی که کردی آقابهزاد.....
در کدزیر cout و cin در turbo++C اجراه نمیشه اینا دستور C هستند یا ++C و یا بستگی به نوع کامپایلر داره که استفاده میکنم اگر ممکن توضیح میدید . میشه از scanf و printf به جا شون استفاده کرد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mh_f
04-12-2007, 21:36
سلام به همگی
من یه مشکله بنیادی در زبان ++cدارم و اونم اینکه:
اصلا چه لزومی داره ما از اشاره گرها استفاده می کنیم چه فایده ای دارند؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟/

m3hrz4d
05-12-2007, 03:32
ممنون از راهنمایی که کردی آقابهزاد.....
در کدزیر cout و cin در turbo++C اجراه نمیشه اینا دستور C هستند یا ++C و یا بستگی به نوع کامپایلر داره که استفاده میکنم اگر ممکن توضیح میدید . میشه از scanf و printf به جا شون استفاده کرد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینا روش ورودی خروجی استاندارد توی ++C هستن منتها بعضی کامپایلر های قدیمی با این روش مشکل دارن.البته قبل از استفاده شما باید iostream.h رو include کرده باشین...ولی اگه بازم مشکل داشت میتونین از همون printf بجای cout و scanf بجای cin استفاده کنین.

egoldfars
05-12-2007, 12:09
خسته نباشی آقا بهزاد یا بهتره بگم خدا قوت........................
اگرممکن درباره این <- توضیح میدید برای چه منظوری استفاده میشند.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mehdi_50
05-12-2007, 19:17
سلام بر همه عزيزان
حقيقتش تازه عضو اين سايت شدم
يه مشكلي برام پيش اومده ازتون خواهش ميكنم كه كمكم كنيد

يه پروژه بايد بنويسيم كه متاسفانه من اصلا نميتونم

درس #c استادمون يه پروژه خواسته كه بايد يه ماشين رو درست كنيم و اين ماشين چرخ داشته باشد و جرخ ها حركت كنند !:41: حالا مسير و اينها هم نداشت نداشت فقط يه ماشيني باشه كه حركت كنه نكته اصليش همين چرخاشن .

پيشاپيش از كمك شما سپاسگذارم:11:
چشم انتظار كمك شما هستم
بابا پروژه سه نمره داره
دمتون گرم يه كمكي بكنيد (#c )

m3hrz4d
05-12-2007, 20:31
خسته نباشی آقا بهزاد یا بهتره بگم خدا قوت........................
اگرممکن درباره این <- توضیح میدید برای چه منظوری استفاده میشند.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتی abc یه شی از یک کلاس باشه یا یه متغیر از یک stucture باشه برای دسترسی به عضو هاش از نقطه استفاده میشه دیگه؟ مثلا :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا اگر abc یه اشاره گر به یک شی یا یه اشاره گر به متغیر از یک stucture باشه برای دسترسی به عضو هاش از <- استفاده میشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

reza boy
05-12-2007, 21:55
ببين دوست عزيز من مي خوام بدونم كسي كمك مي كنه يا نه ..... برنامه مثل پديده كه متون انگليسي رو به فارسي برگردونه
لغت لغت فقط بعد گفت كه 3 تا فايل داشته باشه
1-معني ها 2 متن انگليسي 3 متن فارسي
بعد گفت كه فايل اول قابليت اضافه و پاك كردن داشته باشه...
همين حالا كسي هست بتونه راهنمايي كنه

reza boy
05-12-2007, 21:57
در ضمن يادم رفت فقط تا شنبه وقت داره خواهش مي كنم زودتر يه كاري بكنيد ممنون از توجه شما ....

amsjavan
06-12-2007, 11:59
سلام و عرض خسته نباشيد به همه ي دوستان گل
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ما 1 رو خونه بسته و 0 رو خونه باز فرض مي كنيم. برنامه اي بايد بنويسم كه از خونه ها ي باز راهي پيدا كند كه بتواند از جدول خارج شود. در واقع برنامه بايد بتونه يه راه پيدا كنه كه از سمت چپ به سمت راست بره.
خانه هاي 0 و 1 در هر بار اجراي برنامه به طور رندم به جدول داده ميشه .
اگه براي حل اين مسئله كمكم كنيد ممنون ميشم.

saegheh67
07-12-2007, 12:57
بچه ها سلام امیدوارم مرا در حل مشکلم یاری فرمایید
من می خواهم در c++ یه فایل متنی بعنوان مثال student.dat را که از ده سطر تشکیل شده را که در اخر هر سطر '\n' داره و بعنوان مثال بدین صورت میباشد
[RIGHT]
[RIGHT][RIGHT][SIZE=3][RIGHT]

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
[RIGHT][LEFT]




را از ورودی دریافت کتم و رکوردهای ان را در ارایه ای بگذارم تا بتوانم سپس ان را صعودی مرتب سازی کنم مشکل اولم این است که فقط سطر اول را برنامه میخواند و9سطر دیگر را نمیخواند و دومین مشکل اینست که نمیدونم چطوری این اطلاعات را وارد ارایه در struct کنم لطفا مرا راهنمایی کنید چون تو این قسمت بد جوری گیج شدم
قسمتی از برنامه را که اشتباه نوشم اینجا می گذارم تا بگویید از کجا اشتباه رفته ام با تشکر
[RIGHT]
[RIGHT][RIGHT][SIZE=3][RIGHT][LEFT]
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

egoldfars
07-12-2007, 22:31
سلام
اگر ممکن راهنمایی کنید که چه طوری میشه داخل یک فایل جستجو کرد مثلا یه دفتر تلفن در نظر بیگیرید که چند تا نام و شماره تماس داره که باوارد کردن نام شماره تلفن و با وارد کردن شماره تلفن نام چاپ شود.
لطفا یه راهنمایی کوچولو کنید.......................................... .............

reza boy
08-12-2007, 13:26
كسي نيست يه كمك كنه

reza boy
11-12-2007, 01:23
بابا يه راهنماي كنيد خواهش مي كنم

نیوشـــــا
13-12-2007, 11:48
بچه ها کسی کد هافمن رو نداره؟؟
من معمولا خودم پروژه هام رو مینویسم ، ولی واسه این یکی مثل اینکه اصلا وقت ندارم
خواهش می کنم:-(

amsjavan
14-12-2007, 22:21
هافمن چیه؟ میشه بیشتر توضیح بدید

m3hrz4d
14-12-2007, 22:59
بچه ها کسی کد هافمن رو نداره؟؟
من معمولا خودم پروژه هام رو مینویسم ، ولی واسه این یکی مثل اینکه اصلا وقت ندارم
خواهش می کنم:-(
با یه سرچ ساده میتونستی پیدا کنی.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینکه چقدر خوب نوشته شده رو نمیدونم ضمنا اینجا از نوع های تعریف شده ی ویندوز به جای استاندارد ++C استفاده شده(DWORD بجای unsigned long و BYTE بجای unsigned char).
--
در مورد Huffman :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ghazaleh_e666
14-12-2007, 23:42
من يه مشكل برنامه نويسي تو C داشتم
برنامه مربوط مي شه به LDU
اينكه از كاربر يه ماتريس n در n بگيره سپس اون رو به يه ماتريس بالا مثلثي ،ماتريس قطري وماتريس پايين مثلثي تبديل كنه !!! بهاين ميگن LDU
به خدا كارم خيلي گيره
هر كس تونست اون رو برام ميل كنه ،ممنون مي شم

wantonboy13
15-12-2007, 23:18
اجازه بدید ما هم یکی از این سوالات عجیب استادمون رو این وسط مطرح کنیم ، شاید کسی باشه که قبلا" با این مسئله برخورد کرده باشه یا بدونه چه جوری حل میشه و به ما بگه. :11:

سوال اینه که:
کاربری یک عدد بین 1 تا 256 به دلخواه انتخاب می کنه ، شما باید با پرسیدن حداکثر 8 سوال به عدد مورد نظر برسید. (طوریکه جوابها فقط بله و یا خیر باشند)

برنامه اش رو خودم می نویسم ، فقط یکی بیاد راه حل بده !!
منم یه مقدار روش فکر کردم ، ولی خیلی بیشتر از 8 سوال میشه !!
این که مثلا" بپرسیم عدد مورد نظر اول هست ؟! یا مثلا" بپرسیم عدد مورد نظر آخرش 0 داره (یا به زبون دیگه بر 10 بخش پذیر هست یا نه ) ؟! و از این قبیل سوال ها به ذهنم رسید که خواهش می کنم علم بی پایان خودتون رو از ما دریغ نکنید !! :5:

m3hrz4d
16-12-2007, 14:12
بهتر بود خودت فکر میکردی و راه حل رو پیدا میکردی اونطوری جالب تر بود برات.
روش اینه که با هر سوال نصف جواب های ممکن رو حذف میکنیم.سوال هم ساده هستش.کافیه هر بار وسط بازه اعدادت( یعنی اولین بار 2 / 256) رو در نظر بگیری و بپرسی که آیا عدد مورد نظر ازین عدد بزرگ تره یا نه.اینطور نصف جواب ها حذف میشه مثلا اگه برای اولین بار بگه نه, میفهمی که عدد مورد نظر یکی از اعداد 1 تا 128 هست و بار دیگه سوال میکنی که آیا عدد مورد نظر از 64 (2/128) بزرگتره.مثلا اگه گفت نه عدد مورد نظر یکی از عداد 1 تا 64 هست و یا اگه گفت بله عدد مورد نظر بین 64 تا 128 هست و الی آخر.
در واقع هر دفعه بازه رو نصف میکنی.حداکثر تعداد سوال های لازم هم log تعداد اعداد در مبنای 2 هست که اینجا میشه 8.

wantonboy13
16-12-2007, 20:33
بهتر بود خودت فکر میکردی و راه حل رو پیدا میکردی اونطوری جالب تر بود برات.
روش اینه که با هر سوال نصف جواب های ممکن رو حذف میکنیم.سوال هم ساده هستش.کافیه هر بار وسط بازه اعدادت( یعنی اولین بار 2 / 256) رو در نظر بگیری و بپرسی که آیا عدد مورد نظر ازین عدد بزرگ تره یا نه.اینطور نصف جواب ها حذف میشه مثلا اگه برای اولین بار بگه نه, میفهمی که عدد مورد نظر یکی از اعداد 1 تا 128 هست و بار دیگه سوال میکنی که آیا عدد مورد نظر از 64 (2/128) بزرگتره.مثلا اگه گفت نه عدد مورد نظر یکی از عداد 1 تا 64 هست و یا اگه گفت بله عدد مورد نظر بین 64 تا 128 هست و الی آخر.
در واقع هر دفعه بازه رو نصف میکنی.حداکثر تعداد سوال های لازم هم log تعداد اعداد در مبنای 2 هست که اینجا میشه 8.
آقا مخلصیم.... :11:
پس بگو جریان این 256 چی بوده... خیلی مشکوک میزد که چرا 256 !
ظاهرا" که درست میزنه ، امیدوارم باطنا" هم درست باشه.
مثل اینکه یه 4 نمره ای هم داره این پروژه که یادم باشه 2 نمرشو برات کنار بذارم ، 2 نمره دیگه رو هم بدم به بقیه گروهمون ( خیر سرم سرگروهم !!! :27:)

m3hrz4d
16-12-2007, 23:50
آره خوب این قضیه اساس روش Binary Search هست.فکر کنم استادتون هم واسه همین گفته..
آره اون دو نمره رو هم انتقالی ش کن بفرست واسه من (آدرس بدم؟ :D)

oranoos_mta
17-12-2007, 15:49
يک شرکت اتوبوسراني براي کليه شهر هاي ايران مي خواهد خدمات دهد
اين شرکت فعلا براي 50 شهر سرويس دارد(رفت و برگشت)
اولا امکان حذف و اضافه کردن شهر ها را دارا مي باشد
ثانيا امکان مرتب سازي شهر ها بر اساس فيلد هاي مختلف(فاصله - قيمت - حروف الفبا) را داشته باشد
بايد برنامه را با الگوريتم هاي درج - حذف - پيمايش - جستجو در گراف بر اساس فيلد هاي مختلف- الگوريتم sort ليست پيوند والگوريتمي که در پايين ذکر مي شود . نوشته شود
با استفاده از الگوريتم کوتاهترين مسير ' کوتاهترين مسير ممکن بين دو شهر را بدست آورد.
اگر هم خواستيم بين دو شهر مسير جديدي ايجاد کنيم ' اين مسير را برايمان ايجاد کند.

elyass
22-12-2007, 00:23
ببخشيد ميشه مشكل اين برنامه رو بهم بگيد حياتيه
برنامه اي كه بتوان با استفاده از ان اطلاعات دانشجويان شامل نام ونام خانودگي و شماره دانشجويي و معدل و رشته تحصيلي را از ورودي دريافت كند وسپس عمليات زير را انجام دهد:
1.امكان وارد كردن اطلاعات دانشجويان
2.امكان ويرايش
3.امكان جستجو براساس شماره دانشجويي و نام خانوادگي
4.امكان مرتب كردن و نمايش ان
5.امكان حذف اطلاعات و دانشجويان
#include<iostreame.h>
class student{
int serial;
float ave;
char name[20],field[20];
public:
student():serial(0),ave(0),name(),field()
{}
void get(){
cout<<"enter information such as: name field seial average.";
cin.get(name,20);
cin.get(field,20);
cin>>serial>>ave;
}
void del(student x[500]){
cout<<"enter information to delete: n=name s=serial:";
cin>>st;
if(st==s)
{cout<<"enter serial to delete:";
cin>>a;
for(i=0;i<500;i++)
if(x[i].serial==a)
for(j=i;j<500;j++)
{x[j].serial=x[j+1].serial;
x[j].name=x[j+1].name;
x[j].ave=x[j+1].ave;
x[j].field=x[j+1].field;
}
else
if(st==n)
{cout<<"enter name to delete:";
cin.get(bt,20);
for(i=0;i<500;i++)
if(x[i].name==bt)
for(j=i;j<500;j++)
{x[j].name=x[j+1].name;
x[j].serial=x[j+1].serial;
x[j].ave=x[j+1].ave;
x[j].field=x[j+1].field;}
}
else
cout<<"Error!";
for(i=0;i<500;i++)
cout<<x[i].name<<"\t"<<x[i].serial<<"\t"<<x[i].field<<"\t"<<x[i].ave;}
void arreng(student x[500]){
cout<<"what kind of arreng do you want: n=name s=serial f=field:";
cin>>sf;
if(sf==n)
for(i=0;i<500;i++)
{n=strcmpi(x[i].name,x[i+1].name);
if(n==1)
{d=x[i+1].name;
x[i+1].name=x[i].name;
x[i].name=d;
}}
else
if(sf==f)
for(i=0;i<500;i++)
{n=strcmpi(x[i].field,x[i+1].field);
if(n==1)
{d=x[i+1].field;
x[i+1].field=x[i].field;
x[i].field=d;
}}
else
if(sf==s)
for(i=0;i<500;i++)
{n=strcmpi(x[i].serial,x[i+1].serial)
if(n==1)
{c=x[i+1].serial;
x[i+1].serial=x[i].serial;
x[i].serial=c;
}}
else
cout<<"Error!";
for(i=0;i<500;i++)
cout<<x[i].name<<"\t"<<x[i].field<<"\t"<<x[i].serial<<"\t"<<x[i].ave;
}
void search(student x[500]){
cout<<"Enter way of searching: n=name s=serial:";
cin>>sp;
if(sp==s)
{cout<<"Enter serial:";
cin>>v;
for(i=0;i<500;i++)
if(x[i].serial==v)
cout<<x[i].name<<"\t"<<x[i].field<<"\t"<<x[i].serial<<"\t"<<x[i].ave;}
else
cout<<"Error!";
if(sp==n)
{cout<<"Enter name:";
cin.get(f,20);
for(i=0;i<500;i++)
if(x[i].name==f)
cout<<x[i].name<<"\t"<<x[i].field<<"\t"<<x[i].serial<<"\t"<<x[i].ave;}
else
cout<<"Error!";}
void show(){
cout<<name<<"\t"<<field<<"\t"<<serial<<"\t"<<ave;}
void repair(student x[500]){
cout<<"Enter information to delete: n=name s=serial:";
cin>>hp;
if(hp==n)
{cout<<"Enter name to repair:";
cin.get(esm,20);
for(i=0;i<500;i++)
if(x[i].name==esm)
{cout<<x[i].name<<"\t"<<x[i].field<<"\t"<<x[i].serial<<"\t"<<x[i].ave;
cout<<"Enter new information:name field serial ave:";
cin.get(nn,20);
cin.get(nf,20);
cin>>ns>>na;
x[i].name=nn;
x[i].field=nf;
x[i].serial=ns;
x[i].ave=na;}}
else
if(hp==s)
{cout<<"Enter serial to repair:";
cin>>u;
for(i=0;i<500;i++)
if(x[i].serial==u)
{cout<<x[i].name<<"\t"<<x[i].field<<"\t"<<x[i].serial<<"\t"<<x[i].ave;
cout<<"Enter new information: name field serial ave:";
cin.get(nn,20);
cin.get(nf,20);
cin>>ns>>na;
cin>>ns>>na;
x[i].name=nn;
x[i].field=nf;
x[i].serial=ns;
x[i].ave=na;}}
cout<<nn<<"\t"<<nf<<"\t"<<ns<<"\t"<<na;}
int main(){
student x[500],w;
int i,j,a,c,v,u,ns,na;
char st[2],f,hp[2],esm,sp[2],bt,sf[2],d,nn,nf;
for(i=0;i<500;i++)
x[i].get();
w.del(x);
w.arreng(x);
w.search(x);
w.show(x);
w.repair(x);
return 0;
}

farnaz_bahall
22-12-2007, 02:54
سلام
من يك كمك مي خواستم اما نه در رابطه با برنامه نويسي بلكه در رابطه با الگوريتم يك برنامه.
من الگوريتم برنامه مربع جادويي مي خوام كه بتونه مربع هايي با اندازه ي 6 ، 10 ، ... رو حساب كنه من برنامه رو براي بقيه اعداد نوشتم اما الگوريتمي كه مربوط به اين دسته اعداد باشه چيزه مفهومي پيدا نكردم.
اگر كسي در اين زمينه اطلاعاتي داره ممنون مي شم منو راهنمايي كنه.

brad pitt
25-12-2007, 10:27
با سلام

از قبل معذرت میخوام اگر موضوع رو اینجا مطرح میکنم

من یه برنامه در مورد ذخیره و بازیابی اطلاعات به زبان ++c میخواستم که در آن 1 رکورد با طول متغیرو ثابت مکان در اون تعریف میشهو فیلدهای اون اشاره گر باشندو رکورد به اسم student با 3 فیلد name و family و serial number باشه

تو رو خدا کمک کنید . از کجا میتونم گیر بیاورم . برای پروژه است

یکی لطف کنه بگه . خیلی ممنونم میشم

مرسی

nakhyinthezone
03-01-2008, 08:26
[quote=brad pitt;1930442]با سلام

از قبل معذرت میخوام اگر موضوع رو اینجا مطرح میکنم

من یه برنامه در مورد ذخیره و بازیابی اطلاعات به زبان ++c میخواستم که در آن 1 رکورد با طول متغیرو ثابت مکان در اون تعریف میشهو فیلدهای اون اشاره گر باشندو رکورد به اسم student با 3 فیلد name و family و serial number باشه

تو رو خدا کمک کنید . از کجا میتونم گیر بیاورم . برای پروژه است

یکی لطف کنه بگه . خیلی ممنونم میشم

مرسی

neda ghadirian
03-01-2008, 13:18
سلام
من چند تا سوال حیاتی دارم اگر کسی می تونه کمک کنه!
در سی باشه
برنامه ای که تعداد ن عدد صحیح را از ورودی بگیرد در ارایه ای بطول ن ذخیره کند که
تعداد اعداد تک رقمی دو رقمی سه رقمی و سایر ارقام را چاپ کند.



تعداد اعداد مربع کامل را همراه خود اعداد کامل در صورت وجود نشان دهد.

اعداد را به صورت مرتب شده از بزرگ به کوچک نشان دهد.



تورو خدا اگر یکی شم بلدید کمک کنید

amsjavan
03-01-2008, 18:14
با سلام

از قبل معذرت میخوام اگر موضوع رو اینجا مطرح میکنم

من یه برنامه در مورد ذخیره و بازیابی اطلاعات به زبان ++c میخواستم که در آن 1 رکورد با طول متغیرو ثابت مکان در اون تعریف میشهو فیلدهای اون اشاره گر باشندو رکورد به اسم student با 3 فیلد name و family و serial number باشه

تو رو خدا کمک کنید . از کجا میتونم گیر بیاورم . برای پروژه است

یکی لطف کنه بگه . خیلی ممنونم میشم

مرسی

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

amsjavan
03-01-2008, 18:18
سلام
من چند تا سوال حیاتی دارم اگر کسی می تونه کمک کنه!
در سی باشه
برنامه ای که تعداد ن عدد صحیح را از ورودی بگیرد در ارایه ای بطول ن ذخیره کند که
تعداد اعداد تک رقمی دو رقمی سه رقمی و سایر ارقام را چاپ کند.



تعداد اعداد مربع کامل را همراه خود اعداد کامل در صورت وجود نشان دهد.

اعداد را به صورت مرتب شده از بزرگ به کوچک نشان دهد.



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

reza_senior
06-01-2008, 16:45
سلام
من 4 برنامه می خوام اگه کسی بتونه کمکم کنه ممنون میشم
1. برنامه ساعت گرافیکی عقربه دار که قابل اجرا در کامپایر ++c باشه .
2.برنامه SQRT به ازای هر عدد قابل اجرا در کامپایلر ++c باشد.
3.برنامه sin که به ازای هر درجه داده شده قابل اجرا در کامپایلر ++c باشد .
4.برنامه فاکتوریل که به ازای هر عدد قابل اجرا در کامپایلر ++c باشد .

sherlockholmz
09-01-2008, 11:06
سلام
من چند تا سوال حیاتی دارم اگر کسی می تونه کمک کنه!
در سی باشه
برنامه ای که تعداد ن عدد صحیح را از ورودی بگیرد در ارایه ای بطول ن ذخیره کند که
تعداد اعداد تک رقمی دو رقمی سه رقمی و سایر ارقام را چاپ کند.



تعداد اعداد مربع کامل را همراه خود اعداد کامل در صورت وجود نشان دهد.

اعداد را به صورت مرتب شده از بزرگ به کوچک نشان دهد.



تورو خدا اگر یکی شم بلدید کمک کنید

سلام،
خوب اول دو آرايه با طول معين و تعداد متغير به عنوان شمارنده اعداد يك رقمي،دورقمي و... و نيز يك شمارنده براي اعداد مربع كامل تعريف كنيد.سپس اعداد را از ورودي بخوانيد. در حين خواندن اعداد (يعني پس از دريافت هر عدد و ذخيره آن در آرايه اول)آنرا از لحاظ تعداد ارقام شناسائي نمائيد(مثلا"،يك حلقه تعريف كنيد و عدد را به توانهاي پياپي 10 تقسيم نمائيدو خارج قسمت را بصورت int ذخيره كنيدتا صفر شود .توان آخري 10 ،تعداد ارقام را نشان مي دهد).بعد عدد هر چند رقمي بود يك رقم به شمارنده آن اضافه نمائيد.سپس ريشه عدد را نيز (مثلا" با تابع pow) بدست آورده در يك متغيرint ذخيره نمائيد.با بتوان دو رساندن اين متغير و مقايسه با عدد اوليه مي توان مشخص نمود كه آيا عدد مربع كامل است يا خير.اگر بود به شمارنده مربوطه اضافه نموده و خود عدد را نيز در آرايه دوم ذخيره نمائيد.توجه كنيد كه تمام اين اعمال در حين گرفتن اعداد از ورودي صورت مي پذيرد.سرانجام پس از اتمام دريافت اعداد بايكي از روتينهاي sort اعداد را مرتب نمائيد.
اينهم از كمك:20:
موفق باشيد.

asire-dell
12-01-2008, 21:29
<P>خوب من هم يه سئوال داشتم.دستور system("cls") ;&nbsp; يا system("pause");&nbsp; چي کار مي کنه؟<BR>اين دستورات رو من توي يه برنامه که با فايل و به زبان سي پلاس پلاس نوشته شده بود ديدم.<BR>و مي خواستم بدونم براي چي توي برنامه استفاده مي کنيم واگر استفاده نکنيم ممکنه برنامه خطا بده؟<BR>دستور سيستم تا جايي که من فهميدم واسه اينه که دستورات داس را توي محيط سي اجرا بکنه .<BR>کلآ مي خواستم بدونم منطقآ چه عملي رو انجام مي دن؟<BR>هر بلده خواهش مي کنم جواب بده.<BR>ممنون.<BR></P>

sina_mas
13-01-2008, 15:48
سلام
گفتم یه سوال بپرسم ضرر نداره....:31:
من یه رشته تعریف کردم ولی با دستور gets نمی تونم ورودی بگیرم مجبور شدم با scanf این کارو بکنم که البته می دونید کارایی gets رو نداره بنظرتون مشکل کجایت؟:19:

m3hrz4d
13-01-2008, 18:16
<P>خوب من هم يه سئوال داشتم.دستور system("cls") ;&nbsp; يا system("pause");&nbsp; چي کار مي کنه؟<BR>اين دستورات رو من توي يه برنامه که با فايل و به زبان سي پلاس پلاس نوشته شده بود ديدم.<BR>و مي خواستم بدونم براي چي توي برنامه استفاده مي کنيم واگر استفاده نکنيم ممکنه برنامه خطا بده؟<BR>دستور سيستم تا جايي که من فهميدم واسه اينه که دستورات داس را توي محيط سي اجرا بکنه .<BR>کلآ مي خواستم بدونم منطقآ چه عملي رو انجام مي دن؟<BR>هر بلده خواهش مي کنم جواب بده.<BR>ممنون.<BR></P>
میتونین خیلی راحت این دستورات رو توی Command Prompt اجرا کنین و نتیجه رو ببینین گ
دستور cls صفحه نمایش رو پاک میکنه (هرچی قبلا توش بوده پاک میشه)
دستور pause هم عبارت ". . . Press any key to continue" رو نشون میده و برنامه منتظر میمونه تا شما یک دکمه بزنین تا ادامه ی کار انجام بشه.

m3hrz4d
13-01-2008, 20:22
سلام
گفتم یه سوال بپرسم ضرر نداره....:31:
من یه رشته تعریف کردم ولی با دستور gets نمی تونم ورودی بگیرم مجبور شدم با scanf این کارو بکنم که البته می دونید کارایی gets رو نداره بنظرتون مشکل کجایت؟:19:

چطوری مینویسین ؟ این مثال MSDN هست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sevastika
20-01-2008, 21:31
سلام.من عضو جديد هستم.راستش هيچي راجع به اين سايت نميدونم.يعني يه كم گيج شدم.يه سوال باعث شد تا من عضو بشم.چطوري ميشه خروجيcpp رو چاپ كرد؟

eshghe_shabake
28-01-2008, 02:32
سلام به برو بچ :31:


حقیقتش من حوصلم نشد از اول تایپیک تا آخرش بخونم اینو گفتم که اگه جواب منو تو بحثاتون دادین حالیم کنین :31:


من یه پروژه دارم که باید تا دو روز دیگه انجامش بدم راستش من کار با فایلها رو توی سی ++ خوندم ولی پروژه ای که دارم تو محیط سی هستش برا همین گیج شدم :31:


حالا من پروژه رو میگم اگه یکی بزرگواری کنه و این پروژه رو برام بنویسه خیلی خیلی ممنون میشم :31:


===> اطلاعات دانشجویان یک دانشگاه و قابلیت پیدا کردن یک دانشجو بر اساس شماره دانشجویی را داشته باشد .
نام و نام خانوادگی و نمره و شماره دانشجویی و جنسیت.
بر اساس کار با فایلهل و struct.
منو هم داشته باشد به صورت زیؤ
1)Entry
2)save
3)load
4)search
5)displey


جون مادرتون کمک کنید گیج گیج شدم :31:

reza_senior
28-01-2008, 17:10
سلام
جونه مادرتون یه کاری واسه ما بکنید
فقط 2 روز دیگه وقت دارم .
1. برنامه ساعت گرافیکی عقربه دار که قابل اجرا در کامپایر ++c باشه .
2.برنامه SQRT به ازای هر عدد قابل اجرا در کامپایلر ++c باشد.
3.برنامه sin که به ازای هر درجه داده شده قابل اجرا در کامپایلر ++c باشد .
4.برنامه فاکتوریل که به ازای هر عدد قابل اجرا در کامپایلر ++c باشد .

amir_infernal
28-01-2008, 18:16
از اساتيد محترم كسي هست بياد به جاي ما امتحان بده؟؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اضطراريه

amir_infernal
28-01-2008, 18:16
از اساتيد محترم كسي هست بياد به جاي ما امتحان بده؟؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اضطراريه

zauos
29-01-2008, 00:16
از اساتيد محترم كسي هست بياد به جاي ما امتحان بده؟؟[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اضطراريه
مگه میشه یکی به جای شما امتحان بده ؟:18:

iranian_genius
29-01-2008, 01:18
سلام . من مبتدی هستم اما خیلی دوست دارم که یاد بگیرم .

لطفا بگد که برای سی پلاس پلاس خود برنامه اصلی که بعدا باید درونش برنامه نویسی کرد رو چجوری و از کجا تهیه کنم و اصلا اسمش چیه ؟

لطفا یه خورده راجع به این موضوع توضیح بدین . ممنون از همتون

eshghe_shabake
29-01-2008, 02:35
سلام به برو بچ :31:


حقیقتش من حوصلم نشد از اول تایپیک تا آخرش بخونم اینو گفتم که اگه جواب منو تو بحثاتون دادین حالیم کنین :31:


من یه پروژه دارم که باید تا دو روز دیگه انجامش بدم راستش من کار با فایلها رو توی سی ++ خوندم ولی پروژه ای که دارم تو محیط سی هستش برا همین گیج شدم :31:


حالا من پروژه رو میگم اگه یکی بزرگواری کنه و این پروژه رو برام بنویسه خیلی خیلی ممنون میشم :31:


===> اطلاعات دانشجویان یک دانشگاه و قابلیت پیدا کردن یک دانشجو بر اساس شماره دانشجویی را داشته باشد .
نام و نام خانوادگی و نمره و شماره دانشجویی و جنسیت.
بر اساس کار با فایلهل و struct.
منو هم داشته باشد به صورت زیؤ
1)Entry
2)save
3)load
4)search
5)displey


جون مادرتون کمک کنید گیج گیج شدم :31:

نبوووووووود ؟؟؟ :41: بابا جون مادرتون من فردا باید تحویل بدم :41:

solosara
29-01-2008, 10:26
این برنامه ای خواستین تو کتاب برنامه نویسی c++ آقای جعفر نژاد هست ! البته یه چیزایی کم داره دستورات c , ++c تفاوت زیادی ندارند !

solosara
29-01-2008, 10:29
میشه کمکم کنید باید یه برنامه ی دیکشنری بنویسم با استفاده از درخت جستجوی دودویی (BST) اگه راهنماییم کنید ممنون می شم !
یه چیزی رو نمی فهمم وقتی بخوام لغت و معنی بدم بهش هر یه لغت به عنوان یک شیء محسوب می شه یا هر بار که بخوام برنامه رو run کنم یه شیء ساخته میشه و تک تک لغت ها میشن خصوصیت های اون شیء ؟؟؟؟

amir_infernal
29-01-2008, 10:41
مگه میشه یکی به جای شما امتحان بده ؟:18:
آره چرا نشه؟

solosara
31-01-2008, 16:12
میشه کمکم کنید باید یه برنامه ی دیکشنری بنویسم با استفاده از درخت جستجوی دودویی (BST) اگه راهنماییم کنید ممنون می شم !
یه چیزی رو نمی فهمم وقتی بخوام لغت و معنی بدم بهش هر یه لغت به عنوان یک شیء محسوب می شه یا هر بار که بخوام برنامه رو run کنم یه شیء ساخته میشه و تک تک لغت ها میشن خصوصیت های اون شیء ؟؟؟؟

کسی نبود ؟؟؟؟بابا فقط راهنمایی خواستم نگفتم که بنویسین !!!!

solosara
03-02-2008, 17:14
کمک کنید لطفا !!!!!!!!!

solosara
05-02-2008, 22:56
چقدر نامرد شدین !!! قدیما مهربون تر بودینا !

rafat
06-02-2008, 02:09
من يه برنامه گرافيكي به زبون c,or,c# تو محيط visual studioمي خوام؟

rafat
06-02-2008, 02:14
اگه مي شه زود جواب بديد ممنون ميشم؟

+EBLIS+
07-02-2008, 21:48
بابا یکی کمکم کنه!!
چرا turbo c++ به کد زیر اشکال می‌گیره؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

m3hrz4d
08-02-2008, 21:12
++Turbo C قدیمی هست و NameSpace ها رو نمیشناسه. از این کد استفاده کنین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

cpplover
09-02-2008, 17:24
ضمن سلام خدمت دوستان و علی الخصوص m3hrz4d :
بله دقیقا همونطوری هست که m3hrz4d گفتند بعضی از دستورات دیگه الان قدیمی شدن و کمتر مورد استفاده قرار می گیرن مثل using namespace std
به شما هم توصیه میکنم از کامپایلر بورلند استفاده کنید و همونطوری که دوستمون گفتند می تونید از اینجور کدی استفاده کنید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

toloe_ghorob
23-02-2008, 10:48
يه برنامه با تابع بازگشتي كه يك عدد رو بگيره و حالت هاي خورد كرئنش رو به 2و5و10 چاپ كنه برام بفرستيد
berli973@berlinico.com
اين ميل منه

aRThaS_08
24-02-2008, 17:48
آقا من میخوام یه بازی نصب کنم این ارور رو میده باید چیکار کنم توروخدا کمک!!!

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

+EBLIS+
01-03-2008, 19:27
آقا من میخوام یه بازی نصب کنم این ارور رو میده باید چیکار کنم توروخدا کمک!!!

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

منظورتون کامپایله؟:41:

baghlani
25-03-2008, 02:40
وارون كردن عدد اعشاري با c

Dark Prince
26-03-2008, 23:38
ببخشید دوستان من تازه می خوام کار کردن با این زبان برنامه نویسی C++ شروع کنم.
میشه لینک برنامه ی مخصوص این زبان برنامه نویسی را به من بدید ؟!!
لطفا از رپیدشر باشه.:20:

seyedmajid
28-03-2008, 17:07
سلام می خواستم بدانم فرق دو دستور زیر چیه و اصلا به چه در می خوره در ++c (با توضیح کامل لطفا)
x=new int
[5]x=new int

iranian_genius
31-03-2008, 05:34
ضمن سلام خدمت دوستان و علی الخصوص m3hrz4d :
بله دقیقا همونطوری هست که m3hrz4d گفتند بعضی از دستورات دیگه الان قدیمی شدن و کمتر مورد استفاده قرار می گیرن مثل using namespace std
به شما هم توصیه میکنم از کامپایلر بورلند استفاده کنید و همونطوری که دوستمون گفتند می تونید از اینجور کدی استفاده کنید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من هم دقیقا از همین کد استفاده میکنم .

اما باز هم مشکل داره و Error میده .
اتفاقا توی محیط برلند C++ 2066 هم استفاده میکنم . توی ویژوال سی پلاس پلاس 2008 هم امتحان کردم اما بازم Error میده .

در ضمن من نمیدونم باید برای شروع توی کدوم قسمت از گزینۀ New برم . واسه همین گزینۀ VCL Forms Application رو انتخاب میکنم . لطفا بگید مشکل از کجاست ؟

کدوم قسمت از New رو باید انتخاب کنم؟


file:///C:/Documents%20and%20Settings/Nima-Co/My%20Documents/My%20Pictures/c2.GIFfile:///C:/Documents%20and%20Settings/Nima-Co/My%20Documents/My%20Pictures/c2.GIF

seyedmajid
01-04-2008, 15:12
کسی سورس برنامه دیکشنری را با سی پلاس پلاس نداره

Master
01-04-2008, 16:03
کسی سورس برنامه دیکشنری را با سی پلاس پلاس نداره

این برناه به زبان سی نوشته شده .. چندان فرقی با سی پلاس پلاس نداره .فقط بجای printf بذار cout بجای scanf بذار cin فراموش نکن iostream.h رو هم قرار بدی

دقت کن که هر دو فایل رو در درایو سی قرار بدی و بعد برنامه رواجرا کنی ..در غیر اینصورت برنامه اجرا نمیشه ! اینم بخاطر دستور" "fp=fopen("C:\\popdefs.txt","r");"هست ... که بدنبال بانک اطلاعاتی در درایو سی میگرده ... البته با خودته که چه تغیراتی میخوای بهش بدی ...ریشو قیچی دست شماست و هر طوری که دلت خواست میتونی تغییرات رو اعمال کنی .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

===========
اینم از بانک اطلاعاتی :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Master
01-04-2008, 16:14
ضمن سلام خدمت دوستان و علی الخصوص m3hrz4d :
بله دقیقا همونطوری هست که m3hrz4d گفتند بعضی از دستورات دیگه الان قدیمی شدن و کمتر مورد استفاده قرار می گیرن مثل using namespace std
به شما هم توصیه میکنم از کامپایلر بورلند استفاده کنید و همونطوری که دوستمون گفتند می تونید از اینجور کدی استفاده کنید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من هم دقیقا از همین کد استفاده میکنم .

اما باز هم مشکل داره و Error میده .
اتفاقا توی محیط برلند C++ 2066 هم استفاده میکنم . توی ویژوال سی پلاس پلاس 2008 هم امتحان کردم اما بازم Error میده .

در ضمن من نمیدونم باید برای شروع توی کدوم قسمت از گزینۀ New برم . واسه همین گزینۀ VCL Forms Application رو انتخاب میکنم . لطفا بگید مشکل از کجاست ؟

کدوم قسمت از New رو باید انتخاب کنم؟


file:///C:/Documents%20and%20Settings/Nima-Co/My%20Documents/My%20Pictures/c2.GIFfile:///C:/Documents%20and%20Settings/Nima-Co/My%20Documents/My%20Pictures/c2.GIF

اشتباه شما دوستان رو اون بالا مشخص کردم .. تابع مین رو شما از نوع void تعریف کردید . بعد آخرش مقدار 0 رو برمیگردونید ؟ !! یا void رو برداید و همینطور return 0رو .. یا اینطور بنویسید
int main(void)
{
statemament
....
return 0
}

که شکل درست برنامه نویسی هم همینه !

در مورد نیم اسپیس هم هر موقع دارید استفاده میکنید یا باید هر بار قبل از استفاده از اجزای اون خود std:: رو نقل کنید .. یا اینکه اون بالا حداقل از هر کدوم از اجزا که قراره در طول برنامه ازش استفاده کنید یک بار دز اول قبل از شروع تابع مین استفاده کنید به این شکل
#include <iostream>
using std::cout; // program uses cout
using std::cin; // program uses cin
using std::endl; // program uses endl

int main (void)
{
statements
.......
return 0;
}
فراموش نشه اون بالا

iranian_genius
02-04-2008, 00:18
سلام Master عزیز .
باور کن من همه چیز رو رعایت میکنم اما باز هم خطا میده و اجرا نمیشه و روی تابع Namespace std ارور میده و خط قرمز رنگ پیغام خطا روی اون هست .

ببین من به این شکل مینوسم و خطا میده ، ببینید اشکال از کجاست :

include <iostream>#
using std::cout ;
int main(void)
{
cout << "hello nima\n" ;
return 0;
}

به این شکل هم نوشتم که بازم همون خطای بالا رو میده:

#include <iostream>
using namespace std ;
int main()
{
cout << "hello nima\n" ;
return 0;
}

و حتی به این شکل :

#include <iostream>;
int main()
{
std: : cout << "hello nima\n" ;
return 0;
}

توی تمتم اینها همون خطای namespace std رو میده .

گیییییییییییج شدم!!!!!!!!!!

iranian_genius
02-04-2008, 00:21
در ضمن دستورات پست بالا رو توی محیط Borland studio 2006 توی قسمت File>New>VCL Forms Applacation C++ Builder استفاده میکنم . احتمالا اشکال از مسیر انتخاب فرم و یوتیت و اینچیزا که نیست . نه؟؟!!

seyedmajid
02-04-2008, 08:22
جناب مستر این کد تو برلند کار نمی کنه اگه میشه برای برلند را بزارین

Master
02-04-2008, 10:47
سلام Master عزیز .
باور کن من همه چیز رو رعایت میکنم اما باز هم خطا میده و اجرا نمیشه و روی تابع Namespace std ارور میده و خط قرمز رنگ پیغام خطا روی اون هست .

ببین من به این شکل مینوسم و خطا میده ، ببینید اشکال از کجاست :

include <iostream>#
using std::cout ;
int main(void)
{
cout << "hello nima\n" ;
return 0;
}

به این شکل هم نوشتم که بازم همون خطای بالا رو میده:

#include <iostream>
using namespace std ;
int main()
{
cout << "hello nima\n" ;
return 0;
}

و حتی به این شکل :

#include <iostream>;
int main()
{
std: : cout << "hello nima\n" ;
return 0;
}

توی تمتم اینها همون خطای namespace std رو میده .

گیییییییییییج شدم!!!!!!!!!!

خوب با پست پایینیت متوجه شدم مشکل از کجاست

در ضمن دستورات پست بالا رو توی محیط Borland studio 2006 توی قسمت File>New>VCL Forms Applacation C++ Builder استفاده میکنم . احتمالا اشکال از مسیر انتخاب فرم و یوتیت و اینچیزا که نیست . نه؟؟!!

ببین نیما جان این دستویر که شما داری ساتفاده میکنی یک دستور کنسولی هست ..یعنی وقتی مینویسی cout
یعنی در اصل نوشتی consol out .. و برای نمایش متون و سایر عبارات در محیط داس هست ! به نظرم شما هم میخوایید فقط همین" سلام دنیا " رو تو محیط داس نشون بدید ..اگه آره که باید تو بخش پراجکت بورلند ..COnsol Application رو انتخاب کنی و برنامتو بنویسی ..
در غیر اینصورت اگهمیخوای تویه فرم تو یه پنجره این عبارت رو نشون بدی .. دیگه از این جور دستورها نمیتونی استفاده کنی ..چون ا زحالت کنسول به حالت ویندوز یا پنجره باید بری ! برای نشون دادن یک پنجره و یا کار با اون باید از توابعی که خود ویندوز برای این کار مهیا کرده استفاده کنی ..
پس اگه برنامه ای میخوای بنویسی که تو یه پنجره اجرا بشه و اون وسط بنویسه "Hello World " .باید دستور زیر رو وارد کنی :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تحت TC هست .. 5 مگابایت حجم فایله و یک دیکشنری کامله !

seyedmajid
02-04-2008, 20:06
جناب مستر متشکرم لطف کردی

iranian_genius
03-04-2008, 02:17
ممنون جناب مستر از توضیحات خوبتون .

تقریبا مشکل همین بود که بالا گفتید یه Consol Application باز کردم و دستور اجرا شد بدون ارور.

ولی من توی محیط ویندوز و توی پنجرۀ خود ویندوز میخوام اجرا بشه .

اون دستوری که توی پست قبل واسه محیط ویندوز گفتید نوشتم اما پیغام خطا داد و اجرا نشد !!!!!!
نمیدونم چرا.

قبل از این بحثها عزیز بگو که توی کدوم قسمت از گزینۀ File> New از بورلند C++ Borland 2006 باید این دستور رو تایپ کنم؟؟؟؟؟؟؟؟؟؟

شاید بازم مشکل از همین انتخاب اولیه باشه...


بازم ممنون از راهنماییهای خوبتون.

Master
03-04-2008, 06:15
ممنون جناب مستر از توضیحات خوبتون .

تقریبا مشکل همین بود که بالا گفتید یه Consol Application باز کردم و دستور اجرا شد بدون ارور.

ولی من توی محیط ویندوز و توی پنجرۀ خود ویندوز میخوام اجرا بشه .

اون دستوری که توی پست قبل واسه محیط ویندوز گفتید نوشتم اما پیغام خطا داد و اجرا نشد !!!!!!
نمیدونم چرا.

قبل از این بحثها عزیز بگو که توی کدوم قسمت از گزینۀ File> New از بورلند C++ Borland 2006 باید این دستور رو تایپ کنم؟؟؟؟؟؟؟؟؟؟

شاید بازم مشکل از همین انتخاب اولیه باشه...


بازم ممنون از راهنماییهای خوبتون.
سلام ..خواهش میکنم .. من بورلند 2006 ندارم .. ببین تو گزینه ها عنوانی با نام Windows Application داری یا نه ؟ ! اگه داری .انتخابش کن و این کد رو که بهت دادم بزن توش .. در غیر اینصورت ..تو بخش ویندورش بببین چیا داره بهم بگو من بهت بگم کدومه !

موفق باشید

iranian_genius
04-04-2008, 23:37
[سلام ..خواهش میکنم .. من بورلند 2006 ندارم .. ببین تو گزینه ها عنوانی با نام Windows Application داری یا نه ؟ ! اگه داری .انتخابش کن و این کد رو که بهت دادم بزن توش .. در غیر اینصورت ..تو بخش ویندورش بببین چیا داره بهم بگو من بهت بگم کدومه !

موفق باشید[/quote]

سلام . آهان . ممنون .

سعی میکنم گزینه های مختلف رو امتحان کنم .

نتیجه رو بگم .

مرسی.

ParDs
05-04-2008, 15:54
سلام. می خواستم کمی درباره ی شبیه سازی فوتبال با استفاده از سی پلاس پلاس برام توضیح بدین . آخه من از کدهای تیم مرصاد فقط کمی متوجه شدم . با تشکر

tina 20
06-04-2008, 17:35
salam.ye barname mikham ke meghdare e^x=1+(x/1!)+(x^2/2!_+..... ra mohasebe kone

yazi8766
07-04-2008, 23:48
سلام
من می خوام یه برنامه بنویسم که همه ی کارش با ماتریس هست(بدون هیچ محدودیتی از نظر ابعاد) آیا این کار توی C++ عملی هست؟ چطور؟

hamed_ozaki
10-04-2008, 06:24
salam,khobi? u mitoni for me barnameye tabdile tarikh miladi be shamsi ro be zanabe c or c++ peyda koni ya benevisi? mamnoon misham
for maile man send konid.

rf.ariyapoor
10-04-2008, 23:50
سلام
من می خوام یه برنامه بنویسم که همه ی کارش با ماتریس هست(بدون هیچ محدودیتی از نظر ابعاد) آیا این کار توی C++ عملی هست؟ چطور؟
سلام
شما چه کارهایی رو می خواید انجام بدید
در ضمن شما میتونی از sparse matrix استفاده کنی
من sparse matrix رو با عملیت جمع ضرب و ترانهاده پیاده سازی کردم که تو n محدودیت نداره در واقع اطلاعات matrix رو از تو یه فایل txt میخونه که یه برنامه هم واسه تولید داده نوشته شده
در ضمن فکر نکنم کاری تو c++ عملی نباشه

yazi8766
13-04-2008, 00:15
سلام
شما چه کارهایی رو می خواید انجام بدید
در ضمن شما میتونی از sparse matrix استفاده کنی
من sparse matrix رو با عملیت جمع ضرب و ترانهاده پیاده سازی کردم که تو n محدودیت نداره در واقع اطلاعات matrix رو از تو یه فایل txt میخونه که یه برنامه هم واسه تولید داده نوشته شده
در ضمن فکر نکنم کاری تو c++ عملی نباشه
می خوام یه برنامه برای تحلیل مدارهای الکتریکی بنویسم

mench
19-04-2008, 18:01
سلام
یه پیشنهاد:
لطفا هر کسی که برنامه ای را اینجا می نویسه این را هم بنویسه که این برنامه چه خروجی داره.
واقعا لطف می کنید اگر این کارو بکنید.

seyedmajid
21-04-2008, 09:23
سلام كسي اي بوك دايتل دايتل را به صورت pdfبراي ++cداره؟

mic_makarti
23-04-2008, 12:11
C++ How to Program, Fifth Edition

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

پسورد : -----book.blogfa.com

File Size: 10.30 MB

mohammadi1387
23-04-2008, 21:18
من برای همین حالا احتیاج به نوشتن توضیحات این برنامه دارم که این برنامه سورس بازی دوز هستش. خواهشمندم همین الآن برایم بفرستید.
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int chap(int vo[],int size)
{
int cu=0;
//araye a ke 3*3 boode va amale chape khaneha ro bar ohde darad
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cu=0;
for(int x=0;x<size;x++)
{
if(a[i][j]==vo[x])
{
cu++;
if(x%2==1)
{
if(j!=2)
cout<<"O ";
else
cout<<"O"<<endl;
}
else
{
if(j!=2)
cout<<"* ";
else
cout<<"*"<<endl;
}
}
}
if(cu==0)
{
if(j!=2)
cout<<a[i][j]<<" ";
else
cout<<a[i][j]<<endl;
}
}
}
cout<<endl;
}
bool sa(int a,int b)
{
if(a==0 || b==0)
return false;
if(a==5 || b==5)
return true;
if(a==1)
{
if(b==2 || b==3 || b==4 || b==7 ||b==9)
return true;
}
if(b==1)
{
if(a==2 || a==3 || a==4 || a==7 || a==9)
return true;
}
if(a==9)
{
if(b==7 || b==8 || b==3 || b==6 || b==1)
return true;
}
if(b==9)
{
if(a==7 || a==8 || a==3 || a==6 ||a==1)
return true;
}
if(a==4)
{
if(b==7)
return true;
if(b==6)
return true;
}
if(b==4)
{
if(a==7)
return true;
if(a==6)
return true;
}
if(a==2)
{
if(b==3 || b==8)
return true;
}
if(b==2)
{
if(a==3 || a==8)
return true;
}
if(a==3)
{
if(b==7 ||b==6)
return true;
}
if(b==3)
{
if(a==7||a==6)
return true;
}
if(a==7)
{
if(b==8)
return true;
}
if(b==7)
{
if(a==8)
return true;
}


return false;
}
int saw(int a,int b)
{
int r,ra;
if(a==5 )
{
if(b>a)
{
r=b-a;
ra=a-r;
}
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(b==5 )
{
if(a>b)
{
r=a-b;
ra=b-r;
}
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(a==1)
{
if(b==7 || b==3 || b==9 )
ra=(a+b)/2;
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(b==1)
{
if(a==7 || a==3 || a==9 )
ra=(a+b)/2;
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(a==2)
{
if(b==3)
return 1;
if(b==8)
return 5;
}
if(b==2)
{
if(a==3)
return 1;
if(a==8)
return 5;
}
if(a==3)
{
if(b==7 )
return 5;
if(b==9)
return 6;
if(b==6)
return 9;
}
if(b==3)
{
if(a==7 )
return 5;
if(a==9)
return 6;
if(a==6)
return 9;
}
if(a==4)
{
if(b==7)
return 4;
if(b==6)
return 5;
}
if(b==4)
{
if(a==7)
return 4;
if(a==6)
return 5;
}
if(a==6)
{
if(b==9)
return 3;
}
if(b==6)
{
if(a==9)
return 3;
}
if(a==7)
{
if(b==8 )
return 9;
if(b==9)
return 8;
}
if(b==7)
{
if(a==8 )
return 9;
if(a==9)
return 8;
}
if(b==8)
{
if(b==9)
return 7;
}
if(a==8)
{
if(a==9)
return 7;
}
}
int myEn(int a1, int a2 ,int a3,int a4,int a5,int b1,int b2,int b3,int b4)
{
int ra,o=0,o2=0;
if (sa(b1,b2)==true )
{
if(saw(b1,b2)!=a1 && saw(b1,b2)!=a2 && saw(b1,b2)!=a3 && saw(b1,b2)!=b1 && saw(b1,b2)!=b2 )
{
ra=saw(b1,b2);
return ra;
}
}
if(sa(b1,b3)==true)
{
if(saw(b1,b3)!=a1 && saw(b1,b3)!=a2 && saw(b1,b3)!=a3 && saw(b1,b3)!=a4 && saw(b1,b3)!=b1 && saw(b1,b3)!=b2 && saw(b1,b3)!=b3)
{
ra=saw(b1,b3);
return ra;
}
}
if(sa(b2,b3)==true)
{
if(saw(b2,b3)!=a1 && saw(b2,b3)!=a2 && saw(b2,b3)!=a3 && saw(b2,b3)!=a4 && saw(b2,b3)!=b1 && saw(b2,b3)!=b2 && saw(b2,b3)!=b3 )
{
ra=saw(b2,b3);
return ra;
}
}

if(a2==0)
{
srand(time(NULL));
ra=rand()%9+1;
if(ra==a1 && a1!=9)
ra++;
else if(ra==a1 && a1==9)
ra--;

return ra;

}
if(a3==0)
{
ra=saw(a2,a1);
if(ra==a1 || ra==a2 || ra==b1)
{
while(ra==a1 || ra==a2 || ra==b1)
ra=rand()%9+1;
}
return ra;
}
if(a4==0)
{
if( sa(a2,a3)==true)
{
ra=saw(a3,a2);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3)
{
o++;
return ra;
}

}
if(o==0)
{
ra=saw(a3,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 )
ra=rand()%9+1;
}
return ra;

}
}
if(a5==0)
{
if( sa(a4,a3)==true)
{
ra=saw(a4,a3);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3 && ra!=b3 && ra!=a4)
{
o++;
return ra;
}

}
if(o==0&& sa(a4,a2)==true)
{
ra=saw(a4,a2);
if(ra==a1 && ra==a2 && ra==b1 && ra==b2 && ra==a3&& ra!=b3 && ra!=a4)
{
o2++;
return ra;
}


}
if(o2==0)
{
ra=saw(a4,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 || ra==a4 || ra==b3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3|| ra==b3 || ra==a4)
ra=rand()%9+1;
}

return ra;
}
}
}
int wonsh(int my[],int size,int your[],int size2)
{
for(int i=1;i<6;i++)
{
if(your[i]==1)
{
for(int j=1;j<6;j++)
{
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==3)
return 1;
}
}
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
if(your[j]==5)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==5)
{
for(int j=1;j<6;j++)
{
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==6)
return 1;
}
}
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==8)
return 1;
}
}
if(your[j]==3)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
}
}
else if(your[i]==3)
{
for(int j=1;j<6;j++)
{
if(your[j]==6)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==7)
{
for(int j=1;j<6;j++)
{
if(your[j]==8)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
}
for(int i=1;i<5;i++)
{
if(my[i]==1)
{
for(int j=1;j<5;j++)
{
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==3)
return 2;
}
}
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
if(my[j]==5)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==5)
{
for(int j=1;j<5;j++)
{
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==6)
return 2;
}
}
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==8)
return 2;
}
}
if(my[j]==3)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
}
}
else if(my[i]==3)
{
for(int j=1;j<5;j++)
{
if(my[j]==6)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==7)
{
for(int j=1;j<5;j++)
{
if(my[j]==8)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
}
if(my[1]!=0 && my[2]!=0 && my[3]!=0 && my[4]!=0 && your[1]!=0 && your[2]!=0 && your[3]!=0 && your[4]!=0 && your[5]!=0)
return 5;
else
return 0;
}
int main()
{
int g=0;
while(g==0)
{
int i=-1,z=1,x=1,co=1;
int vo[9]={0};
int my[5]={0},your[6]={0};
chap( vo,9);
while(wonsh(my,5,your,6)==0)
{
co=1;
i++;
while(co!=0)
{
co=0;
cout<<"inter your choice:";
cin>>vo[i];
if(vo[i]>9 || vo[i]<1)
{
cout<<"in adad na motabar ast"<<endl;
co++;
}
else
{
for(int y=0;y<i;y++)
{
if(vo[y]==vo[i] )
{
cout<<"in khane ghablan entekhab shode.lotfan khane jadid entekhab konid."<<endl;
co++;
}
}
}
}
cout<<endl;
your[z]=vo[i];
i++;
z++;
vo[i]=myEn(your[1],your[2],your[3],your[4],your[5],my[1],my[2],my[3],my[4]);
my[x]=vo[i];
x++;
chap(vo,9);
}
if(wonsh(my,5,your,6)==1)
cout<<"Player won"<<endl;
if(wonsh(my,5,your,6)==2)
cout<<"computer won"<<endl;
if(wonsh(my,5,your,6)==5)
cout<<"mosavi"<<endl;
cout<<endl<<"pres any number to quit"<<endl<<"pres 0 to retry"<<endl;
cin>>g;
cout<<endl;
}
return 0;

}

mohammadi1387
23-04-2008, 22:16
خواهشمندم توضیحات کامل(خط به خط) این کد را که کد بازی دوز در ++C هستش را به همراه اینکه چطوری می تونم کدی دنبالش بنویسم که بشه مهره هاش رو تغییر بدم برایم بنویسید.خواهشمندم فوراَ کمکم کنید. متشکرم.
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int chap(int vo[],int size)
{
int cu=0;
//araye a ke 3*3 boode va amale chape khaneha ro bar ohde darad
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cu=0;
for(int x=0;x<size;x++)
{
if(a[i][j]==vo[x])
{
cu++;
if(x%2==1)
{
if(j!=2)
cout<<"O ";
else
cout<<"O"<<endl;
}
else
{
if(j!=2)
cout<<"* ";
else
cout<<"*"<<endl;
}
}

}
if(cu==0)
{
if(j!=2)
cout<<a[i][j]<<" ";
else
cout<<a[i][j]<<endl;
}
}
}
cout<<endl;
}
bool sa(int a,int b)
{
if(a==0 || b==0)
return false;
if(a==5 || b==5)
return true;
if(a==1)
{
if(b==2 || b==3 || b==4 || b==7 ||b==9)
return true;
}
if(b==1)
{
if(a==2 || a==3 || a==4 || a==7 || a==9)
return true;
}
if(a==9)
{
if(b==7 || b==8 || b==3 || b==6 || b==1)
return true;
}
if(b==9)
{
if(a==7 || a==8 || a==3 || a==6 ||a==1)
return true;
}
if(a==4)
{
if(b==7)
return true;
if(b==6)
return true;
}
if(b==4)
{
if(a==7)
return true;
if(a==6)
return true;
}
if(a==2)
{
if(b==3 || b==8)
return true;
}
if(b==2)
{
if(a==3 || a==8)
return true;
}
if(a==3)
{
if(b==7 ||b==6)
return true;
}
if(b==3)
{
if(a==7||a==6)
return true;
}
if(a==7)
{
if(b==8)
return true;
}
if(b==7)
{
if(a==8)
return true;
}


return false;
}
int saw(int a,int b)
{
int r,ra;
if(a==5 )
{
if(b>a)
{
r=b-a;
ra=a-r;
}
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(b==5 )
{
if(a>b)
{
r=a-b;
ra=b-r;
}
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(a==1)
{
if(b==7 || b==3 || b==9 )
ra=(a+b)/2;
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(b==1)
{
if(a==7 || a==3 || a==9 )
ra=(a+b)/2;
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(a==2)
{
if(b==3)
return 1;
if(b==8)
return 5;
}
if(b==2)
{
if(a==3)
return 1;
if(a==8)
return 5;
}
if(a==3)
{
if(b==7 )
return 5;
if(b==9)
return 6;
if(b==6)
return 9;
}
if(b==3)
{
if(a==7 )
return 5;
if(a==9)
return 6;
if(a==6)
return 9;
}
if(a==4)
{
if(b==7)
return 4;
if(b==6)
return 5;
}
if(b==4)
{
if(a==7)
return 4;
if(a==6)
return 5;
}
if(a==6)
{
if(b==9)
return 3;
}
if(b==6)
{
if(a==9)
return 3;
}
if(a==7)
{
if(b==8 )
return 9;
if(b==9)
return 8;
}
if(b==7)
{
if(a==8 )
return 9;
if(a==9)
return 8;
}
if(b==8)
{
if(b==9)
return 7;
}
if(a==8)
{
if(a==9)
return 7;
}
}
int myEn(int a1, int a2 ,int a3,int a4,int a5,int b1,int b2,int b3,int b4)
{
int ra,o=0,o2=0;
if (sa(b1,b2)==true )
{
if(saw(b1,b2)!=a1 && saw(b1,b2)!=a2 && saw(b1,b2)!=a3 && saw(b1,b2)!=b1 && saw(b1,b2)!=b2 )
{
ra=saw(b1,b2);
return ra;
}
}
if(sa(b1,b3)==true)
{
if(saw(b1,b3)!=a1 && saw(b1,b3)!=a2 && saw(b1,b3)!=a3 && saw(b1,b3)!=a4 && saw(b1,b3)!=b1 && saw(b1,b3)!=b2 && saw(b1,b3)!=b3)
{
ra=saw(b1,b3);
return ra;
}
}
if(sa(b2,b3)==true)
{
if(saw(b2,b3)!=a1 && saw(b2,b3)!=a2 && saw(b2,b3)!=a3 && saw(b2,b3)!=a4 && saw(b2,b3)!=b1 && saw(b2,b3)!=b2 && saw(b2,b3)!=b3 )
{
ra=saw(b2,b3);
return ra;
}
}

if(a2==0)
{
srand(time(NULL));
ra=rand()%9+1;
if(ra==a1 && a1!=9)
ra++;
else if(ra==a1 && a1==9)
ra--;

return ra;

}
if(a3==0)
{
ra=saw(a2,a1);
if(ra==a1 || ra==a2 || ra==b1)
{
while(ra==a1 || ra==a2 || ra==b1)
ra=rand()%9+1;
}
return ra;
}
if(a4==0)
{
if( sa(a2,a3)==true)
{
ra=saw(a3,a2);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3)
{
o++;
return ra;
}

}
if(o==0)
{
ra=saw(a3,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 )
ra=rand()%9+1;
}
return ra;

}
}
if(a5==0)
{
if( sa(a4,a3)==true)
{
ra=saw(a4,a3);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3 && ra!=b3 && ra!=a4)
{
o++;
return ra;
}

}
if(o==0&& sa(a4,a2)==true)
{
ra=saw(a4,a2);
if(ra==a1 && ra==a2 && ra==b1 && ra==b2 && ra==a3&& ra!=b3 && ra!=a4)
{
o2++;
return ra;
}


}
if(o2==0)
{
ra=saw(a4,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 || ra==a4 || ra==b3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3|| ra==b3 || ra==a4)
ra=rand()%9+1;
}

return ra;
}
}
}
int wonsh(int my[],int size,int your[],int size2)
{
for(int i=1;i<6;i++)
{
if(your[i]==1)
{
for(int j=1;j<6;j++)
{
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==3)
return 1;
}
}
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
if(your[j]==5)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==5)
{
for(int j=1;j<6;j++)
{
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==6)
return 1;
}
}
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==8)
return 1;
}
}
if(your[j]==3)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
}
}
else if(your[i]==3)
{
for(int j=1;j<6;j++)
{
if(your[j]==6)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==7)
{
for(int j=1;j<6;j++)
{
if(your[j]==8)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
}
for(int i=1;i<5;i++)
{
if(my[i]==1)
{
for(int j=1;j<5;j++)
{
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==3)
return 2;
}
}
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
if(my[j]==5)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==5)
{
for(int j=1;j<5;j++)
{
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==6)
return 2;
}
}
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==8)
return 2;
}
}
if(my[j]==3)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
}
}
else if(my[i]==3)
{
for(int j=1;j<5;j++)
{
if(my[j]==6)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==7)
{
for(int j=1;j<5;j++)
{
if(my[j]==8)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
}
if(my[1]!=0 && my[2]!=0 && my[3]!=0 && my[4]!=0 && your[1]!=0 && your[2]!=0 && your[3]!=0 && your[4]!=0 && your[5]!=0)
return 5;
else
return 0;
}
int main()
{
int g=0;
while(g==0)
{
int i=-1,z=1,x=1,co=1;
int vo[9]={0};
int my[5]={0},your[6]={0};
chap( vo,9);
while(wonsh(my,5,your,6)==0)
{
co=1;
i++;
while(co!=0)
{
co=0;
cout<<"inter your choice:";
cin>>vo[i];
if(vo[i]>9 || vo[i]<1)
{
cout<<"in adad na motabar ast"<<endl;
co++;
}
else
{
for(int y=0;y<i;y++)
{
if(vo[y]==vo[i] )
{
cout<<"in khane ghablan entekhab shode.lotfan khane jadid entekhab konid."<<endl;
co++;
}
}
}
}
cout<<endl;
your[z]=vo[i];
i++;
z++;
vo[i]=myEn(your[1],your[2],your[3],your[4],your[5],my[1],my[2],my[3],my[4]);
my[x]=vo[i];
x++;
chap(vo,9);
}
if(wonsh(my,5,your,6)==1)
cout<<"Player won"<<endl;
if(wonsh(my,5,your,6)==2)
cout<<"computer won"<<endl;
if(wonsh(my,5,your,6)==5)
cout<<"mosavi"<<endl;
cout<<endl<<"pres any number to quit"<<endl<<"pres 0 to retry"<<endl;
cin>>g;
cout<<endl;
}
return 0;

}
معذرت می خواهم که از راست نوشته شده. آخه نتونستم درستش کنم.

mohammadi1387
24-04-2008, 10:13
خواهشمندم لطفاَ مرا راهنمایی کنید که در بازی دوز در ++C چگونه می توانم به کد زیر کدی را اضافه کنم که اولاَ فقط سه مهره در دوز بتواند وجود داشته باشد و ثانیاَ کاربر بعد از وارد کردن هر سه مهره بتواند مهره هایش را در صفحه حرکت و دهد همینطور کامپیوتر.
[CODE]
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int chap(int vo[],int size)
{
int cu=0;
//araye a ke 3*3 boode va amale chape khaneha ro bar ohde darad
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cu=0;
for(int x=0;x<size;x++)
{
if(a[i][j]==vo[x])
{
cu++;
if(x%2==1)
{
if(j!=2)
cout<<"O ";
else
cout<<"O"<<endl;
}
else
{
if(j!=2)
cout<<"* ";
else
cout<<"*"<<endl;
}
}

}
if(cu==0)
{
if(j!=2)
cout<<a[i][j]<<" ";
else
cout<<a[i][j]<<endl;
}
}
}
cout<<endl;
}
bool sa(int a,int b)
{
if(a==0 || b==0)
return false;
if(a==5 || b==5)
return true;
if(a==1)
{
if(b==2 || b==3 || b==4 || b==7 ||b==9)
return true;
}
if(b==1)
{
if(a==2 || a==3 || a==4 || a==7 || a==9)
return true;
}
if(a==9)
{
if(b==7 || b==8 || b==3 || b==6 || b==1)
return true;
}
if(b==9)
{
if(a==7 || a==8 || a==3 || a==6 ||a==1)
return true;
}
if(a==4)
{
if(b==7)
return true;
if(b==6)
return true;
}
if(b==4)
{
if(a==7)
return true;
if(a==6)
return true;
}
if(a==2)
{
if(b==3 || b==8)
return true;
}
if(b==2)
{
if(a==3 || a==8)
return true;
}
if(a==3)
{
if(b==7 ||b==6)
return true;
}
if(b==3)
{
if(a==7||a==6)
return true;
}
if(a==7)
{
if(b==8)
return true;
}
if(b==7)
{
if(a==8)
return true;
}


return false;
}
int saw(int a,int b)
{
int r,ra;
if(a==5 )
{
if(b>a)
{
r=b-a;
ra=a-r;
}
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(b==5 )
{
if(a>b)
{
r=a-b;
ra=b-r;
}
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(a==1)
{
if(b==7 || b==3 || b==9 )
ra=(a+b)/2;
else
{
r=b-a;
ra=b+r;
}
return ra;
}
if(b==1)
{
if(a==7 || a==3 || a==9 )
ra=(a+b)/2;
else
{
r=a-b;
ra=a+r;
}
return ra;
}
if(a==2)
{
if(b==3)
return 1;
if(b==8)
return 5;
}
if(b==2)
{
if(a==3)
return 1;
if(a==8)
return 5;
}
if(a==3)
{
if(b==7 )
return 5;
if(b==9)
return 6;
if(b==6)
return 9;
}
if(b==3)
{
if(a==7 )
return 5;
if(a==9)
return 6;
if(a==6)
return 9;
}
if(a==4)
{
if(b==7)
return 4;
if(b==6)
return 5;
}
if(b==4)
{
if(a==7)
return 4;
if(a==6)
return 5;
}
if(a==6)
{
if(b==9)
return 3;
}
if(b==6)
{
if(a==9)
return 3;
}
if(a==7)
{
if(b==8 )
return 9;
if(b==9)
return 8;
}
if(b==7)
{
if(a==8 )
return 9;
if(a==9)
return 8;
}
if(b==8)
{
if(b==9)
return 7;
}
if(a==8)
{
if(a==9)
return 7;
}
}
int myEn(int a1, int a2 ,int a3,int a4,int a5,int b1,int b2,int b3,int b4)
{
int ra,o=0,o2=0;
if (sa(b1,b2)==true )
{
if(saw(b1,b2)!=a1 && saw(b1,b2)!=a2 && saw(b1,b2)!=a3 && saw(b1,b2)!=b1 && saw(b1,b2)!=b2 )
{
ra=saw(b1,b2);
return ra;
}
}
if(sa(b1,b3)==true)
{
if(saw(b1,b3)!=a1 && saw(b1,b3)!=a2 && saw(b1,b3)!=a3 && saw(b1,b3)!=a4 && saw(b1,b3)!=b1 && saw(b1,b3)!=b2 && saw(b1,b3)!=b3)
{
ra=saw(b1,b3);
return ra;
}
}
if(sa(b2,b3)==true)
{
if(saw(b2,b3)!=a1 && saw(b2,b3)!=a2 && saw(b2,b3)!=a3 && saw(b2,b3)!=a4 && saw(b2,b3)!=b1 && saw(b2,b3)!=b2 && saw(b2,b3)!=b3 )
{
ra=saw(b2,b3);
return ra;
}
}

if(a2==0)
{
srand(time(NULL));
ra=rand()%9+1;
if(ra==a1 && a1!=9)
ra++;
else if(ra==a1 && a1==9)
ra--;

return ra;

}
if(a3==0)
{
ra=saw(a2,a1);
if(ra==a1 || ra==a2 || ra==b1)
{
while(ra==a1 || ra==a2 || ra==b1)
ra=rand()%9+1;
}
return ra;
}
if(a4==0)
{
if( sa(a2,a3)==true)
{
ra=saw(a3,a2);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3)
{
o++;
return ra;
}

}
if(o==0)
{
ra=saw(a3,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 )
ra=rand()%9+1;
}
return ra;

}
}
if(a5==0)
{
if( sa(a4,a3)==true)
{
ra=saw(a4,a3);
if(ra!=a1 && ra!=a2 && ra!=b1 && ra!=b2 && ra!=a3 && ra!=b3 && ra!=a4)
{
o++;
return ra;
}

}
if(o==0&& sa(a4,a2)==true)
{
ra=saw(a4,a2);
if(ra==a1 && ra==a2 && ra==b1 && ra==b2 && ra==a3&& ra!=b3 && ra!=a4)
{
o2++;
return ra;
}


}
if(o2==0)
{
ra=saw(a4,a1);
if(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3 || ra==a4 || ra==b3)
{
while(ra==a1 || ra==a2 || ra==b1 || ra==b2 || ra==a3|| ra==b3 || ra==a4)
ra=rand()%9+1;
}

return ra;
}
}
}
int wonsh(int my[],int size,int your[],int size2)
{
for(int i=1;i<6;i++)
{
if(your[i]==1)
{
for(int j=1;j<6;j++)
{
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==3)
return 1;
}
}
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
if(your[j]==5)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==5)
{
for(int j=1;j<6;j++)
{
if(your[j]==4)
{
for(int x=0;x<6;x++)
{
if(your[x]==6)
return 1;
}
}
if(your[j]==2)
{
for(int x=0;x<6;x++)
{
if(your[x]==8)
return 1;
}
}
if(your[j]==3)
{
for(int x=0;x<6;x++)
{
if(your[x]==7)
return 1;
}
}
}
}
else if(your[i]==3)
{
for(int j=1;j<6;j++)
{
if(your[j]==6)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
else if(your[i]==7)
{
for(int j=1;j<6;j++)
{
if(your[j]==8)
{
for(int x=0;x<6;x++)
{
if(your[x]==9)
return 1;
}
}
}
}
}
for(int i=1;i<5;i++)
{
if(my[i]==1)
{
for(int j=1;j<5;j++)
{
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==3)
return 2;
}
}
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
if(my[j]==5)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==5)
{
for(int j=1;j<5;j++)
{
if(my[j]==4)
{
for(int x=0;x<5;x++)
{
if(my[x]==6)
return 2;
}
}
if(my[j]==2)
{
for(int x=0;x<5;x++)
{
if(my[x]==8)
return 2;
}
}
if(my[j]==3)
{
for(int x=0;x<5;x++)
{
if(my[x]==7)
return 2;
}
}
}
}
else if(my[i]==3)
{
for(int j=1;j<5;j++)
{
if(my[j]==6)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
else if(my[i]==7)
{
for(int j=1;j<5;j++)
{
if(my[j]==8)
{
for(int x=0;x<5;x++)
{
if(my[x]==9)
return 2;
}
}
}
}
}
if(my[1]!=0 && my[2]!=0 && my[3]!=0 && my[4]!=0 && your[1]!=0 && your[2]!=0 && your[3]!=0 && your[4]!=0 && your[5]!=0)
return 5;
else
return 0;
}
int main()
{
int g=0;
while(g==0)
{
int i=-1,z=1,x=1,co=1;
int vo[9]={0};
int my[5]={0},your[6]={0};
chap( vo,9);
while(wonsh(my,5,your,6)==0)
{
co=1;
i++;
while(co!=0)
{
co=0;
cout<<"inter your choice:";
cin>>vo[i];
if(vo[i]>9 || vo[i]<1)
{
cout<<"in adad na motabar ast"<<endl;
co++;
}
else
{
for(int y=0;y<i;y++)
{
if(vo[y]==vo[i] )
{
cout<<"in khane ghablan entekhab shode.lotfan khane jadid entekhab konid."<<endl;
co++;
}
}
}
}
cout<<endl;
your[z]=vo[i];
i++;
z++;
vo[i]=myEn(your[1],your[2],your[3],your[4],your[5],my[1],my[2],my[3],my[4]);
my[x]=vo[i];
x++;
chap(vo,9);
}
if(wonsh(my,5,your,6)==1)
cout<<"Player won"<<endl;
if(wonsh(my,5,your,6)==2)
cout<<"computer won"<<endl;
if(wonsh(my,5,your,6)==5)
cout<<"mosavi"<<endl;
cout<<endl<<"pres any number to quit"<<endl<<"pres 0 to retry"<<endl;
cin>>g;
cout<<endl;
}
return 0;

}
[CODE]

mohammadi1387
24-04-2008, 10:21
دو خط کد زیر در زبان ++C هر کدام برای چه کاری انجام می شوند؟
include<stdlib.h#
include<time.h#

mohammadi1387
24-04-2008, 23:08
لطف کنید یه سری به پیغام های mohammadi1387 در قسمت C (برنامه نویسی به زبان C ) بزنید.
از لطف شما متشکرم.

hamid_kha
25-04-2008, 09:48
.................................................. .............به نام خدا.........................................

سلام...


فوری....من دانشجوی رشته کامپیوتر هستم و استادمون به ما یک برنامه داد که به شکل زیر است:

تابعی بنویسید که یک رشته عددی را دریافت کند و عدد معادل با آن را بنویسد؟

برنامه به زبان c++ باشد.
خروجی تابع از نوع double
(لطفا مرا راهنمایی کنید)

maryam_masiha
08-05-2008, 12:37
یه برنامه می خوام که تابعی به نام() To Binary داشته باشه و یک عدد دهدهی رو به تابع ارسال کرده ،آن را به صورت دودویی نمایش دهد.:41:

info.bndcom
09-05-2008, 10:51
سلام دوستان! ممنون میشم اگه منو تو این برنامه راهنمایی کنین و بگین مشکلش چیه! اگه میشه درستشو هم برام بزارین!بازم ممنون!:11::11:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Genjo
10-05-2008, 10:37
سلام به همه دوستان

چطوری باید تو تنظیمات سایتی که ساختم , عکسها به صورت اوتوماتیک به اون اندازه ای که تنظیم شده (ابعاد) دربیاد ....نه اینکه اون اندازه عکس رو پیدا و آواتور کنم.

مثلا در تنظیمات آواتور نوشتم که ابعاد 200.170 باشه ولی منظور از این عمل این بود که عکس ها در نهایت بعد از اینکه توسط شخص مورد نظر آپلود شد اینگونه باشه. نه اینکه عکس در ابتدا همین اندازه باشه.

مثلا همین فروم : هر عکسی رو که میخوایم بهش میدیم و سپس به این اندازه تبدیل میشه.(فکر کنم باید تو تنظیمات رباتهای سایت باشه) ولی نمیدونم چه جوری یا چطور؟؟؟

اگه کسی رو میشناسید که وارده بگید یا تاپیکی که دراین مورد است(من که چیزی پیدا نکردم)چون اصلا نمیدونم باید دنباله چی باشم)

sogol attari
12-05-2008, 15:31
سلام
من دانشجوی کامپیوتر هستم
توی نوشتن یه برنامه در سی پلاس پلاس با یه ارور مواجه شدم که بدجوری درگیرم کرده
هیچ جای برنامه ام ارور نمی ده فقط وقتی برای آغاز بلاک از} استفاده می کنم ارور می ده که

declaration terminated incorrectly
لطفا راهنماییم کنید برنامه ام کاملا درسته اما روی این خط ارور می ده چی کار کنم