Chuyển index khi đếm mảng bắt đầu từ 1 thành index khi đếm mảng bắt đầu từ 0

Đề : Chèn x vào vị trí thứ k trong mảng

Cho em hỏi ví dụ em tạo 1 mảng, gồm 4 giá trị có số 5 6 8 9. Em thêm vào số 7 tại vị trí số 8 để trở thành 5 6 7 8 9, thì tại vị trí đó trong mảng là vị trí thứ 2, nhưng thường ở ngoài đời mình coi vị trí đó là thứ 3 tại xem bắt đầu bằng 1. Anh chị có cách nào để cho người dùng nhập vào k là 3 mà không bị sai không ạ .

#include <stdio.h>
#define MAXN 100
int menu()
{
	int l;
	printf("**************MENU*************\n");
	printf("1. Tao day so\n");
	printf("2. Chen phan tu vao vi tri k\n");
	printf("Nhap lua chon:");
	scanf("%d",&l);
	return l;
}
void taodayso(int a[],int &n)
{
	int i;
	do
	{
		printf("Nhap bao nhieu so nguyen:");
	    scanf("%d",&n);
	}
	while(n<0 || n>MAXN);
	for(i=0;i<n;i++)
	{
		printf("Nhap so thu %d la:",i+1);
		scanf("%d",&a[i]);
	}
}
void chenmotvitri(int a[],int &n,int x,int k)
{
	int i;
	for(i=n;i>k;i--)
	   {
	      a[i]=a[i-1];
   	   }
    a[k]=x;
    n++;
}
int main()
{
	int i,x,n,k,a[MAXN],l;
	do
	{
	   l=menu();
	   switch(l)
	   {
   		   case 1: taodayso(a,n);
   		           break;
           case 2: 
				   printf("Nhap them gia tri x:");
				   scanf("%d",&x);
				   printf("Nhap vi tri muon them:");
				   scanf("%d",&k);
				   chenmotvitri(a,n,x,k);
				   for(i=0;i<n;i++)
				      printf("%d\n",a[i]);
	               break;
          default: printf("Bye/n");
       }
	}
	while(l>0 && l<3);
	return 0;
}
  • Nhập vào k.
  • k--
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?