30/09/2018, 21:06

Với n <= 4 thì chương trình chạy ngon, n > 4 thì lỗi tùm lum

Chèn giá x vào dãy a[] sao cho dãy a[] vẫn tăng dần. G/s dãy a[] tăng dần.

#include<stdio.h>
#include<conio.h>
void chenx(float a[], int *n, float x)
{	
	*n = *n + 1;
	int k = -1;

	while (x >= a[k])
	{
		 k++;
	}
	if (k == -1)
	a[-1] = x;
	for (int i = *n-1; i > k; i--)
	{
		a[i] = a[i-1];		
	}
	a[k] = x;
}
main()
{
	int n = 5;
	float a[5] = {1, 3, 5, 7, 9};
	float x = 5;
	chenx(a, &n, x);
	for(int i = 0; i < n; i++)
	printf("%.0f ", a[i]);
	
}
Quang viết 23:17 ngày 30/09/2018

làm gì có giá trị nào a[-1] đâu bạn

Cyberbob viết 23:12 ngày 30/09/2018

Đoạn a[-1] hơi lạ nhưng mình chạy code của bác bt,n>4 có làm sao đâu

Quang viết 23:22 ngày 30/09/2018

mảng thì chỉ có từ 0 thui nếu đánh là -1 giá trị nó là khác rồi

Tuấn Anh Lê viết 23:22 ngày 30/09/2018

Tuấn Anh Lê viết 23:06 ngày 30/09/2018

a[-1] = 0. Thử trong C++ thì lại = x

Tuấn Anh Lê viết 23:22 ngày 30/09/2018

a[-1] = 0

Hung viết 23:12 ngày 30/09/2018

Lập trình lại, bỏ a[-1] ra khỏi code, giá trị a[-1] không có thật, mảng mặc định bắt đầu từ 0. Nếu để a[-1] trong code thì ráng mà chịu chứ hỏi chi nữa nà.

Tuấn Anh Lê viết 23:12 ngày 30/09/2018

hướng dẫn cho e ko có a[-1] đi, nếu số ý nhỏ hơn a[0] thì gán tn

Hung viết 23:18 ngày 30/09/2018

Bạn muốn chèn cho dãy bao nhiêu phần tử? Nếu dãy với số phần tử không lớn lắm thì bạn cứ chèn phần tử mới vào cuối dãy, rồi dùng thuật toán xếp cho dãy tăng dần là xong.

cescnghia viết 23:13 ngày 30/09/2018

Bạn tham khảo code mình ko ?

#include <stdio.h>

int insert(int* tab, int len, int value);

int main(void){
	int tab[] = {1, 3, 7, 8, 10};

	int result = insert(tab, 5, -10);

	if (result == 0)
		printf("Inserted \n");
	else 
		printf("Can't insert\n");

       return 0;
}

int insert(int* tab, int len, int value){
	size_t posToInsert = 0;

	for(size_t i = 0; i < len ; i++){ // tìm vị trí chèn
		if (tab[i] <= value)
			posToInsert = i+1;
		else
			break;
	}

	if (posToInsert >= len) // ko thể chèn 
		return -1;
	else {
		for(size_t i = posToInsert; i < len; i++){
			int temp = tab[i]; // lưu giá trị của phần tử sẽ bị chèn
			tab[i] = value;
			value = temp; 
		}
		return 0; // success
	}
}
Bài liên quan
0