Đổi chỗ hai phần tử trong mảng

/* input: nhap so n;
		  nhap n so;
		  nhap 2 so x, y;
	output: n so doi cho 2 vi tri x va y cho nhau */
#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int a[100];
	for(int i=0; i<n; i++)
		{
			cin >> a[i];
		}
	int x, y;
	cin >> x >> y;
	int m=0;
	for(int i=0; i<n; i++)
		{
			m=a[x-1];
			a[x-1]=a[y-1];
			a[y-1]=m;
		}
	for(int i=0; i<n; i++)
		{
			cout << a[i]<<" ";
		}
	return 0;
}

khi e cho n=5 thì bài toán vẫn đúng nhưng khi cho n=10 thì lại ko được:((

Đổi chỗ 2 phần tử thì đưa vào for làm gì bạn ơi. Bạn cần lặp lại việc đổi chỗ 2 phần tử hả?

4 Likes

oh cảm ơn bạn, mình mới code lại nghĩ cứ dùng đến mảng là phải đưa vào for :sweat_smile:

Đây là code của mình, bạn tham khảo nhé !

/* input: nhap so n;
		  nhap n so;
		  nhap 2 so x, y;
	output: n so doi cho 2 vi tri x va y cho nhau */
#include <iostream>
using namespace std;
int main()
{
    int n;
    int a[10];
    cout << "nhap so phan tu: ";
    cin >> n;
    for(int i=0; i<n;i++)
    {
        cout << "nhap phan tu thu " << i+1<< "  ";
        cin >> a[i];
    }
    int x,y;
    cout << " nhap so x ";
    cin >> x;
    cout << "nhap so y ";
    cin >> y;
for(int j=0;j<n;j++)
     {
         if(a[j]==x)
         {
             for(int k=0; k < n; k++)
             {
                 if(a[k]==y)
                 {
                     int temp;
                     temp = x;
                     x = y;
                     y = temp;
                     a[j]=x;
                     a[k]=y;
                 }
             }

         }
     }
     for(int i=0;i<n;i++)
        cout << a[i];
}

Không phải, thớt muốn đổi vị trí x với vị trí y ấy chứ.

3 Likes

oh :open_mouth: cảm ơn bạn nhé :grin: bài này mình bỏ for ở phần gán m thì ra rồi
:smile::smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?