توضیح:جمع دو عدد تا99رقم

mhabat

Member
با سلام.لطفا اگه میشه سورس زیر رو برام توضیح بدین.
شما برای توجیح کردن یک سورس که دستوراتش زیاد میشه از شیوه ی خاصی استفاده می کنید؟
وقتی یک متغیر از نوع کرکتر به شکل زیر تعریف می کنیم و بهش عدد صفر میدیم تمامه خانه ها برابر صفر میشن یا فقط خانه اول؟برای چه منظوری اونو صفر قرار میدین؟
کد:
char a[99]={0};
سورس:
کد:
 #include <iostream.h>
#include <conio.h>

void main()
{
    int x1[99]={0}, x2[99]={0}, out[99]={0},i=-1,i2=-1,count;
    char temp[99];
    cout<<"Enter the first number:"<<endl; //get 1st number
    do //get it using getche()
    {
        i++;
        temp[i]=getche();
    }while(temp[i]!=13);
    i--;
    int ii=i;
    for(int c=0;c<=i;c++) //convert 1st number from char to int
    {
        x1[c]=temp[ii]-48;
        ii--;
    }

    ii=i;
    cout<<"\n\nFirst number: ";
    for(;ii>=0;ii--)
        cout<<x1[ii];
    cout<<endl;

    cout<<"\nEnter the second number:"<<endl; //get 2nd number
    do //get it using getche()
    {
        i2++;
        temp[i2]=getche();
    }while(temp[i2]!=13);
    i2--;
    ii=i2;
    for(c=0;c<=i2;c++) //convert 2nd number from char to int
    {
        x2[c]=temp[ii]-48;
        ii--;
    }


    cout<<"\n\nSecond number: ";
    ii=i2;
    for(;ii>=0;ii--)
        cout<<x2[ii];

    count=(i>i2)?i:i2; //recognize biggest array
    int ex=0, temp2, temp3; //define some vars for temporary number and the extra
    for(ii=0;ii<=count;ii++) //+ the arrays
    {
        temp2=(x1[ii]+x2[ii]);
        temp2+=ex;
        if(temp2<10)
            out[ii]=temp2;
        else
        {
            temp3=(temp2/10);
            ex=temp3;
            temp3*=10;
            out[ii]=(temp2-temp3);
        }

    }

    cout<<"\n\nResult:"<<endl;

    for(;count>=0;count--)
        cout<<out[count];


}
خیلی ممنون
بــــدرود
 

majid1605

Active Member
این برنامه میاد دوتا عددی که بهش میدید رو توی دوتا آرایه ذخیر می کنه و سپس خونه های متناظر رو دو به دو با هم جمع می کنه .مثل جمع خودمون اگه جمع دوتا از خونه ها بزرگتر از 9 بشه همون قضیه 10 بر یک خودمون رو انجام میده .
منظورتون از توجیه کردن چیه؟
اگه منظورتون اینه که چطور درکش می کنیم یا ازش سر در میاریم ، از توضیحات داخلش استفاده می کنیم یا اونو مرحله به مرحله اجرا می کنیم تا ازش سر در بیاریم و ....:green:

برای جواب سوال آخرت

کد:
#include <iostream>
#include <conio.h>
using namespace std;

void main()
{
    char majid[5] = {0} ;
    for (int i = 0 ;i < 5; i++)
    cout << "majid["<< i << "]=" << majid[i] << endl;
    getch();
}
این برنامه رو اجرا کن

فقط توی این خط

کد:
char majid[5] = {0} ;
این کدها رو هر بار جایگزین کن

کد:
int majid[5] = {6} ;
کد:
int majid[5] = {6,9} ;

کد:
char majid[5] = {7} ;
اگه باز متوجه نشدی بگو تا بیشتر توضیح بدم
 

mhabat

Member
سلام ممنون از پاسخ خوبتون. این قسمت:
کد:
char majid[5] = {0} ;
که وقتی اجرا میکردی مقابل:کلمه مجید چیزی رو نمایش نمیداد اما اگه بجای اون عدد هایی که گفتینو مزاشتم اولین کلمه ی مجید روبه روش یه شکلی شبیه خاج تو پاستور هست؟...!اونو نشان میداد.
خیلی ممنون
بدرود
 

majid1605

Active Member
واسه اینکه چون آرایه از نوع char هست کارکتر Null رو می زاره که یعنی هیچی :green: کاراکتر NULL (تهي) که کد اسکی اش صفر 0
یعنی وقتی به آرایه ایی از نوع char عددی رو انتساب میدیم درواقع کامپایلر اونو کد اسکی در نظر می گیره نه خود عدد .
 

mhabat

Member
سلام ممنون از پاسخ خوبتون این قسمت رو متوجه نمیشم:
کد:
 else
        {
            temp3=(temp2/10);
            ex=temp3;
            temp3*=10;
            out[ii]=(temp2-temp3);
        }
(اون خط آخر که عمل در بر یک خودتون رو انجام میده رو متوجه نمشم.)
اگه جع دوعدد بزرگتر از10باشه تو خط بالا برار صفر میشه خوب برای چه این کارو میکنه.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا