ماشین حساب مهندسی نوشته شده با برنامه C

سلام 

امروز بعد مدتی طولانی اومدم تا براتون یه برنامه عالی و کاربردی بذارم 

من خودم بابت این برنامه ۱۰۰۰۰ تومان دادم تا پیداش کنم 

یه فایل TxT هستش که سورس نوشتاری ماشین حساب مهندسی است که با C نوشتنش 

میتونید از ادامه مطلب ببینیدش 


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace calculator
{
   /// <summary>
   /// Summary description for Form1.
   /// </summary>
   public class Form1 : System.Windows.Forms.Form
   {
      private System.Windows.Forms.TextBox txtInFix;
      private System.Windows.Forms.TextBox txtPostFix;
      private System.Windows.Forms.RichTextBox txtResult;
      private System.Windows.Forms.Button btnLevel1;
      private System.Windows.Forms.Button btnLevel2;
      private System.Windows.Forms.RichTextBox txtResult1;
      private System.Windows.Forms.Label labInFix;
      private System.Windows.Forms.Label labPostFixe;
      private System.Windows.Forms.Label labResult;
      private System.Windows.Forms.TextBox txtResultPostFixe;
      private System.Windows.Forms.Label labPreResult;
      private System.Windows.Forms.Label label1;
      private System.Windows.Forms.TextBox txtResultPer;
      private System.Windows.Forms.ContextMenu contextMenu1;
      private System.Windows.Forms.MenuItem menuItem1;
      private System.Windows.Forms.MenuItem menuItem2;
      private System.Windows.Forms.TextBox txtPerFixe;
      private System.Windows.Forms.MainMenu mainMenu1;
      private System.Windows.Forms.MenuItem menuItem3;
      private System.Windows.Forms.MenuItem menuItem4;
      private System.Windows.Forms.MenuItem menuItem5;
      private System.Windows.Forms.Label label2;
      /// <summary>
      /// Required designer variable.
      /// </summary>
      private System.ComponentModel.Container components = null;

      public Form1()
      {
         //
         // Required for Windows Form Designer support
         //
         InitializeComponent();

         //
         // TODO: Add any constructor code after InitializeComponent call
         //
      }

      /// <summary>
      /// Clean up any resources being used.
      /// </summary>
      protected override void Dispose( bool disposing )
      {
         if( disposing )
         {
            if (components != null)
            {
               components.Dispose();
            }
         }
         base.Dispose( disposing );
      }

      #region Windows Form Designer generated code
      /// <summary>
      /// Required method for Designer support - do not modify
      /// the contents of this method with the code editor.
      /// </summary>
      private void InitializeComponent()
      {
         this.txtInFix = new System.Windows.Forms.TextBox();
         this.txtPostFix = new System.Windows.Forms.TextBox();
         this.btnLevel1 = new System.Windows.Forms.Button();
         this.txtResult = new System.Windows.Forms.RichTextBox();
         this.btnLevel2 = new System.Windows.Forms.Button();
         this.txtResult1 = new System.Windows.Forms.RichTextBox();
         this.labInFix = new System.Windows.Forms.Label();
         this.labPostFixe = new System.Windows.Forms.Label();
         this.txtResultPostFixe = new System.Windows.Forms.TextBox();
         this.labResult = new System.Windows.Forms.Label();
         this.labPreResult = new System.Windows.Forms.Label();
         this.txtResultPer = new System.Windows.Forms.TextBox();
         this.label1 = new System.Windows.Forms.Label();
         this.txtPerFixe = new System.Windows.Forms.TextBox();
         this.contextMenu1 = new System.Windows.Forms.ContextMenu();
         this.menuItem1 = new System.Windows.Forms.MenuItem();
         this.menuItem2 = new System.Windows.Forms.MenuItem();
         this.mainMenu1 = new System.Windows.Forms.MainMenu();
         this.menuItem3 = new System.Windows.Forms.MenuItem();
         this.menuItem4 = new System.Windows.Forms.MenuItem();
         this.menuItem5 = new System.Windows.Forms.MenuItem();
         this.label2 = new System.Windows.Forms.Label();
         this.SuspendLayout();
         //
         // txtInFix
         //
         this.txtInFix.Location = new System.Drawing.Point(64, 16);
         this.txtInFix.Name = "txtInFix";
         this.txtInFix.TabIndex = 0;
         this.txtInFix.Text = "";
         //
         // txtPostFix
         //
         this.txtPostFix.BackColor = System.Drawing.SystemColors.Control;
         this.txtPostFix.Location = new System.Drawing.Point(64, 48);
         this.txtPostFix.Name = "txtPostFix";
         this.txtPostFix.ReadOnly = true;
         this.txtPostFix.TabIndex = 1;
         this.txtPostFix.TabStop = false;
         this.txtPostFix.Text = "";
         //
         // btnLevel1
         //
         this.btnLevel1.Location = new System.Drawing.Point(264, 88);
         this.btnLevel1.Name = "btnLevel1";
         this.btnLevel1.TabIndex = 3;
         this.btnLevel1.Text = "Level1";
         this.btnLevel1.Click += new System.EventHandler(this.button1_Click);
         //
         // txtResult
         //
         this.txtResult.Location = new System.Drawing.Point(136, 144);
         this.txtResult.Name = "txtResult";
         this.txtResult.TabIndex = 4;
         this.txtResult.Text = "";
         //
         // btnLevel2
         //
         this.btnLevel2.Location = new System.Drawing.Point(360, 88);
         this.btnLevel2.Name = "btnLevel2";
         this.btnLevel2.TabIndex = 5;
         this.btnLevel2.Text = "Level2";
         this.btnLevel2.Click += new System.EventHandler(this.btnLevel2_Click);
         //
         // txtResult1
         //
         this.txtResult1.Location = new System.Drawing.Point(240, 144);
         this.txtResult1.Name = "txtResult1";
         this.txtResult1.TabIndex = 5;
         this.txtResult1.TabStop = false;
         this.txtResult1.Text = "";
         //
         // labInFix
         //
         this.labInFix.AutoSize = true;
         this.labInFix.Location = new System.Drawing.Point(8, 16);
         this.labInFix.Name = "labInFix";
         this.labInFix.Size = new System.Drawing.Size(35, 16);
         this.labInFix.TabIndex = 6;
         this.labInFix.Text = "InFix :";
         //
         // labPostFixe
         //
         this.labPostFixe.AutoSize = true;
         this.labPostFixe.Location = new System.Drawing.Point(8, 48);
         this.labPostFixe.Name = "labPostFixe";
         this.labPostFixe.Size = new System.Drawing.Size(48, 16);
         this.labPostFixe.TabIndex = 7;
         this.labPostFixe.Text = "PostFix :";
         //
         // txtResultPostFixe
         //
         this.txtResultPostFixe.BackColor = System.Drawing.SystemColors.Menu;
         this.txtResultPostFixe.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
         this.txtResultPostFixe.Cursor = System.Windows.Forms.Cursors.Arrow;
         this.txtResultPostFixe.Location = new System.Drawing.Point(288, 16);
         this.txtResultPostFixe.Name = "txtResultPostFixe";
         this.txtResultPostFixe.ReadOnly = true;
         this.txtResultPostFixe.TabIndex = 8;
         this.txtResultPostFixe.TabStop = false;
         this.txtResultPostFixe.Text = "";
         //
         // labResult
         //
         this.labResult.AutoSize = true;
         this.labResult.Location = new System.Drawing.Point(192, 16);
         this.labResult.Name = "labResult";
         this.labResult.Size = new System.Drawing.Size(83, 16);
         this.labResult.TabIndex = 9;
         this.labResult.Text = "PostFix Result :";
         //
         // labPreResult
         //
         this.labPreResult.AutoSize = true;
         this.labPreResult.Location = new System.Drawing.Point(192, 48);
         this.labPreResult.Name = "labPreResult";
         this.labPreResult.Size = new System.Drawing.Size(81, 16);
         this.labPreResult.TabIndex = 11;
         this.labPreResult.Text = "PreFix  Result :";
         //
         // txtResultPer
         //
         this.txtResultPer.BackColor = System.Drawing.SystemColors.Menu;
         this.txtResultPer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
         this.txtResultPer.Cursor = System.Windows.Forms.Cursors.Arrow;
         this.txtResultPer.Location = new System.Drawing.Point(288, 48);
         this.txtResultPer.Name = "txtResultPer";
         this.txtResultPer.ReadOnly = true;
         this.txtResultPer.TabIndex = 10;
         this.txtResultPer.TabStop = false;
         this.txtResultPer.Text = "";
         //
         // label1
         //
         this.label1.AutoSize = true;
         this.label1.Location = new System.Drawing.Point(8, 80);
         this.label1.Name = "label1";
         this.label1.Size = new System.Drawing.Size(43, 16);
         this.label1.TabIndex = 13;
         this.label1.Text = "PreFix :";
         //
         // txtPerFixe
         //
         this.txtPerFixe.BackColor = System.Drawing.SystemColors.Control;
         this.txtPerFixe.Location = new System.Drawing.Point(64, 80);
         this.txtPerFixe.Name = "txtPerFixe";
         this.txtPerFixe.ReadOnly = true;
         this.txtPerFixe.TabIndex = 2;
         this.txtPerFixe.TabStop = false;
         this.txtPerFixe.Text = "";
         //
         // contextMenu1
         //
         this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                                                   this.menuItem1,
                                                                   this.menuItem2});
         //
         // menuItem1
         //
         this.menuItem1.Index = 0;
         this.menuItem1.Text = "&Help";
         this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
         //
         // menuItem2
         //
         this.menuItem2.Index = 1;
         this.menuItem2.Text = "About";
         this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
         //
         // mainMenu1
         //
         this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                                                 this.menuItem3});
         //
         // menuItem3
         //
         this.menuItem3.Index = 0;
         this.menuItem3.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                                                 this.menuItem4,
                                                                 this.menuItem5});
         this.menuItem3.Text = "&Help";
         //
         // menuItem4
         //
         this.menuItem4.Index = 0;
         this.menuItem4.Shortcut = System.Windows.Forms.Shortcut.F1;
         this.menuItem4.Text = "Help";
         this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click);
         //
         // menuItem5
         //
         this.menuItem5.Index = 1;
         this.menuItem5.Text = "About";
         this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);
         //
         // label2
         //
         this.label2.AutoSize = true;
         this.label2.Location = new System.Drawing.Point(56, 144);
         this.label2.Name = "label2";
         this.label2.Size = new System.Drawing.Size(73, 16);
         this.label2.TabIndex = 14;
         this.label2.Text = "Variable List :";
         //
         // Form1
         //
         this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
         this.ClientSize = new System.Drawing.Size(480, 266);
         this.ContextMenu = this.contextMenu1;
         this.Controls.Add(this.label2);
         this.Controls.Add(this.label1);
         this.Controls.Add(this.txtPerFixe);
         this.Controls.Add(this.labPreResult);
         this.Controls.Add(this.txtResultPer);
         this.Controls.Add(this.labResult);
         this.Controls.Add(this.txtResultPostFixe);
         this.Controls.Add(this.labPostFixe);
         this.Controls.Add(this.labInFix);
         this.Controls.Add(this.txtResult1);
         this.Controls.Add(this.btnLevel2);
         this.Controls.Add(this.txtResult);
         this.Controls.Add(this.btnLevel1);
         this.Controls.Add(this.txtPostFix);
         this.Controls.Add(this.txtInFix);
         this.Menu = this.mainMenu1;
         this.Name = "Form1";
         this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
         this.Text = "Calculator";
         this.Load += new System.EventHandler(this.Form1_Load);
         this.ResumeLayout(false);

      }
      #endregion

      /// <summary>
      /// The main entry point for the application.
      /// </summary>
      [STAThread]
      static void Main()
      {
         Application.Run(new Form1());
         
      }
      private void Form1_Load(object sender, System.EventArgs e)
      {
                  
      }
      /*************program****************/
      private struct num
      {
         public char label;
         public double val;

      }
      num[] objNum=new num[200];
      
      private int taghadom(object ch)
      {
         object[] list_oper={'(','+','-','*','/','_','^','S','L','T','Q','C'};
         int i;
         for(i=0;i<11&&!list_oper[i].Equals(ch);i++);
         return i;
      }
      private int taghadom_per(object ch)
      {
         object[] list_oper={')','+','-','*','/','^','_','S','L','T','Q','C'};
         int i;
         for(i=0;i<11&&!list_oper[i].Equals(ch);i++);
         return i;
      }
      private void perFixeFun(ref object[] s)
      {
         stack st=new stack();
         object ch;
         object[] re=new object[20];
         int i=0;
         int j=0;
         for(i=0;i<txtInFix.Text.Length;i++)
         {
            switch((char)s[i])
            {
                  
               case '(':
                  ch=st.pop();
                  while((char)ch!=')'&&!st.isempty())
                  {
                     re[j++]=ch;
                     ch=st.pop();
                  }
                  break;
               case '_':
               case '+':
               case '-':
               case ')':
               case '*':
               case '/':
               case '^':
               case 'S':
               case 'L':
               case 'T':
               case 'C':
               case 'Q':
                  
                  ch=st.Rtop();
                  if(taghadom_per(ch)<taghadom_per(s[i])&&!st.isempty())
                  {
                     st.push(s[i]);
                  }
                  else
                  {
                     if((char)s[i]!=')')
                     {
                        while(taghadom_per(ch)>taghadom_per(s[i])&&!st.isempty())
                        {
                           re[j++]=st.pop();
                           ch=st.Rtop();
                        
                        }
                        st.push(s[i]);
                     }
                     else
                     {
                        st.push(s[i]);
                     }
                                    
                  }
                  break;
               default :
                  re[j]=s[i];
                  j++;
                  break;
            }
         }
         for(;!st.isempty();)
            re[j++]=st.pop();
         txtPerFixe.Text="";
         int len=0;
         for(int k=0;re[k]!=null;k++,len++);
         //MessageBox.Show(len.ToString());
            object temp;
         for(int k=0;k<(len/2);k++)
         {
            temp=re[k];
            re[k]=re[len-k-1];
            re[len-k-1]=temp;

         }
         for(int k=0;re[k]!=null;k++)
         {
            txtPerFixe.Text+=re[k].ToString();
         }

      }
      private void postFixe (ref object[] s)
      {
         int j=0;
         int i=0;
         stack st=new stack();
         object ch;
         int len=txtInFix.Text.Length;
         object[] re=new object[200];
         for(i=0;i<len;i++)
         {
            switch((char)s[i])
            {
                  
               case ')':
                  ch=st.pop();
                  while((char)ch!='('&&!st.isempty())
                  {
                     re[j++]=ch;
                     ch=st.pop();
                  }
                  break;
               case '_':
               case '+':
               case '-':
               case '(':
               case '*':
               case '/':
               case '^':
               case 'S':
               case 'L':
               case 'T':
               case 'C':
               case 'Q':
                  
                  ch=st.Rtop();
                  if(taghadom(ch)<taghadom(s[i])&&!st.isempty())
                  {
                     st.push(s[i]);
                  }
                  else
                  {
                     if((char)s[i]!='(')
                     {
                        while(taghadom(ch)>taghadom(s[i])&&!st.isempty())
                        {
                           re[j++]=st.pop();
                           ch=st.Rtop();
                        
                        }
                        st.push(s[i]);
                     }
                     else
                     {
                        st.push(s[i]);
                     }
                                    
                  }
                  break;
               default :
                  re[j]=s[i];
                  j++;
                  break;
            }
         }
         for(;!st.isempty();)
            re[j++]=st.pop();
            
         for(int k=0;re[k]!=null;k++)
         {
            txtPostFix.Text+=((char)re[k]).ToString();
         }
         char[] result=new char[200];
         int count=0;

         for(int k=0;re[k]!=null;k++)
         {
            switch((char)re[k])
            {
               case '+':
               case '-':
               case '*':
               case '/':
               case '^':
               case 'S':
               case 'L':
               case 'T':
               case 'Q':
               case 'C':
               case '_':
                  break;
               default:
                  bool hav=false;
                  for(int l=0;result[l]!=0&&!hav;l++)
                  {
                     if(result[l]==(char)re[k])
                        hav=true;
                  }
                  if(!hav)
                     result[count++]=(char)re[k];
                  break;

            }
         }
         for(int k=0;result[k]!=0;k++)
         {
            txtResult.Text+=result[k].ToString()+" = "+"\n";
         }

      }

      private void button1_Click(object sender, System.EventArgs e)
      {
         txtResultPostFixe.Text="";
         txtResultPer.Text="";
         txtResult.Text="";
         object[] s_per=new object[200];
         object[] s=new object[200];
         txtPostFix.Text="";
         int i=0;
         for(i=0;i<txtInFix.Text.Length;i++)
         {
                s[i]=txtInFix.Text[i];
                s_per[i]=txtInFix.Text[i];            
         }
         int len=txtInFix.Text.Length;
         //reverse for perfixe
         for(i=0;i<txtInFix.Text.Length;i++)
         {
            if((char)s[i]=='-'&&i>1)
            {
               switch((char)s[i-1])
               {
                  case '-':
                  case '+':
                  case '*':
                  case '^':
                  case 'S':
                  case 'T':
                  case 'C':
                  case '(':
                  case 'L':
                     s_per[i]='_';
                     s[i]='_';
                     break;
               }
            }
            else if(i==0&&(char)s[i]=='-')
            {
               s_per[i]='_';
               s[i]='_';
            }
         }
         object temp;
         for(i=0;i<(len/2);i++)
         {
            temp=s_per[len-i-1];
                s_per[len-i-1]=s_per[i];
            s_per[i]=temp;
         }
         perFixeFun(ref s_per);
         postFixe(ref s);
         txtResult.Focus();
                        
      }
      private double calculate(char operat,double val)
      {
         switch(operat)
         {
            case 'S':
                    return Math.Sin((val*Math.PI)/180);               
            case 'L':
               return Math.Log10(val);
            case 'C':
               return Math.Cos((val*Math.PI)/180);
            case 'T':
               return Math.Tan((val*Math.PI)/180);
            case 'Q':
               return Math.Sqrt(val);
               
         }
         return 0;
      }
      private double calculate(char operat,double val1,double val2)
      {
         switch(operat)
         {
            case '+':
               return val1+val2;
               
            case '-':
               return val1-val2;
               
            case '*':
               return val1*val2;
               
            case '/':
               return val1/val2;
               
                case '^':
               return System.Math.Pow(val1,val2);
                    
                  
         }
         return 0;
      }

      private void btnLevel2_Click(object sender, System.EventArgs e)
      {
            stack stn=new stack();
         string ca="";
         string s1="";
         int h=0;
         for(int i=0;i<txtResult.Text.Length;i++)
         {
            ca="";
            s1="";
            for(;txtResult.Text[i]!=';'&&i+1<txtResult.Text.Length;i++)
            {
               s1+=txtResult.Text[i];

            }
            s1=s1.TrimStart(Convert.ToChar(10));
            s1=s1.TrimEnd(Convert.ToChar(10));
            
            if(s1.Length!=0)
                    objNum[h].label=s1[0];

            for(int k=0;k<s1.Length;k++)
            {
               switch(s1[k])
               {
                  case '-':
                  case '.':
                  case '0':
                        case '1':
                  case '2':
                  case '3':
                  case '4':
                  case '5':
                  case '6':
                  case '7':
                  case '8':
                  case '9':
                     txtResult1.Text+=s1[k];
                     ca+=s1[k];
                     break;

               
               }
               

            }
            txtResult1.Text+="\n";
            if(ca.Length!=0)
                    objNum[h++].val=Convert.ToDouble(ca);
            
            
         }
         for(int i=0;i<txtPostFix.Text.Length;i++)
         {
            switch(txtPostFix.Text[i])
            {
               case '_':
                        double res=Convert.ToDouble(stn.pop());
                  res=-res;
                  stn.push(res);
                                        
                  break;
               case '+':
               case '-':
                        double val2=Convert.ToDouble(stn.pop());
                  double val1=0;
                  if(!stn.isempty())
                  {
                     val1=Convert.ToDouble(stn.pop());
                  }
                        stn.push(calculate(txtPostFix.Text[i],val1,val2));
                        break;
               case '*':
               case '/':
               case '^':
                  val2=Convert.ToDouble(stn.pop());
                  val1=Convert.ToDouble(stn.pop());
                  stn.push(calculate(txtPostFix.Text[i],val1,val2));
                  break;

               case 'S':
               case 'L':
               case 'C':
               case 'T':
               case 'Q':
                  stn.push(calculate(txtPostFix.Text[i],Convert.ToDouble(stn.pop())));
                        break;
               default:
                  for(int n=0;objNum[n].val!=0;n++)
                  {
                     if(objNum[n].label==txtPostFix.Text[i])
                     {
                        stn.push(objNum[n].val);
                        //MessageBox.Show(objNum[n].val.ToString());
                        break;
                     }
                  }
                  break;
            }
         }
         txtResultPostFixe.Text=(Convert.ToDouble(stn.pop())).ToString();
         stn.makenull();

         for(int i=txtPerFixe.Text.Length-1;i>=0;i--)
         {
            switch(txtPerFixe.Text[i])
            {
               case '_':
                  double val2=Convert.ToDouble(stn.pop());
                  val2=-val2;
                  stn.push(val2);
                  break;

               case '+':
               case '-':
                  double val1=Convert.ToDouble(stn.pop());
                  val2=val1;
                  val1=0;
                  if(!stn.isempty())
                  {
                     val1=val2;
                     val2=Convert.ToDouble(stn.pop());
                  }
                  //double result=calculate(txtPerFixe.Text[i],val1,val2);
                  stn.push(calculate(txtPerFixe.Text[i],val1,val2));
                  break;
               case '*':
               case '/':
               case '^':
                  val1=Convert.ToDouble(stn.pop());
                  val2=Convert.ToDouble(stn.pop());
                  stn.push(calculate(txtPerFixe.Text[i],val1,val2));
                  break;

               case 'S':
               case 'L':
               case 'C':
               case 'T':
               case 'Q':
                  
                  stn.push(calculate(txtPerFixe.Text[i],Convert.ToDouble(stn.pop())));
                  break;
               default:
                  for(int n=0;objNum[n].val!=0;n++)
                  {
                     if(objNum[n].label==txtPerFixe.Text[i])
                     {
                        stn.push(objNum[n].val);
                        
                        break;
                     }
                  }
                  break;
            }
         }
         //MessageBox.Show(((double)stn.Rtop()).ToString());
         txtResultPer.Text=(Convert.ToDouble(stn.pop())).ToString();

         
      }
      private void menuItem2_Click(object sender, System.EventArgs e)
      {
         MessageBox.Show("This Program Make By Mohammad Ghaffari And Sepehr Usefi");
      }
      private void menuItem1_Click(object sender, System.EventArgs e)
      {
         
         Help.ShowHelpIndex(txtInFix,"help.html");
      }

      private void menuItem4_Click(object sender, System.EventArgs e)
      {
         Help.ShowHelpIndex(txtInFix,"help.html");
      }

      private void menuItem5_Click(object sender, System.EventArgs e)
      {
         MessageBox.Show("This Program Make By Mohammad Ghaffari And Sepehr Usefi");
      }

      
   }
   public class stack
   {
   
       private int N;
      private object[] buf=new object[20];
        private int top;
      public stack(){N=20;top=20;}
      public void push (object x)
      {
         if(top>0)
            buf[--top]=x;
      }
      public object pop()
      {
         object x;
            if(top<N)
            {
                x=buf[top++];
            return x;
            }
         return 0;
       }
        public object Rtop()
      {
         if(top<N)
         {
            
            return buf[top];
         }
         return 0;
      }
        public void makenull(){top=N;}
        public bool isempty ()
      {
            if(top==N)
                return true;
            return false;
        }
        public bool isfull  ()
        {
            if(top==0)
                return true;
            return false;
        }

   };


 

 

 

 

 

 

 

یا اگه خواستید می تونید از لینک زیر دانلودش کنید 

http://www.4shared.com/file/74240048/7d8fe582/KianSoft.html

نظرات 2 + ارسال نظر
امیر چهارشنبه 20 آذر‌ماه سال 1387 ساعت 15:23 http://worldbook.ir

سلام
خوبی
ما قبلا با هم تبادل لینک کردیم با نام عکس های باحال

حالا یک سایت زدم اگهه ممکنه اینو هم با نام زیر لینک کن بعد خبر بده تا لینکت کنم

دنیای کتاب
http://worldbook.ir
با تشکر

انجمن تخصصی الکترونیک ایران شنبه 28 دی‌ماه سال 1387 ساعت 23:50 http://www.electronix.ir

سلام.
وبلاگتون رو دیدیم. نسبتا خوب بود.
از سایت ما هم در صورت تمایل بازدید کنید.

با سپاس
انجمن متخصصان الکترونیک ایران

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد