PDA

نسخه کامل مشاهده نسخه کامل : تبدیل یک تابع به کلاس



Vb1471
22-05-2012, 22:40
سلام دوستان میخواستم این برنامه رو که با تابع نوشته شده به کلاس تبدیل کنم . ممنون میشم اگر کسی میدونه راهنمایی کنه .

با تشکر


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

senaps
22-05-2012, 23:12
دوست عزیز، شما برنامه رو با ساختار نوشتین.....
ابتدا باید بدونین که همه چیز پیش فرض توی ساختار(استراکت) عمومیه مگر خلافش رو تعیین کنین، تو کلاس همه چی خصوصیه مگر اینکه خلافش رو تعیین کنین.....
بنابراین، ابتدا Struct رو تبدیل کنین به Class .....
در مرحله ی بعدی، میتونین همه یه Private برای خصوصی کردن یه Public برای عمومی کردن بعد از براکت } بزارین و دیگه مشکل حله.....

---------------
ویرایش: الان که برنامه رومیبینم، توابع رو توی استراکت ننوشتین.... الان وقت ندارم که بخونم همه ی کد رو که ببینم چیکار میخواد بکنه....
میتونید بخش معرفی اسم توابع رو داخل کلاس بنویسید....
بعدش در بیرون ساختار کلاس، توابع رو به شکل عادی بنویسید.....




اصولا این کدها کار میکنن؟؟ فک کنم با سی پلاس نوشتین نه؟ متغییر x معرفی شده در خط ۵ اصولا کجا تعریف شده؟؟ تا جایی که یادمه اگر اون ثابته که مثلا باید define بشه... ولی متغییر رو نمیشه بیرون از همه ی اسکوپ ها طراحی کرد.....
بعد شما هیچ جایی توابع رو معرفی نکردی.... تا جایی که یادمه، یه بار اسم تابع رو می نوشتیم با ارگومان هایی که میتونه بگیره،یه بار تابع رو می نوشتیم....و بعد بارها فراخوانی میکردیم....این مسئله تو کد های شما دیده نمیشه...

Vb1471
23-05-2012, 10:31
دوست عزیز ضمن تشکر بابت راهنمایی خوبتون ولی کارایی که گفتید انجام دادم ارور داد اگر ممکنه کد رو جایگزین کدهایی که فرمودید بکنید و قرار بدید . ممنون میشم . مرسی

senaps
23-05-2012, 11:08
اوکی الان دانشگاه هستم و فعلا فرصت نیست تا شب....فقط یه سوال: این کد ها در حالت عادی کار میکنن؟

Vb1471
23-05-2012, 11:13
بله به درستی کار میکنند ، میتونید کامپایل کنید و ببنید نتیجه رو .

god of war 2
23-05-2012, 14:44
سلام.
کدتون رو به کلاس تبدیل کردم البته بصورت خیلی ساده.
یک سازنده هم به کلاستون اضافه کردم که بتونید سایز لیست رو تعیین کنید و از حالت ثابت (مقدار 100) خارج شد.
چندتا اشکال جزئی هم داشت که برطرف شد.

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

Vb1471
23-05-2012, 17:47
ضمن تشکر فراوان از شما دوست عزیز ، فقط یه مشکلی که هست اینه که موقعی که مخاطب اضافه میشه و تمام میشه . موقع دیدن List شماره تلفن یه رقم دیگه نشون میده و شماره تلفن رو نشون نمیده . شما خودتون تست کنید

god of war 2
23-05-2012, 18:24
کدتون باگهای زیادی داره و فقط به عنوان یک کد تمرینی کارایی داره.
تست کردم مشکلی نداشت.
البته بنده هیچ تغییری در کدها ندادم فقط یک تابع (سازنده) اضافه کردم.
از کامپایلر gcc استفاده کردم و با کامپایلر vs هنوز امتحان نکردم.

p d
23-05-2012, 18:34
ضمن تشکر فراوان از شما دوست عزیز ، فقط یه مشکلی که هست اینه که موقعی که مخاطب اضافه میشه و تمام میشه . موقع دیدن List شماره تلفن یه رقم دیگه نشون میده و شماره تلفن رو نشون نمیده . شما خودتون تست کنید
کل کدتون و چک نکردم ولی چرا لیست رو از 1 شروع کردی ؟


for(unsigned int i=1;i<x;i++)

Vb1471
24-05-2012, 10:50
چون فکر کنم واسه خانه اول یه مقداری چیزی در نظر گرفته بودم . حالا از دوستان کسی برنامه دفترچه تلفن که با کلاس نوشته شده باشه و ساده باشه نداره . که دیگه این هم گیرو گور داشته باشه . ؟

ممنون میشم .

god of war 2
24-05-2012, 12:53
میتونید همین کد رو ارتقا بدید و مشکلاتشو برطرف کنید. به نظرم برای شروع خوب و ساده هست.

masmas.mhj
19-11-2012, 20:49
سلام دوستان میخواستم این برنامه رو که با struct در زبان C#‎ نوشته شده رو به کلاس در زبان C++‎ تبدیل کنم . ممنون میشم اگر کسی میدونه راهنمایی کنه .
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication17
{
public struct smartcard
{
public long id;
public string plk;
public string nm;
public short tp;
public float bl;
}
class Program
{
public static smartcard [] cards=new smartcard [1000];
static void Main(string[] args)
{
int noc;
Console.WriteLine("enter the number of smart cards:");
noc=Int32.Parse(Console.ReadLine());
for(int i=0;i<noc;i++)
{
Console.WriteLine("enter id,plk,nm,bl,tp(1=savari , 2=vanet)");
cards[i].id = long.Parse(Console.ReadLine());
cards[i].plk = Console.ReadLine();
cards[i].nm = Console.ReadLine();
cards[i].bl = float.Parse(Console.ReadLine());
cards[i].tp = short.Parse(Console.ReadLine());
}
int c;
while (true)
{
Console.WriteLine("enter a number:");
c = Int32.Parse(Console.ReadLine());
switch (c)
{
case 1:
{
for (int i = 0; i < noc; i++)
sort();
break;
}
case 2:
{
float used, balance;
long idno;
Console.WriteLine("enter your id & mizane masraf:");
idno = long.Parse(Console.ReadLine());
used = float.Parse(Console.ReadLine());
if (amend('d', idno, used, ref balance) == 1)
Console.WriteLine("{0},{1}", balance, idno);
else Console.WriteLine("sahmieh kafi nist,{0}", idno);
break;
}
case 3:
{
float used=0, balance=0;
long idno=0;
amend('c', idno, used, ref balance);
break;
}
case 4:
{
for (int i = 0; i < noc; i++)
Console.WriteLine("{0}",cards[i]);
break;
}
default:
{
Console.WriteLine("entekhabe ghalat!");
break;
}
}
}
}
public static void sort()
{
for (int i = 999; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (string.Compare(cards[j].nm, cards[j + 1].nm) > 0)
{
smartcard temp;
temp = cards[j];
cards[j]=cards[j+1];
cards[j + 1] = temp;
}
}
}
}
public static int amend (char actn, long idno, float used, ref float balance)
{
switch (actn)
{
case 'd':
{
int i;
for (i = 0; i < 1000 && cards[i].id != idno;i++ ) ;
if (cards[i].bl >= used)
{
cards[i].bl = used - cards[i].bl;
balance = cards[i].bl;
return 1;
}
else return 0;
break;
}
case 'c':
{
for (int i = 0; i < 1000; i++)
{
if (cards[i].tp == 1)
cards[i].bl += 60;
else cards[i].bl += 300;
return 1;
}
break;
}
}
}
}
}