کی می خواد ++c یاد بگیره

shr6557

Member
علی آقا فکر کنم شما اگر جواب تون رو با این که غلط باشه بنویسید که دیگران هم ببینند و نظر بدین بد نباشه
 
جواب تمرین 1.

1. تحلیل مسئله :
ما در اینجا صورت مسئله را ریز کرده و قسمت ،قسمت پیش میریم :)
خوب ما تنها اجازه داریم 2 تا متغیر بگیریم، پس حالت اینکه متغیر سوم با نام temp را برای جابه جایی مقادیر در نظر بگیریم منتفی است . ( در حالتی که اجازه داشتیم از 3 متغیر استفاده کنیم ابتدا temp=a ، سپس a=b و در پایان b=temp میگرفتیم )
پس می آییم از یک روش دیگه بریم جلو . الگوریتمی که من در نظر گرفتم و فکر کنم معروف ترین هم باشه به این صورت است که پس از گرفتن متغیرها جمع هر دو را در یکی میریزد. (فرض کنیم a=10 و b=15 باشد و در نتیجه اگر مجموع را در a بریزیم داریم : a=10+15=25 )
کد:
[left]
a=a+b;
[/left]
سپس یکی(در اینجا b ) را از مجموع(a) کم کرده و حاصل را در خودش میریزیم ( در این حالت یکی از مقادیر جابه جا شده است. در اینجا b=a-b=25-15=10 )
کد:
[left]
b=a-b;
[/left]
پس از این مرحله مجموع (a) را از مقدار جا به جا شده ی اول (b) کم کرده و a نیز جا به جا میگردد. (a=a-b=25-10=15)
کد:
[left]
a=a-b;
[/left]

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

2.کد برنامه در ++C :
کد:
[left]
#include<iostream.h>
#include<conio.h>
int main()
{
int a,b;
clrscr();
//clear screen
cout<<"Enter your first entery";
cin>>a;
cout<<"Enter your second entery";
cin>>b;
a=a+b;
b=a-b;
a=a-b;
getch();
return 0;
}
[/left]
 

saalek110

Well-Known Member

من در اين روش اول در متغير اول مجموع را قرار دادم. بعد اين مجموع را از متغير دوم كم كردم و بعد با منفي ضرب كردن در آن و تفريق اعداد را با هم جابجا كردم. چون ديگه روش اشتباهي است زياد توصيح نمي دهم.
کد:
[left]
#include"stdio.h"
main()
{
int a;
int b;
printf("enter a\n ");
scanf("%d",&a);
printf("enter b");
scanf("%d",&b);
     a=a+b;
     b=b-a; // b=b-(a+b)  >>   b=-a
     b=-b ; // >> b=a
     a=a-b; // >> a=b

   printf(" a= " );
	  printf(" %d ", a );
   printf(" b= " );
     printf(" %d ", b );
	   return 0;
   }
[/left]
روش دومي هم كه به ذهنم مي رسه اينه كه اسم دو متغير را فقط عوض كنيم. چون متغير فقط يك نام است به قسمتي از حافظه. مثل يك برچسب است. خوب وقتي برچسب ها را عوض كنيم ، انگار جابجا شده اند. مثل اينه كه روي دو لوله آزمايش نوشته شده باشه الف و ب . اگر برچسبها را عوض كنيم ، انگار محتويات را عوض كرده ايم. ولي فعلا راه عوض كردن اسم متغيرها را نمي دانم.

.
 

zfarhad2003

Member
خوب واقعا اینجا بحث جالبی راه افتاده و من هم خوشحال می شم که بتونم توی این بحث مشارکت داشته باشم.

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

در مورد این سوالی هم که پرسیدین فکر کنم جوابی که stranger_in_rain داد در مورد دو مقدار عددی کاملا صحیحه ولی اگه این دو مقدار عدد نباشن و چیز دیگری باشن به نظرم بدون استفاده از متغیر سومی انجام چنین کاری ممکن نیست.
 

shr6557

Member
خوب من خوشحالم که داره تاپیک راه می افته
جواب سوال همونه که دو دوکه ستمون بیان کردن
ولی به آقا فرهاد بگم که این کار رو برای متغیر های غیر عدد هم با یک الگوریتم دیگه می شه کرد ولی چون نیاز به دانستنه یک سری مطالب داره الان مطرح نمی کنم سواله خوبی هست بعدا میگم
اولا از همه خواهش می کنم که هر کی سوال خوبی برای مطرح کردن داره مطرح کنه مثل حرف همین عزیر که سوالی رو خلق کرد
ولی سوال این بار یه سوال شاید معروف باشه ولی هدفه ما این هست که چندین الگوریتم برای اینکار پیدا کنیم
من خودم حداقل سه تا الگوریتم می دونم ولی خوب شاید به کمک شما بیشتر هم پیدا بشه
آقا می خوایم یه برنامه بنویسم که ب م م دو عدد را حساب کنه
تا چهار تا الگوریتم برای این سوال پیدا نشه از این سوال رد نمی شیم
سه تا رو من می دونم حتما یکی دیگه هم پیدا می شه
خداحافظ
 

aira

Member
اينجوري نميشه كه...

يك انتقادي داشتم....
چرا اين قدر تاپيك باز ميكنيد و هي ميگيد سي ياد بكيريم؟؟؟؟
يه تاپيك باز شد آموزش سي و چندتا مقاله توش گذاشتيد بعد تاپيك كي پايه هست سي ياد بگيريم باز شد الآنم كه اين تاپيك باز شده.من ميگم هركاري ميخواين بكنيد تو يه جا باشه نه هزارجا البته جناب مدير بايد توجه داشته باشد.
به نظر من كسي كه ميخواد چيزي رو آموزش بده بايد اينطور فكر كنه كه همه صفر و زير صفر هستند؛به نظر من براي آموزش سي همون تاپيك قبلي رو ادامه بديد و وقتي كه سي تموم شد بريد سي ++ و بالاتر يه هو نپريد 10 تا پله اونورتر
سلامت و موفق باشيد
 
هدفمند کنید اینجوری اصلا نمیشه !!!

خوب من میخوام یه صحبتی بکنم. اولا به آریا بگم C و ++c انقدر فرقشون کمه که حد نداره ، پس نگران این مسئله نباشید و بنظرم با ++c شروع بکنید بهتر هم هستش . در ضمن آریا جان نگران نباش با همین دانشی که از بخش C و خانواده ی آن کسب کردیم(تا الان) میتونیم این مسئله هایی رو که مطرح شده حل کنیم . پس نگران این نباش. اما یک چیزی هست که ما میخواهیم یک سری تغییرات ایجاد کنیم که همه بتونیم راحت تر پیشرفت کنیم. از جمله افزودن یک سری چیزها از جمله گروه و ... برای ارتباط تنگاتنگ تر باهم.
اما در یک زمینه حق با شماست. اسم این تاپیک رو باید عوض کنند و بگذارند "بخش حل مسئله ی C و خانواده ی آن " یا چیزی شبیه این که مفهوم رو برسونه . ما الان داریم با مسئله کار میکنیم ولی مقاله منتشر نمیکنیم ( کاری که در C و خانواده ی آن میکردیم ، و باید ادامه پیدا کنه . من خودم در همه ی پست هام هم C رو مطرح کردم هم ++c رو ). من به شما حق میدم که جا خورده باشی از فعالیت اینجا ولی کمک کنید که بتونیم یک شکل خوب ( نه سر در گمی الان ) به این آموزش بدهیم !!!

نوید جان (مدیر گروه ) یک پیشنهاد دارم که اگر لطف کنید و برای C یک زیر گروه تشکیل بدید که سه مبحث "آموزش C و خانواده ی آن " ، "کی پایه است با هم C یاد بگیریم " و "کی پایه است با هم ++c یاد بگیریم ( که اگه موافقت کنید و اسمش رو بزاریم بخش حل مسئله) " را در انجا بگذارید یک قدم اساسی در شکل دادن به این حرکت خوبی که شکل گرفته و تا اینجا هر جوری بوده پیش اومده ، برداشته ایم. حالا بحث گروه و غیره ( که خیلی میتونه مفید باشه ) میمونه تا وقتی شما موافقت کنید.

