PDA

View Full Version : تحلیل کد 2 برنامه کامل در ++C



haricanboy
پنج شنبه 27 آذر 1393, 18:39 عصر
سلام دوستان
دو تا برنامه سی پلاس پلاس دارم میخوام بدونم چیکار میکنه و چطوری کار میکنه نحوه کارش چطوریه
اگه تونستین در صورت امکان توضیح خط به خط هم بدین که بهتر متوجه بشم ...
ممنون.
البته متوجه میشدم کدهای برنامه های ساده رو ولی اینا بنظرم سخته نفهمیدم.

#include "stdafx.h"
#include<iostream>
#include <stdlib.h>
#include<string>
#include<conio.h>


using namespace std;
class NewDate
{
private:
int Year;
int Month;
int Day;
public:
NewDate()
{
Year = 0;
Month = 1;
Day = 1;
}


NewDate(int Newday, int Newmonth, int Newyear)
{
Year = Newyear;
Month = Newmonth;
Day = Newday;
}
NewDate(string str)
{
char y[4] = {str[6],str[7],str[8],str[9]};
char m[2] = {str[3],str[4]};
char d[2] = {str[0],str[1]};
Year = atoi(y);
Month = atoi(m);
Day = atoi(d);
}


void DateToString()
{
printf("%d.%d.%d",Day,Month,Year);
}


bool isLeap(int Year)
{

if ( Year % 400 == 0)
return true;
else if ( Year % 100 == 0)
return false;
else if ( Year % 4 == 0 )
return true;
return false;
}


int DaysTo(string date)
{
char y[4] = {date[6],date[7],date[8],date[9]};
char m[2] = {date[3],date[4]};
char d[2] = {date[0],date[1]};
int Year1 = atoi(y);
int Month1 = atoi(m);
int Day1 = atoi(d);
return (((Year1 - Year) * 365) + ((Month1 - Month) * 30) + (Day1 - Day));
}


NewDate Add(string date)
{
NewDate TempNewDate;
char y[4] = {date[6],date[7],date[8],date[9]};
char m[2] = {date[3],date[4]};
char d[2] = {date[0],date[1]};
int Year1 = atoi(y);
int Month1 = atoi(m);
int Day1 = atoi(d);
TempNewDate.Year = Year1 + Year;
TempNewDate.Month = Month1 + Month;
TempNewDate.Day = Day1 + Day;

TempNewDate.Month = TempNewDate.Month + (TempNewDate.Day / 30 );
TempNewDate.Day = TempNewDate.Day % 30;


TempNewDate.Year = TempNewDate.Year + (TempNewDate.Month / 12 );
TempNewDate.Month = TempNewDate.Month % 12;


return TempNewDate;


}
NewDate Sub(string date)
{
NewDate TempNewDate;
char y[4] = {date[6],date[7],date[8],date[9]};
char m[2] = {date[3],date[4]};
char d[2] = {date[0],date[1]};
int Year1 = atoi(y);
int Month1 = atoi(m);
int Day1 = atoi(d);
TempNewDate.Year = Year1 - Year;
TempNewDate.Month = Month1 - Month;
TempNewDate.Day = Day1 - Day;


TempNewDate.Month = TempNewDate.Month + (TempNewDate.Day / 30 );
TempNewDate.Day = TempNewDate.Day % 30;


TempNewDate.Year = TempNewDate.Year + (TempNewDate.Month / 12 );
TempNewDate.Month = TempNewDate.Month % 12;


return TempNewDate;
}


};
int _tmain(int argc, _TCHAR* argv[])
{
NewDate date("10.04.2000");
printf("Current Date:");
date.DateToString();
printf("\nYear Is Leap[1->Yes 2->No]:%d",date.isLeap(2000));
printf("\nDays Remining To Current Date:%d",date.DaysTo("15.05.2000"));
printf("\nAdd Date To Current Date:");
date.Add("15.05.2015").DateToString();
printf("\nSub Date In Current Date:");
date.Sub("15.05.2015").DateToString();
getch();
return 0;
}

