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

shr6557

Member
سلام
خواهش می کنم شما مبتدی نیستی ما مبتدی هستیم
حرف شما برای یک حالت خاص درست ولی در اغلب حالات این برنامه گرفتار اعداد بزرگ نمی شود ( گه اگر هم شود با سرعت همان کامپیوتر های خانگی حل مسئله به ثانیه هم نمی کشد مگر اینکه خیلی بزرگ باشد ) در ضمن معمولا وقتی فردی ب م م دو عدد را می خواهد اگر یکی از این اعداد را بزرگ دهد احتملا عدد بعدی را هم بزرگ می دهد و تضمینی نیست که دیگری کوچک باشد.
من فکر می کنم که شما برای اینکه در یه حالت خاص مسئله کند عمل نکند دارید کل مسئله را کند می کنید
در ضمن اگر اصلا بی خیال سرعت برنامه شوید که در این مسئله با سرعت کامپیوتر ها ی امروزی سرعت مطرح نیست ، شما باید حواستان به این باشد که هر چه برنامه شما از قطعات کمتری تشکیل شود امکان اشتباه کمتر می باشد
 

shr6557

Member
الگوریتم 1

این یک الگوریتم حل مسئله هست که در حقیقت همان راه علی هست ولی تصحیح شده
هنوز من دو راه دیگه برای حل این مسله می دونم و فکر من کنم که راه چهارم باشه منتظرم که شما این راه ها رو بگین در ضمن در برنامه نویسی همیشه حواستون به این باشه راه هایی که بکمک ریاضی حل می شن راه های مطمن تر ساده تر و سریع تری هستند
فعلا

[LTR]#include<iostream.h>

main()
{
int num1 , num2 , i ;
cout << "\nEnter frist number => ";
cin >> num1 ;
cout << "\nEnter Second number =>";
cin >> num2;

for(i = num1 ; i > 0 ; i-- )
{
if (!(num1%i) && !(num2%i))
{
cout <<"\nB.M.M = " << i;
break;
}
}

}
[/LTR]
 

saalek110

Well-Known Member
نكته جالبي را ذكر كرديد. يعني فدا كردن سرعت براي بالا بردن اطمينان .
معلومه كه حرفه اي هستيد. اينو از ذكر اين نكته نمي گم. از سرعت بازنويسي و طرز بازنويسي برنامه ام فهميدم. من خودم 2 روز به خودم فشار آوردم تا آن را نوشتم.

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

مقايسه اي هم اگر داشته باشيم بين
فدا كردن حافظه بخاطر سرعت
يا
فدا كردن سرعت به خاطر حافظه
بد نيست. البته الان زوده اين صحبتها . فقط من عنوان كردم تا بهش فكر بشه.
ولي اينها همه تجرباتي است كه بعد سالها برنامه نويسي حاصل ميشه.
از همكاري آقا حميد نهايت تشكر را دارم. اميدوارم همراهان خوبي براي هم باشيم.
.
 

aira

Member
تقاضا نامه...خواهش نامه...

ببخشيد وسط حرفاتون ميپرم:)
در مورد انجمن c وغيره عرضي داشتم خدمت دوستان و مديران محترم
مجيد آنلاين سايتي هست كه بيش از 23هزار نفر عضو داره و هركدوم به دليلي عضو شدن.در حال حاظر اين فروم هايي كه براي كارهاي مختلف ميزنن زياده ولي هيچ كدوم مثل مجيد آنلاين پرمخاطب نيست(خدا وكيلي اينجا يه چيز ديگست:cool: ).خود من به خاطر بخش برنامه نويسي عضو شدم وبعد ديدم در كنار برنامه نويسي كارهاي گرافيكي هم لازمه.چند روز پيش هم دوستي انجمني رو تبليغ كرد كه فقط مخصوص برنامه نويسان بود...
من منظورم اين نيست كه بريم اونجا عضو بشيم و ديگه باي باي مجيد آنلاين؛چون بالاخره اينجا مخاطبش زياده و اگه به مشكل بر بخوريم بالاخره يكي پيدا ميشه راه حل رو پيدا كنه:oops:
من ميگم اگه آقا مجيد لطف كنن و يه زير مجموعه(ديگه endكم خواهي:D )تو همين انجمن به ما برنامه نويسان بدن خيلي خيلي ازشون متشكر ميشيم.البته بنده برنامه نويس نيستما منظورم اساتيد و ما نوچه هاست.اونم براي اينكه همه چيز مرتب باشه..
من خودم دانشجوي كامپيوترم و از اونجايي كه بهترين راه يادگيري آموزش هست ميتونم در كنار ديگر اساتيد كمك كنم.
اميدوارم بتونيم ادامه بديم و افراد ديگري هم به جمع ما اضافه بشن.
سلامت و موفق باشيد
آيرا
 

shr6557

