Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Danh sách đặc, thực hiện việc cộng 2 số nguyên như thế nào?

  1. #1
    Ngày gia nhập
    05 2008
    Bài viết
    7

    Mặc định Danh sách đặc, thực hiện việc cộng 2 số nguyên như thế nào?

    Mình đc giáo viên cho đề bài là "Dùng danh sách đặc! Thực hiện việc cộng 2 số nguyên"
    Mình giải đc tới phần cộng 2 số ko dấu (2 số dương ví dụ 79 + 12 ) nhưng phần cộng 2 số có dấu (có dương có âm ví dụ 12 + (-44)) mình ko làm đc! Mong các bạn chỉ giáo! Code của mình (phần cộng ko dấu thôi) như sau:
    PHP Code:
    #include<iostream.h>
    #include<math.h>
    #include<iomanip.h>

    int mang1[100], mang2[100], mang3[100];
    int count1=0count2=0count3=0h=99k=99l=0nho;
    int so1so2;


    void nhap();
    void them();
    void xoa();
    void cong();
    void xuat();
    void xoamang3();

    //Ham main

    void main()
    {
        
    int chon;
        
    bool check1=true;


    //vong lap chon ban dau
        
    while (check1)
        {
            
    cout<<endl<<"   CHUONG TRINH CONG 2 MANG SO NGUYEN"<<endl<<endl;
            
    cout<<"Vui long chon 1 trong cac phep toan sau:"<<endl<<endl;
            
    cout<<"1. Nhap gia tri vao mang"<<endl;
            
    cout<<"2. Xuat mang ra man hinh"<<endl;
            
    cout<<"3. Them gia tri vao mang"<<endl;
            
    cout<<"4. Xoa gia tri trong mang"<<endl;
            
    cout<<"5. Cong 2 mang da co"<<endl;
            
    cout<<"6. Thoat"<<endl<<endl;
            
    cout<<"Ban chon: ";
            
    cin>>chon;
            switch (
    chon)
            {
                case 
    nhap();break;
                case 
    xuat();break;
                case 
    them();break;
                case 
    xoa(); xoamang3();break;
                case 
    cong();break;
                case 
    check1=false;break;
                default : 
    cout<<endl<<"Vui long chon so hop le!"<<endl;
            }


        }
    }


    //Ham nhap
    void nhap()
    {
        
    int sochonmang;
        
    bool check2=truecheck3=true;

    // Kiem tra so nhap vao

        
    while (check3)
        {
            
    cout<<endl<<"NHAP VAO 1 SO NGUYEN: ";
            
    cin>>so;
            if (
    so>65000)
            {
                
    cout<<endl<<"So vua nhap vuot qua gioi han cua kieu du lieu!"<<endl;
                
    check3=true;
            }
            else
                
    check3=false;
        }


        
    so=abs(so);
        while (
    check2)
        {
            
    cout<<endl<<"Ban muon nhap so tren vao mang nao: ";
            
    cin>>chonmang;
            switch(
    chonmang)
            {

    //Nhap vao mang 1        
            
    case 1
                
    xoamang3();

                
    h=99;
                
    count1=0;
                if(
    so<10)
                    
    mang1[h]=so;
                else
                {
                    while(
    so>=10)
                    {
                        
    mang1[h--]=so%10;
                        
    so/=10;
                        
    count1++;
                    }
                
    mang1[h]=so;
                }
                
    count1+=1;
                
    check2=false;
                break;



    //Nhap vao mang 2

            
    case 2:
                
    xoamang3();
                
    k=99;
                
    count2=0;
                if(
    so<10)
                    
    mang2[k]=so;
                else
                {
                    while(
    so>=10)
                    {
                        
    mang2[k--]=so%10;
                        
    so/=10;
                        
    count2++;
                    }
                
    mang2[k]=so;
                }
                
    count2+=1;
                
    check2=false;
                break;


            default: 
    cout<<endl<<"Vui long chon mang thich hop (mang 1 hoac mang 2)"<<endl;
            }
        }

    }


    //Ham them
    void them()
    {
        
    int sochonmang;
        
    bool check2=true;
        
    cout<<endl<<"NHAP VAO 1 SO NGUYEN: ";
        
    cin>>so;
        
    so=abs(so);
        while (
    check2)
        {
            
    cout<<endl<<"Ban muon them so tren vao mang nao: ";
            
    cin>>chonmang;
            switch(
    chonmang)
            {

    //Them vao mang 1        
            
    case 1
                if(
    so<10)
                    
    mang1[h]=so;
                else
                {
                    while(
    so>10)
                    {
                        
    mang1[h--]=so%10;
                        
    so/=10;
                        
    count1++;
                    }
                
    mang1[h]=so;
                }
                
    count1+=1;
                
    h--;
                
    check2=false;
                break;



    //Them vao mang 2

            
    case 2:
                if(
    so<10)
                    
    mang2[k]=so;
                else
                {
                    while(
    so>10)
                    {
                        
    mang2[k--]=so%10;
                        
    so/=10;
                        
    count2++;
                    }
                
    mang2[k]=so;
                }
                
    count2+=1;
                
    k--;
                
    check2=false;
                break;


            default: 
    cout<<endl<<"Vui long chon mang thich hop (mang 1 hoac mang 2)"<<endl;
            }
        }
    }



    //Ham xoa

    void xoa()
    {
        
    int chonmang,i,j;
        
    bool check2=true;
        while (
    check2)
        {
            
    cout<<endl<<"Ban muon xoa mang nao: ";
            
    cin>>chonmang;
            switch(
    chonmang)
            {
            case 
    1: for (i=h;i<100;i++)
                        
    mang1[i]=0;
                    
    h=99;
                    
    count1=0;
                    
    check2=false;
                    break;
            case 
    2:    for (j=k;j<100;j++)
                        
    mang2[j]=0;
                    
    k=99;
                    
    count2=0;
                    
    check2=false;
                    break;
            default : 
    cout<<endl<<"vui long chon mang thich hop (mang 1 hoac mang 2)"<<endl;
            }
        }

    }


    //Ham cong


    void cong()
    {
        
    xoamang3();
        
        
        
    //Kiem tra chieu dai 2 mang

        
    int t;
        if (
    count1>count2)
        {
            
    t=count1-count2;
            while (
    t>0)
            {
                
    mang2[--k]=0;
                
    t--;
            }
        }
        else if (
    count2>count1)
        {
            
    t=count2-count1;
            while (
    t>0)
            {
                
    mang1[--h]=0;
                
    t--;
            }
        }

    //Cong 2 mang


        
    if (count1>count2)
        {    
            
    nho=0;
            for (
    int v=99;v>=h;v--)
            {
                
    mang3[v]=(mang1[v]+mang2[v]+nho)%10;
                
    nho=(mang1[v]+mang2[v]+nho)/10;
                
    count3++;
            }
            if ((
    mang1[h]+nho)>=10)
            {
                
    mang3[--h]=1;
                
    count3++;
            }            
            
    l=100-count3;
        }
        else if (
    count2>count1)
        {
            
    nho=0;
            for (
    int v=99;v>=k;v--)
            {
                
    mang3[v]=(mang1[v]+mang2[v]+nho)%10;
                
    nho=(mang1[v]+mang2[v]+nho)/10;
                
    count3++;
            }
            if ((
    mang2[k]+nho)>=10)
            {
                
    mang3[--k]=1;
                
    count3++;
            }            
            
    l=100-count3;
            
        }
        else
        {
            
    nho=0;
            for (
    int v=99;v>=h;v--)
            {
                
    mang3[v]=(mang1[v]+mang2[v]+nho)%10;
                
    nho=(mang1[v]+mang2[v]+nho)/10;
                
    count3++;
            }
            if ((
    mang2[k]+mang1[h]+nho)>=10)
            {
                
    mang3[--k]=1;
                
    count3++;
            }            
            
    l=100-count3;
            
        }

    }


    //Ham xuat mang

    void xuat()
    {
    //Xuat mang 1    
        
    cout<<endl<<"Mang thu nhat: ";
        for (
    int i 100-count1i<100i++)
        {
            
    cout<<mang1[i];
        }
        
    cout<<endl;
    //    cout<<"Count1: "<<count1<<endl;
    //    cout<<"H: "<<h<<endl;

    //Xuat mang 2
        
    cout<<endl<<"Mang thu hai: ";
        for (
    int j 100-count2j<100j++)
        {
            
    cout<<mang2[j];
        }
        
    cout<<endl;
    //    cout<<"Count2: "<<count2<<endl;
    //    cout<<"K: "<<k<<endl;

    //Xuat mang 3
        
    cout<<endl<<"Mang thu ba: ";
        for (
    int l 100-count3l<100l++)
        {
            
    cout<<mang3[l];
        }
        
    cout<<endl;
    //    cout<<"Count3: "<<count3<<endl;

    }


    //Ham xoa mang 3
    void xoamang3()
    {
        for (
    l=count3;l<100;l++)
            
    mang3[l]=0;
        
    count3=0;

    PS: Code mình viết có khi ko hay lắm! Có gì các bạn chỉ giáo nha! Mình mới học xong phần căn bản à! Thanks trước vậy!

  2. #2
    Ngày gia nhập
    05 2008
    Bài viết
    7

    Hức hức! Sao ko bác nào giúp e hết vậy? Bộ nó khó lắm sao :(
    Huhu

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    7

    Trời ạ! Bí lắm ngĩ ko ra mới mang lên đây hi vọng các cao thủ chỉ dùm! Ai dè.....! Pùn vô tận :(

  4. #4
    Ngày gia nhập
    04 2007
    Bài viết
    134

    Bạn làm xong phần + 2 số dương rồi thì làm - 2 số dương thử xem.

Các đề tài tương tự

  1. Bài tập C Tạo danh sách liên kết các số nguyên tố từ danh sách L (dslk đơn)
    Gửi bởi pato24193 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 16-12-2012, 02:47 PM
  2. Xây dựng lớp đối tượng để chứa danh sách các phần tử số nguyên
    Gửi bởi trancongchau trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 20-03-2012, 02:50 PM
  3. danh sách liên kết đơn của các số nguyên
    Gửi bởi nhatnha trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 29-03-2011, 01:06 PM
  4. Danh sách liên kết đơn các số nguyên!
    Gửi bởi Mr Bin trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 05-07-2009, 09:07 AM
  5. [BT][Số nguyên lớn]Biểu diễn số nguyên lớn bằng danh sách liên kế
    Gửi bởi yuno trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 13-07-2007, 11:46 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn