وبلاگ من

۴ مطلب در خرداد ۱۳۹۶ ثبت شده است

ارسال مرجع و با مقدار در c#

جمعه, ۲۶ خرداد ۱۳۹۶، ۰۶:۲۴ ب.ظ
class در c# منغییر ها را به صورت مرجع ارسال می کند . lمثلا در این مثال چون هر بار مقادری obj تغییر می کند در نهایت تمام حافظه ی تخصیص داده شده برای list با c,3 پر می شوند
اما struct مقادیر را به صورت کپی مقدار ارسال می کند در نتیجه اگر همین مثال را به صورت :
struct a
{
      public string txt;
      public int num;
}
تعریف کنیم مقادیر list به صورت a,1 و b,2 و c,3  ذخیره می شود
class a
{
      public string txt;
      public int num;
}
//-------------------
List<a> AList = new List<a>();
a obj = new a();
//-------------------
obj.txt = "a";
obj.num = 1;
AList.Add(obj);
//------------------
obj.txt = "b";
obj.num = 2;
AList.Add(obj);
//-------------------
obj.txt = "c";
obj.num = 3;
AList.Add(obj);


  • مرتضی رحیم زاده

ایجاد پروژه جدید در Visual c ++

دوشنبه, ۲۲ خرداد ۱۳۹۶، ۱۱:۲۴ ب.ظ
ابتدا از بخش CLR گزینه CLR Empty Project  را انتخاب کنید

روی نام پروژه راست کلیک کرده و ... Add > New Item را انتخاب کنبد
سپس visual C++ > UI > Windows Form را انتخاب کنبد

در ادامه روی نام فرم خود کلیک کنید و کد زیر را را در آن جا بنویسید:
#include "MyForm.h"
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThread]
void Main(array<String^>^ args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Project1::MyForm form;
Application::Run(%form);
}
که MyForm نام فرم و Project1 نام پروژه است

سپس روی نام پروژه راست کلیک کرده و Properties را انتخاب کنید 
در پنجره ای که باز می شود به ترتیب:
Configuration Properties->Linker >System>Windows (/SUBSYSTEM:WINDOWS)
و در همان بخش :
Advanced >Entry Point >  Main
را تایپ کنید
  • مرتضی رحیم زاده

برنامه ضرب و جمع اعداد بزرگ

پنجشنبه, ۱۸ خرداد ۱۳۹۶، ۱۱:۵۶ ب.ظ
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
class l_int
{
vector <int> vec;
protected:
void fix(l_int & temp)
{
if(vec.size()<temp.vec.size())
for(int i=vec.size();i<temp.vec.size();i++)
vec.push_back(0);
else if(vec.size()>temp.vec.size())
for(int i=temp.vec.size();i<vec.size();i++)
temp.vec.push_back(0);
}
void zero(l_int & temp)
{
for(int i=0;i<temp.vec.size();i++)
temp.vec.at(i)=0;
}
public:

l_int(const string txt="0")
{
vec.resize(txt.length());
for(int i=0;i<txt.length();i++)
vec.at(i)=txt[txt.length()-1-i]-48;
}
l_int(l_int &temp )
{
/*
vec.resize(temp.vec.size());
for(int i=0;i<temp.vec.size();i++)
vec.at(i)=temp.vec.at(i);
*/
vec.reserve(temp.vec.size());
copy(temp.vec.begin(),temp.vec.end(),back_inserter(vec));
}

~l_int()
{
vec.clear();
}
l_int operator + (l_int &temp)
{
fix(temp);
l_int Sum;
Sum.vec.resize(vec.size());
zero(Sum);
int sum=0;
for(int i=0;i<vec.size();i++)
{
Sum.vec.at(i)= ( vec.at(i) + temp.vec.at(i) +sum) %10;
sum=( vec.at(i) + temp.vec.at(i) +sum ) /10;
if(i==vec.size()-1 && sum>0)
Sum.vec.at(vec.size())=sum;
}
return Sum;
}
l_int operator *(l_int &temp)
{
vec.push_back(0);
temp.vec.push_back(0);
int sum;
l_int Mult;
Mult.vec.resize(temp.vec.size()+vec.size());
zero(Mult);
for(int i=0;i<temp.vec.size();i++)
{
sum=0;
for(int j=0;j<vec.size();j++)
{
Mult.vec.at(i+j)+=(vec.at(j)*temp.vec.at(i)+sum)%10;
if(Mult.vec.at(i+j)>9)
{
Mult.vec.at(i+j)=Mult.vec.at(i+j)%10;
Mult.vec.at(i+j+1)++;
}
sum=(vec.at(j)*temp.vec.at(i)+sum)/10;
}
}
return Mult;
}
l_int& operator =(const l_int &temp)
{
vec.resize(temp.vec.size());
for(int i=0;i<temp.vec.size();i++)
vec.at(i)=temp.vec.at(i);
return *this;
}
l_int& operator =(const string txt)
{
vec.resize(txt.length());
for(int i = 0 ; i<vec.size() ;i++)
vec.at(i)=txt[txt.length()-1-i]-48;
return *this;
}
friend ostream& operator <<(ostream &out,l_int &temp);
friend istream& operator >>(istream &in,l_int &temp);
};
ostream& operator <<(ostream &out,l_int &temp)
{
bool Check=false;
for(int i=temp.vec.size()-1;i>=0;i--)
if(temp.vec.at(i)>0 || Check==true)
{
cout<<temp.vec.at(i);
Check=true;
}
if(Check==false)
cout<<"0";
return out;
}
istream& operator >>(istream &in,l_int &temp)
{
string txt;
cin>>txt;
temp.vec.resize(txt.length());
for(int i = 0 ; i<temp.vec.size() ;i++)
temp.vec.at(i)=txt[txt.length()-1-i]-48;
return in;
}
int _tmain(int argc, _TCHAR* argv[])
{
l_int A="20";
l_int B="10";
//cin>>A>>B;
//A="5";
l_int C;
l_int D;

C=A+B;
D=A*B;
cout<<"A+B:"<<C<<endl;
cout<<"A*B:"<<D<<endl;
system("pause");
return 0;
}


  • مرتضی رحیم زاده