Member
ُسلام
با حرف های شما کاملا موافقم این طوری اصلا نمی شه ادامه داد ما کار مون رو مگه چقدر وقته که شروع کردیم ولی توی همین زمان کم صفحات تاپیک به 5 صفحه رسید شاید الان بشه کاری کرد ولی اگر این صفحات بشه 10 - 15 و... دیگه کار کردن مشکل مشه و مطالب غیر قابل دسترس
من به آقا مجید ارادت دارم چون از این سایتوش بسیار استفاده ی مفیدی کردم ، و دوست دارم که اگه قرار کاری بکنیم همین جا بکنیم بالاخره ما اینجا همین دیگر رو پیدا کردیم
ولی این لازمش این هست که آقا مجید یه انجمنی زیر انجمنی به ما بده وگرنه واقعا بعد از یک مدت دیگه نمی شه تو این تاپیک کار کرد
من معتقدم که تاسیس یک انجمن c برای سایت بسیار پر منعت هست ولی نظر آقا مجید رو نمی دونم
امید وارم حرف های من به گوش ایشان از طریق آقا نوید برسه
با اجازه
 

shr6557

Member
سلام
اول از اقای نوید کامل سپاس گزاری را می کنم
من وارد زیر انجمن c شدم می خواستم اونجا پست بزنم ولی امکانی برای پست زدن پیدا نکردم
خوب حرف هام رو همین چا می گم
پیشنهاد من این هست که تاپیک به به دو قسمت موضوع بندی بشن یکی تاپیک حل و بحث مسئله و دیگری آموزشی که درون مقاله هاو اموزش ها وجود داره
اما خوب این حرف بقی هم بود حرف من اینکه برای اینکه این دو نوع تاپیک به راحتی از هم قابل تشخیص باشن و هر فردی هر کدوم رو بتونه که دنبال کنه
موضوع هر تاپیک که مربوط به حل مسئله هست با "مسئله - " و هر تاپیک که از نوع آموزشی هست با نام "آموزش -" شروع بشه مثلا "مسئله - الگوریتم پیدا کردن ب م م "
این طوری باعث می شه که کارمون نظم داشته باشه اگه مواقف باشید این رو قانون محلی زیر انجمن خودمون بکنیم
 
بر سر کلیات به سرعت توافق کنیم که عقب نیفتیم ...

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

هوررررررررررررررررررررررررررااااااااااااااااااااااااااااااااا مبارکه زیرگروه دار شدیم:)

من فکر میکنم اگر یک جا هم برای حرف های معمولی و تصمیم گیری هامون باشه بد نیست ... چون نگاه کنید، ما الان مقالاتمون رو تو کی پایه است با هم سی یاد بگیریم پست میکنیم و بعد نوید جان زحمت میکشه و میبرتش توی بخش آموزش که قفل هستش و کسی نمیتونه توش پست کنه ... پس فکر میکنم 3 تا تاپیک مناسب تره :
1. آموزش
2. حل مسئله و الگوریتم.
3. بحث و گفتگو ( که مقالات آموزشی هم اول اینجا پست میشه و بعد نوید جان منتقلش می کند )

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

یک بار یک دوره روی چیزهایی که قبلا توافق کردیم ، میکنم :

Refrence : آموزش ++C قلزم.
اگر موافقت کنید : 3 تا تاپیک.

تا تصمیمات بعدی.
در ضمن یک تذکر که از بحث Refrence غافل نشید. برنامه ریزی برای خوندن refrence امری حیاتی هستش.( در کنار مقالات - که به نظرم حالا که بحث refrence پیش اومده باید محتواش یک مقدار تغییر کنه تا قابل استفاده بشه )

با سپاس فراوان از همه ی دوستان و به خصوص نوید عزیر ...

شهاب.
 

shr6557

Member
سلام
استرانگر من تفاوت 1- اموزش و 3- بحث و گفتگو را نفهمیدم اصلا چه نیاز به انتقال اینها می باشه
 

MnavidM

Active Member
سلام.

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

بعد از اون شروع به کار می کنیم :wink:

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

shr6557 گفت:
سلام
استرانگر من تفاوت 1- اموزش و 3- بحث و گفتگو را نفهمیدم اصلا چه نیاز به انتقال اینها می باشه

سلام.

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

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

البته یک راه دیگر برای مقالات هستش که مقالات به email کسی که داره از لحاظ علمی مقالات رو بررسی میکنه فرستاده بشه و در صورت تایید به نوید forward بشه . (البته اگر نوید خودش بار علمی رو چک بکنه دیگر هر دو قسمت با خودش میشه)

با سپاس .

شهاب.
 

MnavidM

Active Member
سلام.

خوشحالم که روال کار داره به خوبی پیش میره .

شهاب ببین فرستادن از طریق میل ممکنه مشکل ایجاد کنه , نهایتا اگه مخواستید در تاپیک "بخش بحث و گفتگو ، صحبت ..." بنویسید , برای من به پیغام خصوصی بفرستید .

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