با سپاس .
شهاب.
 

saalek110

Well-Known Member
با سلام
با فرمايشات استرانگر موافقم. علاوه بر آن چيزي كه ما الان داريم تمرين مي كنيم، سطحش در سطح مقالاتي است كه دوستان ارائه داده اند
امروز شنبه، نيمي از برنامه را تمام كرده ام. ب م م را.
.
 
آخرین ویرایش:

saalek110

Well-Known Member
يك پيشنهاد. بهتر نيست 2 تاپيك ادغام بشه تا بحث ها و حساسيتها تمام بشه.
؟؟
 
شکل بگیریم ...

سلام.
به نظر من ادغام دو تاپیک مناسب نیست. یک کار بکنیم تا کار حسابی شکل بگیره. در این تاپیک آموزش c مقالات خانواده ی c را میگذاریم. اما همه باید مشارکت کنند حتی shr . اما در این تاپیک که اسمش الان ++C هستش که امیدوارم بشه بخش حل مسئله ، تنها جواب سوالات، صورت سوالات و بحث های پیرامون آنها را در بر خواهد داشت. و در پایان در بخش کی پایه است با هم C یاد بگیریم صحبت های عمومی پیرامون این موضوع میپردازیم.
فقط saleek جان شما shrr را توجیه کن که چطور باید مقاله در بخش آموزش C منتشر کنه.
در ضمن بار دیگر از نوید میخوام یک لطفی بکند و به ما یک بخش اختصاصی برای C بده :)
با سپاس
شهاب.
 

MnavidM

Active Member
stranger_in_rain گفت:
سلام.
به نظر من ادغام دو تاپیک مناسب نیست. یک کار بکنیم تا کار حسابی شکل بگیره. در این تاپیک آموزش c مقالات خانواده ی c را میگذاریم. اما همه باید مشارکت کنند حتی shr . اما در این تاپیک که اسمش الان ++C هستش که امیدوارم بشه بخش حل مسئله ، تنها جواب سوالات، صورت سوالات و بحث های پیرامون آنها را در بر خواهد داشت. و در پایان در بخش کی پایه است با هم C یاد بگیریم صحبت های عمومی پیرامون این موضوع میپردازیم.
فقط saleek جان شما shrr را توجیه کن که چطور باید مقاله در بخش آموزش C منتشر کنه.
در ضمن بار دیگر از نوید میخوام یک لطفی بکند و به ما یک بخش اختصاصی برای C بده :)
با سپاس
شهاب.
سلام.

شهاب جان در این مورد باید با مدیران اصلی سایت صحبت کنم.

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

موفق باشید.
نوید.
 

MnavidM

Active Member
سلام.

طی صحبتی که چند دقیقه پیش با مدیر اصلی سایت (مجید) داشتم :

این سایت در اصل برای کارهای گرافیکی و تحت وب و مواردی در این مورد می باشد.

و اگر به فرض بخواهیم یک انجمن برای C بزنیم چند وقت دیگه درخواست انجمن مخصوص دلفی Vb و ... می شود

که مقدور نمی باشد.

______________________

اگر پیشنهاد دیگه ای دارید بفرمایید.

موفق باشید.
نوید.
 

saalek110

Well-Known Member

شرح برنامه:
من اول عدد كوچكتر راا با استفاده از تمرين قبلي ، در a قرار دادم.
بعد عدد كوچكتر كه a است را يكي ، يكي كم كردم و تست كردم كه آيا اين اعداد مقسوم عليه a و b هستند يا نه.
وقتي كه عدد I مقسوم عليه هر دو بود ، آن را روي صفحه چاپ كردم و I را 1 كردم تا حلقه خاتمه يابد.
کد:
[left]
#include"stdio.h"
main()
{
int a,b,i,g,h;
     printf("enter a\n ");
     scanf("%d",&a);
     printf("enter b\n");
     scanf("%d",&b);
 if(a>b)
 {
     a=a+b;
     b=b-a; // b=b-(a+b)  >>   b=-a
     b=-b ; // >> b=a
     a=a-b; // >> a=b c=a; d=b;
 }
for (i=a ; i>0 ; i--)
{
g=a%i; h=b%i;

if (g<1 & h<1)
{
printf("\n  be mim mim=",i);
   printf(" %d\n ", i );
   i=1;
}
 }
	   return 0;
   }
