30/09/2018, 23:54

Chương trình đổi vị trí 2 số trong mảng

#include <iostream>
#include <stdio.h>

using namespace std;
int N;
int chain[1000]={};
void init();
void permute(int a,int b);



int main(int argc, char** argv)
{
    cout<<"Nhap N";
    cin>>N;
    init();
    permute(chain[1],chain[4]);
    cout<<endl;
    for (int m=0;m<N;m++)
    {
        cout<<chain[m];
    }
}

int  permute(int a,int b)
{
    int k;
    k=a;
    a=b;
    b=k;
    
    
}
void init()
{
    
  for(int i=0;i<N;i++)
  {
    chain[i]=chain[i]+i+1;
    cout<<chain[i];
    
  }    
  cout<<endl;
    
}

mình đang viết chương trình đỏi chỗ vị trí của 2 số trong mảng theo ý tưởng này nhưng giá trị của a,b không trả về lại cho đối số chain[1] và chain[4] nên mọi người có thể giúp mình đc không? Tks

Khoa NTA viết 01:56 ngày 01/10/2018

Bạn nên học cách sử dụng con trỏ (pointer - C/C++) hoặc dùng tham chiếu (C++). Hàm có vấn đề: dĩ nhiên là permute(), sửa permute thành void permute(int &a, int &b) (ở cả 2 chỗ) là xong.
Lời khuyên cho bạn: đừng lười viết ra thêm 1 vài thông điệp để bản thân còn biết được chương trình đang chạy cái gì, in ra cái gì và nó thuộc vòng lặp nào, biến chạy có giá trị bao nhiêu. Mình thử biên dịch chương trình của bạn và cái in ra dính chùm và rất khó xem xét.

Vincent Viết viết 01:57 ngày 01/10/2018

cảm ơn bạn nhiều nha, mình sẽ lưu ý những điểm trên

Nghia Nguyen viết 02:06 ngày 01/10/2018

Vấn đề này là vấn đề muôn thưở đối với những người mới tiếp cận với C++. Đụng đến phần này bạn phải tìm hiểu kiến thức về con trỏ, về tham chiếu. Bạn phải nắm rõ bản chất của nó. Vì trong C++ cũng thấy con trỏ và tham chiếu.

Bài liên quan
0