نوید.
 

shr6557

Member
خوب باشه حرف شما خوبه
ولی پس یه کاری باید بکنیم که این تاپیک های متفاوت از هم تشخیص داده بشه چون ما که نمی خواهیم تنها سه تا تاپیک داشته باشیم می خواهیم سه نوع تاپیک داشته باشیم برای اینکه این تاپیک ها از هم مشخص بشن همون روشی رو که گفتم فکر کنم روش خوبی باشه
یعنی هر تاپیک که مربوط به حل مسئله هست اولش با "مسئله - ..........." شروع بشه هر تاپیکی که مربوط به آموزش هست با "آموزش - .................." شروع بشه و هر تاپیکی که مربوط مقالات هست با " مقالات - ............" شروع بشه
در ضمن به نظر هم هر سطحی از آموزش باید در قسمت آموزش قرار بگیره چون بالاخر امکان داره یکی تازه می خواد سی رو یاد بگیره ما باید یه راهی هم برای اون بزاریم .
در همه قسمت ها هم کار رو یه طور نچینی که وابسته به یه نفر باشه مثلا در قسمت حل مسئله فقط من نباشم که مسئله حل بکنم
فعلا
 

shr6557

Member
راستی یعنی می شه در زیر انجمن جدید به جای سه نفر ادم فعال 6 - 7 نفر داشته باشیم اخه فکر میکنم که پتانسیلش هست
 
موافقم ...

shr6557 گفت:
خوب باشه حرف شما خوبه
ولی پس یه کاری باید بکنیم که این تاپیک های متفاوت از هم تشخیص داده بشه چون ما که نمی خواهیم تنها سه تا تاپیک داشته باشیم می خواهیم سه نوع تاپیک داشته باشیم برای اینکه این تاپیک ها از هم مشخص بشن همون روشی رو که گفتم فکر کنم روش خوبی باشه
یعنی هر تاپیک که مربوط به حل مسئله هست اولش با "مسئله - ..........." شروع بشه هر تاپیکی که مربوط به آموزش هست با "آموزش - .................." شروع بشه و هر تاپیکی که مربوط مقالات هست با " مقالات - ............" شروع بشه
در ضمن به نظر هم هر سطحی از آموزش باید در قسمت آموزش قرار بگیره چون بالاخر امکان داره یکی تازه می خواد سی رو یاد بگیره ما باید یه راهی هم برای اون بزاریم .
در همه قسمت ها هم کار رو یه طور نچینی که وابسته به یه نفر باشه مثلا در قسمت حل مسئله فقط من نباشم که مسئله حل بکنم
فعلا

سلام . من کاملا موافقم ولی این گونه نظر ها رو توی تاپیک کی پایه هست با هم C یاد بگیرم مطرح کن ... الان بحث در این رابطه اونجا در جریانه ... این جا قرار بود فقط برای مسئله باشه.
 

saalek110

Well-Known Member
راه حلهايي براي تمرين اول


از وبلاگ

سوال: چه طوری میشه بدون استفاده از متغیر موقت (temporary) دو عدد روswap (جا به جا) کرد؟

راه اول:
a:=a XOR b;
b:=a XOR b;
a:=a XOR b;
یه کم مسخره شد! ولی کار می کنه. این عملگر یا شاید هم وند! XOR تک تک بیت ها رو با هم یای انحصاری می کنه. بقیه اش با خودتون.
*راه دوم:
استفاده ی برادرانه! از یک متغیر پهن تر(که می تونه یکی از اونا باشه) و شیفت دادن بیت ها به اندازه ی طول کلمه ی اولیه. برنامش این طوريه:
Var a,b: word;
a:=$1C;b:=$7E; //Just an example
a:=a SHL 8;a:=a+255;b:=b+$FF00;a:=a AND b;a:=a AND $FF;b:=a AND $FF00;
این از اون بدتر!
*راه سوم: عوض کردن آدرس در Memory:

سالك: فقط نقل قول كردم. خودم كار نكرده ام هنوز. ولي از نگاه بيتي به متغيرها خوشم آمد . چون قبل از آشنايي با سي ، با اسمبلي عجين تر بودم.

.
 

saalek110

Well-Known Member
http://www.duckware.com/bugfreec/chapter2.html


2.3.3 Swap Two Variables without a Third Variable

This is an old assembly language trick that can also be used in C. Given two assembly language registers, how can you swap the contents of the registers without using a third register or memory location (and, of course, not using a swap instruction if the assembly you are familiar with has such an instruction). The solution is as follows.



Swapping integers x, y without a third integer using C
1. x ^= y;
2. y ^= x;
3. x ^= y;

After step 1, x contains (x^y). After step 2, y contains (y^(x^y)), which is just x. Finally, after step 3, x contains ((x^y)^x), which is y. This is it!

The trick to this technique is realizing that any number XORed with itself is 0. XOR also has useful applications in GUI environments.
 

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

بالا