-
نقل قول: مشكلات من با ++C
#include<string>
این خط کلاسی به اسم sting رو دراختیار میذاره ، این کلاس هم مثل همین کلاسهایی که خودت نوشتی یه سری توابع عضو داره ، اعضای داده ای داره ، سازنده و مخرب و friend داره
وقتی مینویسی :
string name;
یک شی name از کلاس string تعریف کردی، حالا توسط این شی میتونی از توابع عضو کلاس string استفاده کنی
اگه دوست داشتی این لینکها رو ببین :
http://www.cplusplus.com/reference/s...string/length/
http://www.cplusplus.com/reference/s...string/insert/
http://www.cplusplus.com/reference/string/getline/
http://www.cplusplus.com/reference/string/string/empty/
البته این فقط چهارتا از توابع مهمشه ، بقیشو خودت دوست داشتی ببین
موفق باشی
-
نقل قول: مشكلات من با ++C
آها تازه فهمیدم خوب برای اینکه بدونیم کلاس هایی که قبلا نوشته شده مثل همین string چه توابعی رو در اختیار میزاره و این توابع چه کار میکنن باید همین سایت ها رو بخونیم؟
تازه در آخر این فصل یک سری جمع بندی داره که یه مروری هم بر اینا برویم
در این فصل آموختید که چگونه کلاس های تعریف شده توسط کاربر را ایجاد کنید و نیز چگونه اشیا این کلاس ها را ایجاد و از آنها استفاده کنید بخصوص اینکه داده های عضو یک کلاس را برای نگهداری و ذخیره داده های هر شی از کلاس اعلان کردیم.
در مورد این قسمتی که آبی شده می خواستم بگم من کجای این مثال ها این کار رو کردم؟
آموختید که چگونه توابع عضو یک شی را برای درخواست خدماتی که ارائه می دهد احضار کنید و چگونه داده ها را به عنوان آرگومان به آن تابع عضو منتقل کنید.
این بالایی رو هم نمیدونم کجا ازش استفاده میکردیم.
تازه این مثال آخریه رو هم نتونستم اجرا کنما مثل همون قبیه ارور میده
-
نقل قول: مشكلات من با ++C
نقل قول:
برای اینکه بدونیم کلاس هایی که قبلا نوشته شده مثل همین string چه توابعی رو در اختیار میزاره و این توابع چه کار میکنن باید همین سایت ها رو بخونیم؟
دقیقا ، اگه میخوای تو برنامه نویسی پیشرفت کنی ، باید مراجع زیادی رو ببینی ؛ این چند تا سایت رو واسه شروع یادت باشه :
http://www.cplusplus.com/
http://msdn.microsoft.com/
http://www.planet-source-code.com/
http://www.codeproject.com/
اگه زبانت خوبه ، این آخری خیلی به دردت میخوره
نقل قول:
داده های عضو یک کلاس را برای نگهداری و ذخیره داده های هر شی از کلاس اعلان کردیم.
اگه یادت باشه ، قبل از اینکه از توابع set و get استفاده کنی ، به طور مستقیم داده ها رو مقداردهی میکردی
نقل قول:
توابع عضو یک شی را برای درخواست خدماتی که ارائه می دهد احضار کنید و چگونه داده ها را به عنوان آرگومان به آن تابع عضو منتقل کنید.
توابع عضو set و get و یه تابع عضو displaymessage رو باهاش کار کردی ؛
نقل قول:
تازه این مثال آخریه رو هم نتونستم اجرا کنما مثل همون قبیه ارور میده
نمیدونم والا ، من اجرا کردم ، اجرا شد ؛ از مدیرای بخش سوال کن ،
موفق باشی
-
نقل قول: مشكلات من با ++C
دست گلت درد نكنه محمد جان خيلي بهت زحمت دادم خدا بخواد ديگه فصل 3 تموم شد و حالا رسيديم سر تمريناش. من از اين بخش خوشم مياد چون سوالاش حرفه اي طراحي شده و اگه كسي كتاب رو سرسري خونده باشه نميتونه به سوالا جواب بده
اگه اشكال نداره من سوالا رو بنويسم و جوابشو بگم شما ببين من درست ميگم يا غلط:
1- در مورد تفاوت پيش نمونه تابع و تعريف تابع توضيح دهيد:
در پيش نمونه يك تابع ما نام تابع، نوع برگشتي آن و تعداد و نوع داده ها و ترتيب قرار گرفتن پارامتر ها رو كه از تابع انتظار دريافت آن را داريم تعريف ميكنيم اما تابع را به صورت كامل تعريف نميكنيم به صورت زير
void setCourseName(string name) ولي در تعريف تابع ما تابع را در كل تعريف ميكنيم يعني عملياتي را كه تابع انمام مي دهد را هم تعريف ميكنيم
2- سازنده پيش فرض چيست؟ اگر در كلاسي فقط يك سازنده پيش فرض به طور ضمني تعريف شده باشد داده هاي عضو اين كلاس چگونه مقدار اوليه ميگيرند؟
سازنده پيش فرض به داده عضو كلاس مقدار اوليه نميدهد اما براي هر داده ي عضوي كه يك شي از كلاس ديگر است سازنده پيش فرض را احضار ميكند. قسمت دوم سوال رو هم نميدونم
3- در مورد هدف از استفاده داده عضو را توضيح دهيد:
خوب اگر از متغير محلي استفاده شود فقط در همان محل تعريف تا آخر جايي كه آكولاد بسته ميشود قابل استفاده است براي اين كه بتونيم مطمئن بشيم و در چند تابع در يك كلاس از اون استفاده كنيم بايد اون رو به صورت داده عضو تعريف كنيم.
4- سرفايل چيست؟ فايل كد مبدا چيست؟ هدف استفاده از هر يك را توضيح دهيد؟
سرفايل ها قسمتي از برنامه هستند كه داراي پسوند h. هستند و فايل كد مبدا نيز قسمتي از برنامه هستند كه داراي پسوند cpp. هستند
براي امنيت بيشتر و براي اينكه كاربر مشتري به برنامه دسترسي نداشته باشه از اين دو استفاده ميشه.
5- توضيح دهيد چگونه بدون نوشتن اعلان using در يك برنامه ميتوان از كلاس string استفاده كرد؟
فكر كنم بايد كل كلاس string با تابع درونش و عملياتي كه انجام ميده رو يك بار تعريف كنيم
6- توضيح دهيد چگونه يك كلاس مي تواند يك تابع set و يك تابع get براي يك داده عضو فراهم سازد
خوب ما اين كار رو در مثال هايي كه با هم نوشتيم و بحث و بررسي كرديم انجام داديم درسته؟
دادا اينا باشه بقيش برنامه نويسي هست من دارم روشون فكر ميكنم يخته سخته ولي الان رفتم زيرخمشو گرفتم:لبخند:
-
نقل قول: مشكلات من با ++C
سلام مجید جان ، آفرین ، خیلی خوبه :تشویق:
البته زیاد رو تعریفها نمیخواد گیر بدی ، وقتی خودت کد بنویسی ، به طور اتوماتیک تعریفها هم یاد میگیری
نقل قول:
دادا اینا باشه بقیش برنامه نویسی هست من دارم روشون فکر میکنم یخته سخته ولی الان رفتم زیرخمشو گرفتم:لبخند:
ببینم چه میکنی :چشمک:
-
نقل قول: مشكلات من با ++C
خوب ما با 5 تا برنامه روبرو هستیم اولی همون کلاس gradebook هست که میگه یکاری کنید تا برنامه اسم استاد ردس را هم چاپ کند من برنامه رو نوشتم در دو قسمت یکی تعریف کلاس و دیگری تابع main اما بازهم همون ارور رو میده:گریه:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string name, a)
{
setCourseName( name, a );
}
void setCourseName( string name )
{
coursename = name;
}
string getCourseName()
{
return coursename;
}
void setTeacherName( string a )
{
teachername = a;
}
string getTeacherName()
{
return teachername;
}
void displaymessage()
{
cout << "this course is presented by\n" << getTeacherName() << "welcome to the gradebook for\n" << getCourseName() << endl;
}
private:
string coursename;
string a;
};
و قسمت دوم برنامه
#include <cstdlib>
#include <iostream>
#include <string>
#include <conio.h>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gradebook1( "cs101 introduction to C++ programing" );
GradeBook gradebook2( "this course is peresented by majid & mohamad" );
cout <<"gradebook1 created for course: " << gradebook1.getCourseName() << "\ngradebook2 is the name of teacher:" << gradebook2.getTeacherName() <<endl;
getch();
return 0;
}
-
نقل قول: مشكلات من با ++C
خب کدت چندتا ایراد داشت ، دونه دونه بررسیش میکنیم :
1. اعضای داده ای کلاس عبارتند از :
coursename و teachername که این دومی رو یادت رفته بود تعریف کنی ؛
پس داریم :
private:
string coursename;
string teachername;
2. سازنده باید اعضای داده ای رو مقداردهی کنه ، پس اگه قراره سازنده ت دوتا آرگومان داشته باشه ، باید بنویسی :
GradeBook( string a, string b)
{
coursename=a;
teachername=b;
}
3. توابع set و get رو درست نوشتی
خب این از مشکلات تابع اولت ، کد اصلاح شده قسمت اول اینطوری میشه :
GradeBook.h
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string a, string b)
{
coursename=a;
teachername=b;
}
void setCourseName( string name )
{
coursename = name;
}
string getCourseName()
{
return coursename;
}
void setTeacherName( string a )
{
teachername = a;
}
string getTeacherName()
{
return teachername;
}
void displaymessage()
{
cout << "this course is presented by\n" << getTeacherName() << "welcome to the gradebook for\n" << getCourseName() << endl;
}
private:
string coursename;
string teachername;
};
واما تابع main.cpp :
فقط یه مشکل داشت ، سازنده ای که تعریف کردی دوتا آرگومان میگیره ، پس توی تابع main هم باید با دو آرگومان صدازده بشه ؛ مثلا :
GradeBook gradebook1( "cs101 introduction to C++ programing","Mohammad" );
GradeBook gradebook2( "this course is peresented by majid & mohamad","Majid" );
شکل اصلاح شده تابع main.cpp:
#include <cstdlib>
#include <iostream>
#include <string>
#include <conio.h>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gradebook1( "cs101 introduction to C++ programing","Mohammad" );
GradeBook gradebook2( "this course is peresented by majid & mohamad","Majid" );
cout <<"gradebook1 created for course: " << gradebook1.getCourseName() << "\ngradebook2 is the name of teacher:" << gradebook2.getTeacherName() <<endl;
getch();
return 0;
}
من اجرا کردم ، اجرا شد ، حالا بازم امتحان کن ، اگه نشد یه پست جداگونه بذار از مدیرای بخش سوال کن
موفق باشی
-
نقل قول: مشكلات من با ++C
آره دادا درست شد میدونی اشکال کارم کجا بود قسمت اول رو باید با همون نام کلاس ذخیره میکردم ولی من با یه نام دیگه ای ذخیره میکردم
دادا در برنامه دوم از ما میخواد که کلاس account رو درست کنیم با این شرایط:
کلاس باید دارای یک داده عضو از نوع int برای نمایش موجودی حساب باشد.
باید سازنده ای ایجاد کنید که موجودی اولیه مشتری را دریافت کند و از آن برای مقدار اولیه دادن به داده عضو استفاده کند. سازنده باید مقدار اولیه موجودی را ارزیابی کند تا معلوم شود بزرگتر است یا برابر با صفر است در غیر اینصورت باید مقدار اولیه برابر با صفر قرار داده شود.
تابع عضو credit باید یک مقدار به مقدار اولیه اضافه کند.
تابع عضو debit باید پول را از حساب برداشت کند و باید اطمینان دهد که مقدار بدهکاری بیشتر از موجودی account نیست
در صورت مثبت بودن جواب موجودی نباید تغیر کند و موجودی باید پیغامی مبنی بر "debit amount exceeded account balance" است در خروجی چاپ کند.
تو برنامه گفته از 3 تابع استفاده کنید من هر کاری میکنم 4 تابع میشه تازه اینجا دو تا شرط داره یکی تو قسمت سازنده یکی هم تو قسمت برداشت پول من نمیدونم این دو تا رو چه جوری بیان کنم چون هنوز منظور سوال رو نفهمیدم تو قسمت سازنده میگه اگه بزرگتر یا براب 0 نبود خوب این به این معنی هست که مقدار پول منفی باشه و منفی یعنی اینکه بدهکاری خوب اگه مشتری بدهکار باشه بدهکاریش از بین میره
و در قسمت دوم شرطی که در قسمت برداشت میگه مقدار بدهکاری بیشتر از موجودی نباشه؟
من گیج شدم
و نمیدونم از کجا باید شروع کنم اگه میشه یه نقطه شروع برای من مشخص کن
ممنون
-
نقل قول: مشكلات من با ++C
خب ، خدا رو شکر که اجرا شد :لبخندساده:
خب به نظرم اول شروع کن به نوشتن کلاس ، اعضای داده ای رو مشخص کن ، بعد هرجوری به نظر خودت معقوله واسش شرط بذار ، مثلا در مورد سازنده :
سازنده زمانی صدا زده میشه که بخواهی شی جدیدی رو معرفی کنی (در واقع این شی همون شخصیه که میخواد حساب باز کنه) ؛ خب برای باز کردن حساب شخص باید مقداری پول اولیه بریزه توحسابش ، مسلما این پول یه مقدار مثبت و حتی شاید بزرگتر از 10000$ داشته باشه ؛
یا در مورد تابع credit باید به حساب شخص پول واریز کنه ، پس این تابع هم یه مقدار بزرگتر از صفر رو میگیره و به موجودی فرد اضافه میکنه
بقیشو خودت تحلیل کن ، اگه به نظرت تابع دیگه ای هم نیاز داره بهش اضافه کن
راستی یه چیزی :
خیلی خوشم اومد ازت ، این تلاشت باعث شد منم خیلی چیزا رو یاد بگیرم ، همینطوری ادامه بدی ، مطمئنم حرفه ای میشی:تشویق::تشویق:
موفق باشی:چشمک:
-
نقل قول: مشکلات من با ++C
در این دستور که گذاشتم اون قسمتی که بولد شده رو لطف می کنید توضیح بدید که چیکار می کنه.
out_file.write((char*)&temp,sizeof(temp));
-
نقل قول: مشکلات من با ++C
یه سوال دیگه هم دارم.این کد رو ببینید
#include<iostream>
using namespace std;
int main(){
int max;
cout<<"enter a number:";
cin>>max;
if(!cin.bad()){
cin.clear();
cout<<"enter an integer number please:";
cin>>max;
}
cout<<"max is:"<<max<<endl;
return 0;
}
خوب این برنامه باید اگر کاربر در ورودی کاراکتر وارد کرد اخطار بده و ورودی جدید دریافت کنه.اگر برای ورودی اول کاراکتر بزنیم وارد شرط میشه و پیغام رو نمایش میده اما دیگه ورودی نمی گیره و داخل متغیر max یه عدد نامفهوم قرار میگیره.وقتی اول بلوک شرط cin.clear() هم می ذارم باز تغییر نمی کنه و ورودی نمی گیره.
مشکل از کجاست؟
-
نقل قول: مشكلات من با ++C
خوب آقا محمد این برنامه من با توضیحاتی که در پست قبلی زدم این برنامه رو نوشتم:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Account
{
public:
Account (int mojodi)
{
void cerdit (mojodi);
}
void cerdit (int mojodi, int a)
{
mojodihesab = mojodi;
mojodihesab = mojodihesab + a;
}
void debit (int b)
{
if( b < mojodihesab)
mojodihesab = mojodihesab - b;
}
void getbakanc()
{
return mojodihesab;
}
private:
int mojodihesab;
int a;
int b;
};
و این هم قسمت دوم
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include "Account.h"
using namespace std;
int main()
{
Account accoount1;
cout << "account1 mojodihesab ra neshan midahad" << account1.getbalance() << endl;
getch();
return 0;
}
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
white tower
در این دستور که گذاشتم اون قسمتی که بولد شده رو لطف می کنید توضیح بدید که چیکار می کنه.
out_file.write((char*)&temp,sizeof(temp));
منم دقیقا نمیدونم ، فک کنم مال کتاب جعفرنژاده :لبخند:
تا این حد میدونم که این دستور مقادیری رو که از کاربر گرفته ،توسط جریان out_file میریزه توفایل (این روش در فایلهای باینری کاربرد داره )
نقل قول:
یه سوال دیگه هم دارم.این کد رو ببینید
کد:
#include<iostream>
using namespace std;
int main(){
int max;
cout<<"enter a number:";
cin>>max;
if(!cin.bad()){
cin.clear();
cout<<"enter an integer number please:";
cin>>max;
}
cout<<"max is:"<<max<<endl;
return 0;
}
خوب این برنامه باید اگر کاربر در ورودی کاراکتر وارد کرد اخطار بده و ورودی جدید دریافت کنه.اگر برای ورودی اول کاراکتر بزنیم وارد شرط میشه و پیغام رو نمایش میده اما دیگه ورودی نمی گیره و داخل متغیر max یه عدد نامفهوم قرار میگیره.وقتی اول بلوک شرط cin.clear() هم می ذارم باز تغییر نمی کنه و ورودی نمی گیره.
مشکل از کجاست؟
خب واسه اینکه باید شرط رو توی حلقه بذاری ، مثلا از while استفاده کن و تا وقتی کاربر کارکتر وارد میکنه حلقه اجرا بشه
-
نقل قول: مشكلات من با ++C
خب مجید جان ، کارت نسبتا خوب بود ، فقط :
1. چرا سه تا عضو داده ای ؟ به نظرت یه عضو کافی نیست ؟
2. بازم سازنده رو بد تعریف کردی ، سازنده وظیفه مقداردهی به اعضای داده ای رو داره ، یعنی سازنده Account باید اعضای داده ای کلاس رو مقدار دهی کنه ؛
3. برنامه رو طوری بنویس که واست راحته ، به نظرم بعضی جاها خیلی به خودت سخت گرفتی ، ولی درکل خوب بود
موفق باشی
-
نقل قول: مشكلات من با ++C
دادا من مخم هنگ کرده این مثال رو میتونی برام بنویسی تا من دقیقا هم منظور شما رو بفهمم و هم منظور سوال کتاب رو
چون ما باید 2 تا داده دیگه داشته باشیم برای برداشت و سپرده گذاری
تازه من باز هنوز منظور این دو تا شرطی رو که سوال گذشته نمیفهمم
-
نقل قول: مشكلات من با ++C
سلام
اینو یه نگاه بنداز :
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Account
{
private:
int mojodihesab;
public:
Account (int mojodi)
{
//واسه افتتاح حساب حداقل باید 10000$ بریزه به حساب ، وگرنه حساب صفر میشه
if(mojodi>10000) {
mojodihesab=mojodi; }
else {
mojodihesab=0;
}
}
// این تابع یه مقداری رو به حساب کاربر میریزه
// مسلما این مقدار باید بزرگتر از صفر باشه
void cerdit (int a)
{
if(a>0)
mojodihesab = mojodihesab + a;
}
// این تابع رو خودت درست نوشتی ، دیگه توضیح نمیدم
void debit (int b)
{
if( b < mojodihesab)
mojodihesab = mojodihesab - b;
}
// این تابع موجودی شخص رو برمیگردونه ، که خودت درست نوشته بودی
// من فقط اسمشو عوض کردم
int getmojodihesab()
{
return mojodihesab;
}
};
سوالی بود ، درخدمتم
-
نقل قول: مشکلات من با ++C
یک نفر می شه به من بگه که با چه version کار می کنید؟
واسه من using namespace اصلا قبول نمی کنه.
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
mabbaszadegan
سلام
اینو یه نگاه بنداز :
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Account
{
private:
int mojodihesab;
public:
Account (int mojodi)
{
//واسه افتتاح حساب حداقل باید 10000$ بریزه به حساب ، وگرنه حساب صفر میشه
if(mojodi>10000) {
mojodihesab=mojodi; }
else {
mojodihesab=0;
}
}
// این تابع یه مقداری رو به حساب کاربر میریزه
// مسلما این مقدار باید بزرگتر از صفر باشه
void cerdit (int a)
{
if(a>0)
mojodihesab = mojodihesab + a;
}
// این تابع رو خودت درست نوشتی ، دیگه توضیح نمیدم
void debit (int b)
{
if( b < mojodihesab)
mojodihesab = mojodihesab - b;
}
// این تابع موجودی شخص رو برمیگردونه ، که خودت درست نوشته بودی
// من فقط اسمشو عوض کردم
int getmojodihesab()
{
return mojodihesab;
}
};
سوالی بود ، درخدمتم
خوب یک سوال مگه ما از دو متغیر a و b استفاده نمیکنیم؟ پس چرا اون ها رو معرفی نکردیم تازه مگه این دو مقدار نباید توسط ما به کامپیوتر داده بشه پس به نظر من دو تا cin کم داره
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
shp_com
یک نفر می شه به من بگه که با چه version کار می کنید؟
واسه من using namespace اصلا قبول نمی کنه.
سلام
ما داریم با کتاب دایتل پیش میریم
و در کامپایلر dev-C++ کار میکنیم
-
نقل قول: مشکلات من با ++C
سلام ، خوشحالم که کم کم داره تعدادمون زیاد میشه ، خوش اومدی shp_com ،
نقل قول:
نوشته شده توسط
majmaji
خوب یک سوال مگه ما از دو متغیر a و b استفاده نمیکنیم؟ پس چرا اون ها رو معرفی نکردیم تازه مگه این دو مقدار نباید توسط ما به کامپیوتر داده بشه پس به نظر من دو تا cin کم داره
a و b به عنوان آرگومان وارد تابع میشند ، اگه بخواهی اونا رو کاربر وارد تابع کنه ، توی تابع main باید cin کنی و بفرستیشون تو تابع
موفق باشی
-
نقل قول: مشكلات من با ++C
یعنی ما با پارامتر تابع به این دو آرگومان ها مقدار میدیم
یعنی باید تو تابع main توسط شی هایی که تعریف میکنیم تابع رو فراخونی کنیم و بعد مقدار بدیم؟
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
mabbaszadegan
منم دقیقا نمیدونم ، فک کنم مال کتاب جعفرنژاده :لبخند:
تا این حد میدونم که این دستور مقادیری رو که از کاربر گرفته ،توسط جریان out_file میریزه توفایل (این روش در فایلهای باینری کاربرد داره )
خب واسه اینکه باید شرط رو توی حلقه بذاری ، مثلا از while استفاده کن و تا وقتی کاربر کارکتر وارد میکنه حلقه اجرا بشه
نه مال کتاب جعفرنژاد نیست.البته درست فرمودید که با جریان out_file اطلاعات رو توی فایل می ریزه اما می خواستم اون قسمت که بولد کرده بودمم رو دقیقا بفهمم که چیکار می کنه.
در مورد دوم هم اون راه که شما فرمودید منظورم نیست.می خوام از cin.bad() استفاده کنم و بدونم که چرا دوباره ورودی نمی گیره.بافر رو هم که خالی می کنم اما ورودی داخل ظرط باز هم کار نمی کنه و ازش رد میشه.
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
majmaji
یعنی ما با پارامتر تابع به این دو آرگومان ها مقدار میدیم
یعنی باید تو تابع main توسط شی هایی که تعریف میکنیم تابع رو فراخونی کنیم و بعد مقدار بدیم؟
ای ول ، دقیقا درسته ،
فک کنم یواش یواش داری درک درستی از اشیا پیدا میکنی ، منتظر سوال بعدتم :چشمک:
-
نقل قول: مشكلات من با ++C
ای ول ای ول داش محمد و ایول
دادا میگما بریم سراغ مثال بعدی ولی یه مشکلی این مثال و دو تا مثال بعدی همش شبیه مثال قبلیایی هست که حل کردیم یعنی همش یه تابع set یه تابع get بعدشم displaymessage
من هم تمرین شماره 3 رو که این چیزا رو میخواد اینطوری نوشتم:
کلاس invoice یا صورت فروش
کلاسی به نام invoice که یک فروشگاه وسایل سختافزاری از آن بتواند برای صورت حساب جنس فروخته شده آن فروشگاه استفاده کند.
invoice باید متضمن چهار داده عضو باشد شماره قطعه شرح قطعه تعداد جنس خریداری شده و قیمت جنس
کلاس باید سازنده ای داشته باشد که به چهار داده عضو مقدار دهد برای هر یک از داده ها یک تابع set و یک تابع get و در آخر هم گفته یک تابع get invoiceamount برای مبلغ کل یعنی تعداد خریداری شده ضربدر قیمت یک بنویسید که این مقدار رو حساب کنه و مقدار رو برگردونه
بعد هم گفته اگر تعداد جنس و قیمت جنس مثبت نبود باید برابر صفر قرار داده شود. خوب این یعنی چی؟؟؟
این هم برنامه: ایا درسته؟
#include <cstdlib>
#include <iostream>
using namespace std;
class Invoice
{
public:
Invoice(string a, string b, int c, int d)
{
setShomareGhete(a);
setSharhGhete(b);
setTedadeGhete(c);
setGheymateGhete(d);
}
void setShomareGhete{string a)
{
shomareghete = a;
}
void setSharhGhete{string b)
{
sharheghete = b;
}
void setTedadeGhete{string c)
{
tedadeghete = c;
}
void setGheymateGhete{string d)
{
gheymateghete = d;
}
string getShomareGete()
{
return shomareghete;
}
string getSharheGhete()
{
return sharheghete;
}
string getTedadeGhete()
{
return tedadeghete;
}
string getGheymateGhete()
{
return gheymateghete;
}
void getinvoiceamount()
{
tedadeghete*gheymateghete=gheymatekol;
}
void displaymessage()
{
cout <<"etelaate foroshe mahsolat:"<< getShomareGete()<< getSharheGhete()<< getTedadeGhete()<< getGheymateGhete()<< endl;
}
private:
shomareghete;
sharheghete;
tedadeghete;
gheymateghete;
gheymatekol;
};
-
نقل قول: مشكلات من با ++C
:لبخند:
تقریبا درست بود ، ولی فک کنم حواست نبوده نوع اعضای داده ای رو مشخص کنی ؛
نقل قول:
اگر تعداد جنس و قیمت جنس مثبت نبود باید برابر صفر قرار داده شود.
خب یعنی اگه یه وقت کاربر مقدار منفی فرستاد توی توابع set ، تابع به صورت هوشمند مقدار متغیر رو بذاره صفر ؛ اینم یکی دیگه از فواید تعریف توابع set و get :چشمک:
اگه به نظرت دیگه فول شدی برو سراغ فصل بعد ، البته فک کنم تا فصل 6 و 7 سریع بتونی پیش بری تا برسیم به مبحث شیرین اشاره گر ها :لبخند:
موفق باشی
-
نقل قول: مشكلات من با ++C
البته اگه ميشه من يه سوال از اين بخش بپرسم:
الان من اين برنامه رو نوشته حالا چيجوري با شي مقدار اعضاي داده اي رو در آرگومان قرار بدم؟؟؟
تازه اون شرطي رو كه گفته بايد هم تو تابع set و هم تو تابع get تعريف كنيم؟
يا نه فقط تو set تعريف كنم كافيه؟ شرطشم بايد با if باشه؟
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
majmaji
البته اگه میشه من یه سوال از این بخش بپرسم:
الان من این برنامه رو نوشته حالا چیجوری با شی مقدار اعضای داده ای رو در آرگومان قرار بدم؟؟؟
تازه اون شرطی رو که گفته باید هم تو تابع set و هم تو تابع get تعریف کنیم؟
یا نه فقط تو set تعریف کنم کافیه؟ شرطشم باید با if باشه؟
خب توی تابع main ، اول یه شی از کلاس تعریف میکنی و با استفاده از سازنده ای که واسه کلاست نوشتی شی رو مقداردهی میکنی ؛ مثلا :
Invoice obj1("001","ghete 1",10,150000);
در مورد شرط ( if ) هم فقط کافیه که توی تابع set شرط بذاری ، چون تابع get فقط قراره یه مقدار رو برگردونه و کاری با درستی و غلطی اون نداره ،
موفق باشی
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
qanewaisi
برنامه ت یه تابع main کم داره فقط ، در کل خیلی قشنگ و مرتب نوشتی ، خیلی خوشم اومد
مجید جان برنامه ایشون رو دانلود کن ، خیلی میتونه کمکت کنه ، مخصوصا توی مبحث overloading عملگرها
-
نقل قول: مشكلات من با ++C
سلام به بچه ها مخصوصا محمد جان
برنامه رو دیدم فقط نمیدونم چرا 5 تا هدر داشت البته فکر کنم که برسم فصلای بالاتر بتونم بفهمم
فصل 4 در مورد الگوریتم و دستور های کنترلی هست
در مورد دستور های شبه کد هم یک سری توضیح آورده . یک مثال هم اورده:
prompt the user to enter the first integer
input the first integer
prompt the user to enter the secondinteger
input the second integer
add first integer and second integer
display result
حالا سوال من اینه که این شبه کد ها همون الگوریتم نویسی هست؟
در ادامه گفته که دستور های کنترلی سه دسته اند:
1- دستورهای ترتیبی
2- دستور های انتخاب
3- دستور تکرار
دوباره آیا دستور های ترتیبی همان شبه کد ها هستند؟
دوباره در مورد این توضیح داده که برنامه ها رو به صورت شبه کد بنویسید و بعد تبدیل کنید به برنامه ++C من در کل پاراگراف رو نفهمیدم ولی یه چیزی که تو چشم بود واژه "نمودار فعالیت ها" بود. یعنی چی؟
-
نقل قول: مشکلات من با ++C
سلام
شبه کد ، تقریبا یه چیزی شبیه همون الگوریتم ، با این تفاوت که توش محدودیتی وجود نداره ؛
توی شبه کد ، مفهومی که قراره بنویسی رو به هر زبونی که دوست داری (فارسی یا انگلیسی) مینویسی ، مثلا میگی :
متغیر a را تعریف میکنیم
به کاربر بگو a را وارد کند
a را بخوان
اگر a منفی بود آن را در 10 ضرب کن
در غیر این صورت a را با 10 جمع کن
حالا اینو تبدیلش میکنیم به کد ++ c
int a;
cout<<"a :";
cin>>a;
if(a<0)
a*=10;
else
a+=10;
نقل قول:
در ادامه گفته که دستور های کنترلی سه دسته اند:
1- دستورهای ترتیبی
2- دستور های انتخاب
3- دستور تکرار
دستورهای ترتیبی که همین دستورات معمولیه که استفاده میکنی ، دستورات انتخاب مثل switch, if .. else
و دستورهای تکرار همون حلقه های تکرارند مثل for, while , do.. while
نقل قول:
واژه "نمودار فعالیت ها" بود. یعنی چی؟
دقیق نمودنم ، ولی فک کنم
activity diagram یکی از نمودارهای uml باشه که واسه تجزیه و تحلیل برنامه کاربرد داره ، ولی بازم اساتید محترم اگه اشتباه میکنم
موفق باشی
-
نقل قول: مشکلات من با ++C
سلام به همه دوستان خوبید درسا خوب پیش میره امیدوارم درسا خوب پیش بره مخصوصا امتحانای آخر ترم
ما که داریم سخت کار میکنیم پول ترم جدیدو بدیم:لبخند:
قرض از مزاحمت اینکه فصل چهارم کار سبک تری نسبت به بقیه فصلا داره و من تازه رسیدم به دستور تکرار while تا اینحا مشکل زیادی نداشتم فقط یه مثال بود که زده بود من توضیحاتشو نفهمیده بودم
اینم مثال:
if(student grade >= 60 )
cout << "passed.\n";
else
{
cout << "failed.\n"
cout << "you must take this course again.\n";
}
در این برنامه میگه اگه شرط درست باشه یا نباشه بالاخره cout << "passed.\n"; اجرا میشه. آیا این حرف درسته؟
-
نقل قول: مشكلات من با ++C
نقل قول:
در این برنامه میگه اگه شرط درست باشه یا نباشه بالاخره cout << "passed.\n"; اجرا میشه. آیا این حرف درسته؟
نه دیگه ، اگه شرط برقرار باشه اجرا میشه ، اگه برقرار نباشه قسمت else اجرا میشه
-
نقل قول: مشكلات من با ++C
درسته البته این رو کتاب نوشته بود نمیدونم چرا!!!
ما رسیدیم به یه مثال، مثال در مورد همون کلاس gradebook هست با این تفاوت که الان میخواهیم 10 تا نمره از کلاس بگیریم و میانگین رو حساب کنیم
قسمت اول برنامه:
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook(string name)
{
setCoursename(name);
}
void setCourseName(string name)
{
if (name.length() <= 25)
coursename = name;
else
{
coursename = name.substr(0, 25);
cout << "name\"" << name << "\"exceeds maximum length(25).\n" << "limiting coursename to first 25 characters.\n" << endl;
}
}
string getCourseName()
{
return coursename;
}
void displaymessage()
{
cout << "welcome to the grade book for\n" << getCourseName() << endl;
}
void determineclassaverage()
{
int total;
int gradecounter;
int grade;
int average;
total = 0;
gradecounter = 1;
while (gradecounter <= 10)
{
cout << "enter grade:";
cin >> grade;
total = total+grade;
gradecounter = gradecounter+1;
}
average = total/10;
cout << "\ntotal of 10 grade is:" << total << endl;
cout << "\n class average is:" << average << endl;
private:
string coursename;
};
قسمت د.م برنامه:
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
#include "GradeBook.h"
int main()
{
GradeBook mygradebook("cs101 C++ programing");
mygradebook.displaymessage();
mygradebook.determineclassaverage();
getch();
return 0;
}
برای من باز اجرا نشد چندین بار چک کردم ببینم مشکل از من هست یا نه ولی مشکل از من نبود هر جور امتحان کردم برنامه اجرانشد
-
نقل قول: مشكلات من با ++C
ظاهرش که درسته ،
ارورش چیه ؟
-
نقل قول: مشكلات من با ++C
میگه لینک gradebook.h ساخته نشده
C:\Dev-Cpp\bin\tamrin\Makefile.win [Build Error] [GradeBook.exe] Error 1
-
نقل قول: مشكلات من با ++C
سلام ، شرمنده که دیر جواب میدم ، یه خورده این چند روز سرم شلوغه:چشمک:
ببین من اجراش کردم ، درست بود ، اگه اجرا نمیشه ، ولش کن برو سراغ ادامه فصل
-
نقل قول: مشكلات من با ++C
آقا محمد ما خيلي مخلصيم. مهم اينه كه شما به فكر ما هستي و علم خودت رو با همه به اشتراك ميگذاري البته من هم سوء استفاده نميكنما:لبخند:
بريم سراغ اصل مطلب:
ديشب داشتم رو كتاب يه فكري ميكردم يه نتيجه گيري كردم به نظرت اين نتيجه گيري من درسته؟
هدف از ايجاد سازنده اينه كه به اشياء كلاس مقدار بده و هدف از ايجاد اشيا فراخواني تابع هست. در ليست پارامتر تابع هم پارامتري مياد كه سازنده با اون كار داره.
حالا ما در همين مثال نام درس، به شي gradebook1 يك مقداري داديم وقتي با اون تابع getCourseName رو فراخواني ميكنيم مقدار شي جاي CourseName ميشينه به اين ترتيب كه در سازنده پارامتر name تعريف ميشه در تابعset مقدار Coursename در name ذخيره ميشه و در تابع get اين متغير coursename بازگشت ميشه (البته مقدارش) و اين مقدار هم همون مقدار پارامتر هست
اين نتيجه گيري من درسته؟
خوب اگه اينجوري باشه در همين مثال بالا چرا با شي اي كه مقدار نام كلاس رو داره تابع determineclassaverage رو فراخواني كرديم؟
-
نقل قول: مشکلات من با ++C
سلام.
من یه سوال دارم که خودمم خوب نمی دونم چیه.امیدوارم که متوجه بشید
این قضیه بایت کم ارزش و با ارزش چیه؟من الان یه برنامه دارم می نویسم که فکر کنم باید در قیمتیش جای این بایتها رو در یه عدد
short int
عوض کنم.این متغیر باید مقدار یک بگیره منتها در حالت برعکس معمول.امیدوارم متوجه شده باشید.اگر فرض کنیم در حالت معمولی بایت اول مقدار رو نگه می داره الان می خوام برعکسش کنم یعنی بایت دوم مقدار رو نگه داره.شاید اینطوری برنامه ام راه بیافته.هیچ ایراد دیگه ای جز این ندیدم.
ممنون .
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
majmaji
آقا محمد ما خیلی مخلصیم. مهم اینه که شما به فکر ما هستی و علم خودت رو با همه به اشتراک میگذاری البته من هم سوء استفاده نمیکنما:لبخند:
بریم سراغ اصل مطلب:
دیشب داشتم رو کتاب یه فکری میکردم یه نتیجه گیری کردم به نظرت این نتیجه گیری من درسته؟
هدف از ایجاد سازنده اینه که به اشیاء کلاس مقدار بده و هدف از ایجاد اشیا فراخوانی تابع هست. در لیست پارامتر تابع هم پارامتری میاد که سازنده با اون کار داره.
حالا ما در همین مثال نام درس، به شی gradebook1 یک مقداری دادیم وقتی با اون تابع getCourseName رو فراخوانی میکنیم مقدار شی جای CourseName میشینه به این ترتیب که در سازنده پارامتر name تعریف میشه در تابعset مقدار Coursename در name ذخیره میشه و در تابع get این متغیر coursename بازگشت میشه (البته مقدارش) و این مقدار هم همون مقدار پارامتر هست
این نتیجه گیری من درسته؟
خوب اگه اینجوری باشه در همین مثال بالا چرا با شی ای که مقدار نام کلاس رو داره تابع determineclassaverage رو فراخوانی کردیم؟
نتیجه گیریت درسته ، فقط من متوجه سوال آخرت نشدم ، یعنی این تابع رو پیدا نکردم:لبخند:
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
white tower
سلام.
من یه سوال دارم که خودمم خوب نمی دونم چیه.امیدوارم که متوجه بشید
این قضیه بایت کم ارزش و با ارزش چیه؟من الان یه برنامه دارم می نویسم که فکر کنم باید در قیمتیش جای این بایتها رو در یه عدد
short int
عوض کنم.این متغیر باید مقدار یک بگیره منتها در حالت برعکس معمول.امیدوارم متوجه شده باشید.اگر فرض کنیم در حالت معمولی بایت اول مقدار رو نگه می داره الان می خوام برعکسش کنم یعنی بایت دوم مقدار رو نگه داره.شاید اینطوری برنامه ام راه بیافته.هیچ ایراد دیگه ای جز این ندیدم.
ممنون .
سلام
مثلا این عدد (در مبنای دو) رو ببین :
10100010
این عدد 8 بیت هستش که به چهار بیت سمت راست میگندبایت کم ارزش ، یعنی اگه حذف بشند عدد زیاد تغییر نمیکنه ؛ ولی به چهار بیت سمت چپ بیت باارزش میگند ، یعنی اگه حذف بشند مقدار عدد به کلی تغییر میکنه
در مورد جابه جا کردن این بیت ها هم میتونی از یه آرایه کارکتری کمک بگیری ، الگوریتمش زیاد سخت نیست ، شروع کن :چشمک:
موفق باشی
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
mabbaszadegan
نتیجه گیریت درسته ، فقط من متوجه سوال آخرت نشدم ، یعنی این تابع رو پیدا نکردم:لبخند:
این تابع:
void determineclassaverage()
{
int total;
int gradecounter;
int grade;
int average;
total = 0;
gradecounter = 1;
while (gradecounter <= 10)
{
cout << "enter grade:";
cin >> grade;
total = total+grade;
gradecounter = gradecounter+1;
}
-
نقل قول: مشکلات من با ++C
خب این تابع که کارش مشخصه ، داره میانگین 10 تا عدد رو حساب میکنه و معدل 10 درس رو در خروجی چاپ میکنه :
average = total / 10; // integer division yields integer result
// display total and average of grades
cout << "\nTotal of all 10 grades is " << total << endl;
cout << "Class average is " << average << endl;
بعد توی تابع main اومده با استفاده از شی myGradeBook تابع determineClassAverage رو فراخونی کرده
موفق باشی
-
نقل قول: مشكلات من با ++C
خوب دادا مشکل همینه این شی mygradebook مگه مقدارش مخصوص چاپ نام درس نیست؟
مگه ما نباید یه شی دیگه ای درست کنیم که این تابع رو جداگونه احضار کنه؟
یا نه اصلا هیچ فرقی نداره ؟
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
majmaji
خوب دادا مشکل همینه این شی mygradebook مگه مقدارش مخصوص چاپ نام درس نیست؟
مگه ما نباید یه شی دیگه ای درست کنیم که این تابع رو جداگونه احضار کنه؟
یا نه اصلا هیچ فرقی نداره ؟
نه دیگه ، به وسیله همین یک شی میتونی به تمام توابع عضو دسترسی داشته باشی و نیازی به تعریف شی جدید نداری
-
نقل قول: مشکلات من با ++C
یه سوال مبتدی :من یه متغیر اعشار دارم که وقتی چاپش می کنم با نماد علمی چاپ میشه.چیکار کنم که با اعشار بیاد که بفهمم چنده؟
ممنون
-
نقل قول: مشکلات من با ++C
اینو امتحان کن.
double f = (double)1312156644.564655;
printf("%f",f);
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
Negative_Se7en
اینو امتحان کن.
double f = (double)1312156644.564655;
printf("%f",f);
اول ممنون.
بعد با C++ لطف بفرمایید.
-
نقل قول: مشكلات من با ++C
یعنی منظور شما اینه که این کد در ++C اجرا نمیشه ؟!!!!!!
-
نقل قول: مشکلات من با ++C
نقل قول:
نوشته شده توسط
Negative_Se7en
یعنی منظور شما اینه که این کد در ++C اجرا نمیشه ؟!!!!!!
نه قربان کی چنین حرفی زد؟یه دستور کاملا سی پلاس پلاسی می خوام.
-
نقل قول: مشكلات من با ++C
دوست من. اگه هدفت اینه که خودت یه تابع بنویسی که این کارو بکنه یه سری به این بزن :
https://barnamenevis.org/showthread.php?t=204334
شاید به نظر بی ربط بیاد ولی به کاری شما میخواهید بکنید ربط داره.
یه تابع توش هست که رشته رو به int تبدیل میکنه ، به نظر من خودت یه سری تغییرات توش بده و یا ازش الگو بگیر و یه تابع بنویس که float یا double رو به رشته تبدیل کنه.:چشمک: