PDA

View Full Version : بدست آوردن جمع ارقام ماه تولد میلادی ، شمسی و ... در یک حلقه با ورود اطلاعات



yekta99
چهارشنبه 04 مرداد 1391, 21:12 عصر
سلام

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

کد زیر رو نوشتم

class Employee
{
public int ID, Tel;
public string Name, Family;
public DateTime Born;

}
static void Main(string[] args)
{
Employee em = new Employee();

Console.Write("Number of employee?");
int num = int.Parse(Console.ReadLine());
int[] A = new int[num];

for (int i = 0; i < num; i++)
{
Console.Write("Name?");
em.Name = Console.ReadLine();
Console.Write("Family?");
em.Family = Console.ReadLine();
Console.Write("ID?");
em.ID = int.Parse(Console.ReadLine());
Console.Write("Phone?");
em.Tel = int.Parse(Console.ReadLine());
Console.Write("Date of born?");
em.Born = DateTime.Parse(Console.ReadLine());

A[i] = persianMounth + em.Born.Month + hijriMonth ;
}
foreach (var item in A)
{
Console.WriteLine(item);
}
}


حالا مشکل اینه که کدهای مربوط به تقویم رو کجا بذارم ؟
اگه قبل از for بذارم ، چون هنوز اطلاعات وارد نشده که تاریخی باشه برای تبدیل و ارور میده
اگه بعد از for بذارم ، تاریخ هایی که میخوام جمع کنم ناشناخته هستن
اگه داخل حلقه هم بذارم که نمیشه چون توی کل برنامه میخوام ازشون استفاده کنم

چه راهی رو پبشنهاد می کنید ؟

PersianCalendar pcal = new PersianCalendar();
int persianMounth = pcal.GetMonth(em.Born);

HijriCalendar hcal = new HijriCalendar();
int hijriMonth = hcal.GetMonth(em.Born);

متشکرم

fjm11100
پنج شنبه 05 مرداد 1391, 11:21 صبح
درست نفهمیدم اما واسه چیزی که فهمیدم دو راه است. شما میتونی مقادیر را داخل حلقه بگیری و بدی به متغیرهایی که قبل حلقه تعریفش کردی و بعد که حلقه تمام شد محاسبات را روی مقادیر نگهداری شده در اون متغیرها انجام بدی. یا اینکه باز یکسری متغیر قبل حلقه تعریف کنی و محاسبات را درون حلقه بکنب و جواب محاسبات را بدی به اون متغیرها و بعد از حلقه از مقادیر داخل متغیرهات استفاده کنی.

yekta99
پنج شنبه 05 مرداد 1391, 11:54 صبح
ممنون از توجهتون
من میخوام جمع ماه تولد رو به شمسی و قمری و میلادی برای هر فرد داشته باشم و توی برنامه برای مقایسه نیاز دارم بهش ، این روشی رو که خودم نوشتم اگر به جای مثلا خط زیر
A[i] = persianMounth + em.Born.Month + hijriMonth ;
بنویسم
A[i] = em.Born.Year + em.Born.Month + em.Born.Day ;
جواب میده . اگر این خط رو بیرون از حلقه بذارم یا با یه حلقه جدا بنویسمش فقط برای نفر آخری که اطلاعات رو وارد می کنم جواب رو بر می گردونه

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

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

fjm11100
پنج شنبه 05 مرداد 1391, 16:38 عصر
میتونی یک datatable با چندتا ستون قبل حلقه تعریف کنی بعد توی حلقه هربار یک سطر بهش add کنی. البته اگر هر نفر علاوه بر این مجموع باید داده های دیگه هم داشته باشه مثلا نام و نام خانوادگی اگر نه فقط یک مقدار عددی است میتونی از List استفاده کنی و هربار بهش یک عضو Add کنی

yekta99
جمعه 06 مرداد 1391, 17:38 عصر
من نمیخوام از دیتابیس استفاده کنم ، برای ذخیره داده هام از لیست استفاده می کنم

List<Employee> lst = new List<Employee>();

و با یه دستور Add تمام مقادیر کلاس رو داخلش ذخیره می کنم
lst.Add(em);


مشکل من بیشتر اینه که کدهای تقویم رو کجا بذارم ؟
و دوم اینکه بعدش چجوری از این مقدار بدست اومده ، توی برنامه استفاده کنم ؟

ممنون از وقتی که گذاشتید