--------------------------------------------------------------------------------------------------------------------------------




#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<iostream>
class Employee
{
public:
char Name[30];
char HireDate[15];
};


class PriceEmployee :public Employee
{

public:
int Hogog_Khedmat;


void Add(char* EName, char* EHireDate, int Hogog)
{
strncpy(Name,EName,30);
strncpy(HireDate,EHireDate,15);
Hogog_Khedmat = Hogog;
}


void GetInfo()
{
printf("Name:%s\tHireDate:%s\tType:Garardady\thogog:%d\n" , Name, HireDate ,Hogog_Khedmat );
}
};
class SalariedEmployee :public Employee
{
public:
int Hogog_Month;
void Add(char* EName, char* EHireDate, int Hogog)
{
strncpy(Name,EName,30);
strncpy(HireDate,EHireDate,15);
Hogog_Month = Hogog;
}


void GetInfo()
{
printf("Name:%s\tHireDate:%s\tType:Rasmi\thogog:%d\n" , Name, HireDate ,Hogog_Month );
}
};


class CommissionEmployee :public Employee
{
public:
int Hogog_Month;
int Forosh;
void Add(char* EName, char* EHireDate, int Hogog, int EForosh)
{
strncpy(Name,EName,30);
strncpy(HireDate,EHireDate,15);

Forosh = EForosh;
Hogog_Month = Hogog + (EForosh * 10 / 100);
}


void GetInfo()
{
printf("Name:%s\tHireDate:%s\tType:Darsadi\thogog:%d\tforo sh:%d\n" , Name, HireDate ,Hogog_Month,Forosh );
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int n;
PriceEmployee PEmployee;
SalariedEmployee SEmployee;
CommissionEmployee CEmployee;
while(1)
{
printf("\n");
printf("1- Add Karmad Garardadi.\n");
printf("2- Add Karmand Rasmi.\n");
printf("3- Add Karmand Darsadi.\n");
printf("4- Exit.\n");
printf("Select 1..5:");
scanf("%d",&n);
switch(n)
{
case 1:
PEmployee.Add("ali reza1","1390.12.10",30000);
PEmployee.GetInfo();
break;
case 2:
SEmployee.Add("mohsen","1380.12.10",20000);
SEmployee.GetInfo();
break;
case 3:
CEmployee.Add("vali","1384.10.13",4000,3000);
CEmployee.GetInfo();
break;
case 4:
exit(0);
break;
}
}
return 0;
}

ashkufaraz
پنج شنبه 27 آذر 1393, 21:26 عصر
برنامه دومی
کلاس employee شامل 2 تافیلد نام کارمند و تاریخ استخدام کارمند است
کلاس PriceEmployee همون حقوق کارمند قرار دادی است شامل تابع Add که نام کارمند و تاریخ و استخدام و میزان حقوقش را را اضافه می کنه
و یه فیلد حقوق داره
یه تابع GetInfo هم داره که مشخصات هم کارمندی که اضافه شده را میده
کلاس SalariedEmployee همون مانند کلاس حقوق کارمند است با همون توابع و فیلد ها فقط برای کارمند رسمی است
کلاس CommissionEmployee هم که درصد کمیسون کارمند است و ساختارش مشابه کلاس های قبلی Add اضافه می کنه و GetInfo هم مشخصاتش را نشون می ده
توی تابع main هم یه منو ساخته شده که متناسب با ورودی کاربر کارمند قرارداری یا رسمی اضافه و نمایش میده یا کمیسیون کارمند

haricanboy
جمعه 28 آذر 1393, 11:30 صبح
ممنون
کسی توضیحات بیشتر در مورد هر دو برنامه میتونه بده...

haricanboy
پنج شنبه 11 دی 1393, 17:31 عصر
سلام
دوستان تو این دو تا کد هم از کدهای ++C و هم از کدهای C استفاده شده درسته؟؟؟
یعنی امکانش هست از دستورات هر دو این زبانها تو یه برنامه استفاده کرد؟؟؟
توضیحش چیه