[/left]
.
 
آخرین ویرایش:

shr6557

Member
Doste گفت:
سلام.

شهاب جان در این مورد باید با مدیران اصلی سایت صحبت کنم.

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

موفق باشید.
نوید.
سلام
من حميد هستم
اقا نويد من نفهميدم عيبه اين چي هست كه يه انجمن به نام c ايجاد بشه و بعدش يه انجمن به نام vb و تا آخر وقتي اين كار داره به صورت خود جوش اتفاق مي افته كه بدون اينكه مسئولين سايت هزينه اين انجام بدن ( يا هزنيه نه چندان زياد) داره يك انجمن توسط اعضا معمولي سايت به وجود مي ياد و اداره هم ميشه اگر شما اين كار رو نكنيد بالاخر يه روزي يكي پيدا مي شه و اين كار رو مي كنه و سايتي رو مي زنه كه اين امكان رو براي كاربرانش فراهم بياره و يك سري مخاطب رو به خودش جلب مي كنه اين در حالي هست كه همه اين مخاطبين رو شما مي توانسيد اين دور هم جمع كنيد
فكر مي كنم اين كه انجمن c‌تشكيل بشه و شايد در ادامه انجمن هاي برنامه نويسي ديگه يك مزيت بزرگ براي سايت مجيد آنلان مي تونه باشه
منتظر نظروتون هستم
 

shr6557

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

saalek110

Well-Known Member
من بايد صبر كنم تا شما بحث خود را بفرماييد ولي ببخشيد يك جمله فقط بگم.
اگه بزرگ و كوچك تعيين نشه ...به نظر شما اعداد بيشتري چك نخواهد شد. فرض كنيد دو عدد در حد ميليارد باشند.
آيا برنامه من اين جوري سريعتر اجرا نميشه.
حالا يك چيزي گفتم ها.
من مبتدي ام. اينا رو گفتم كه بيشتر توضيح بدهيد. ممنون.
 

shr6557

Member
نگاه کنید یکی از ویژگی ها ی یک برنامه خوب این است که بتونه هدفو با تعریف کمتری متغیر ها به انجام برسونه
1 - تعریف متغیر یعنی اشغال حافظه کامپیوتر شاید بگین خوب الان که دیگه همه کامپیوتر ها یه عالمه فضا دارن مسئله ای نیست ، خوب این حرف حرفه اشتباهی هست چرا که شما باید توجه داشته باشید که اولا قرار نیست که همیشه یک برنامه کوچیک بنویسید دوما در یک کامپیوتر تنها برنامه شما نیست که در حال اجرا می باشد در خیلی از مواقع کامپیوتر خود به خود حافظه رم کم دارد که تازه برنامه شما را نیز باید اجرا کند
2- وجود متغیر اضافی یعنی بزرگ شدن خود به خود برنامه به طور معمول برنامه ای که یه هدف را با متغیر ها بیشتر انجام می دهد از برنامه که همان هدف را با متغیر های کمتری انجام می دهد برنامه بزرگ تری است ، و بزرگ و پیچیده شدن برنامه همان و برنامه با اشکالات گوناگون ، حفره ها و ... مواجه شدن همان
3- حواستمان باشد که این متغیری که تعریف می کنید نه حافظه کامپیوتر را اشغال می کند بلکه ذهن شما را هم مشغول می کند زیرا شما با این متغیر سر و کار دارید و باید همیشه با متغیر هایتان کار ها را انجام دهید مغیر ها ی اضافی قدرت تفکر و انعطاف پذیری شما را کم می کنند.
فعلا
 

جدیدترین ارسال ها

بالا