پیاده سازی آرایه پویا با کلاس

سه شنبه, ۲ خرداد ۱۳۹۶، ۰۷:۲۰ ب.ظ

#include "stdafx.h"
#include <iostream>

using namespace std;
class Array{
int cap;
int len;
int *arr;
public:
Array() //constructor
{
cap=0;
len=0;
arr=new int;
}
Array(int x) //constructor 
{
cap=x;
len=0;
arr=new int[x];
}
Array(const Array &temp) //copy constructor
{
cap=temp.cap;
len=temp.len;
arr=new int[cap];
for(int i=0;i<temp.len;i++)
arr[i]=temp.arr[i];
}
~Array()  //destructor
{
delete [] arr;
}
void set(int x)
{
if(len<cap)
{
arr[len]=x;
len++;
}
else
{
int *temp=new int[cap]; //new array
for(int i=0;i<cap;i++) //set member of arr to new array named temp
temp[i]=arr[i];
delete [] arr; //delete arr 
int *arr=new int[cap*2]; //new arr with more capacity
for(int i=0;i<cap;i++) //get back member of old arr to new arr with temp
arr[i]=temp[i];
delete [] temp; //free space of temp with delet that
cap*=2; //more cap (mean : cap=cap*2)
arr[len]=x; //set
len++;
}


}
void print()
{
for(int i=0;i<len;i++)
cout<<arr[i]<<endl;
}
Array& operator =(Array temp)
{
if(cap<=temp.cap)
{
for(int i=0;i<temp.len;i++)
arr[i]=temp.arr[i];
len=temp.len;
cap=temp.cap;
}
else
{
delete [] arr; 
int *arr=new int[temp.cap]; //fix array capacity
for(int i=0;i<temp.len;i++) //put member
arr[i]=temp.arr[i];
len=temp.len;
cap=temp.cap;
}
return *this;
}
Array operator +(Array A2)
{
Array A3(cap+A2.cap);
A3.cap=cap+A2.cap;
A3.len=len+A2.len;
for(int i=0;i<len;i++)
A3.arr[i]=arr[i];
for(int i=len;i<A2.len;i++)
A3.arr[i]=A2.arr[i];
return A3;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Array A(5);
A.set(0);A.set(1);A.set(2);
Array B(5);
A.set(4);A.set(5);
Array C;
C=A+B;
C.print();
system("pause");
return 0;
}

  • مرتضی رحیم زاده