30/09/2018, 20:17

Code có vấn đề, lúc chạy hay bị has stopped working

Nhờ mọi người xem giúp sao code của em chạy hay bị has stopped working vậy? nhất là khi nhập số phần tử mảng nhiều.
Đã phát hiện ra vấn đề, hình như do cấp phát động rồi lúc sau lại thêm phần tử mà không cấp phát thêm, m.n cho hỏi cấp phát thêm thế nào để phần tử trong mảng không bị ảnh hưởng vậy ??

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

void nhap(int ,int*);
void xuat(int ,int*);
void SapXepTang(int,int *);
void tronMang(int n,int &m, int* mang1,int *mang2);

int main(){
	srand(time(NULL));
	int *mangSoNguyen1,*mangSoNguyen2;
	int n,m;
	printf("Nhap so phan tu mang 1: ");
	scanf("%d", &n);
	printf("Nhap so phan tu mang 2: ");
	scanf("%d", &m);
	mangSoNguyen1 = (int*)malloc(n*sizeof(int));
	nhap(n,mangSoNguyen1);
	mangSoNguyen2 = (int*)malloc(m*sizeof(int));
	nhap(m,mangSoNguyen2);
	printf("
Mang chua sap xep: ");
	xuat(n,mangSoNguyen1);
	xuat(m,mangSoNguyen2);
	SapXepTang(n,mangSoNguyen1);
	SapXepTang(m,mangSoNguyen2);
	printf("
Mang da sap xep: ");
	xuat(n,mangSoNguyen1);
	xuat(m,mangSoNguyen2);
	printf("
Tron mang: ");
	tronMang(n,m,mangSoNguyen1,mangSoNguyen2);
	xuat(m,mangSoNguyen2);
	free(mangSoNguyen1);
	free(mangSoNguyen2);
	getch();
	return 0;
}

void nhap(int n,int* mangSoNguyen){
	for (int i = 0; i < n; i ++) 
		*(mangSoNguyen + i) = rand()%100;
}
void xuat(int n,int* mangSoNguyen){
	printf("
");
	for(int i = 0; i <n; i++){
		printf("%d  ", *(mangSoNguyen + i));
	}
}
void SapXepTang(int n, int *mang){
	for(int i = 0; i < n; i++){
		for(int j = i+1; j < n; j++){
			if (mang[i] > mang[j]){
			int temp = mang[i];
			mang[i] = mang[j];
			mang[j] = temp;
			}
		}
	}
}
void tronMang(int n,int &m, int* mang1,int *mang2){
	for (int i = 0; i < n; i++ ){
		for(int j = 0; j < m; j++){
			if (mang1[i] > mang2[j] && mang1[i] < mang2[j+1]){
				for(int a = m; a > j + 1; a--){
					mang2[a] = mang2[a-1];
				}
				mang2[j+1] = mang1[i];
				m++;
				break;
			} else if (mang1[i] < mang2[0]){
				for(int a = m; a > 0; a--){
					mang2[a] = mang2[a-1];
				}
				mang2[0] = mang1[i];
				m++;
				break;
			} else if (mang1[i] > mang2[m-1]){
				mang2[m] = mang1[i];
				m++;
				break;
		}
	}
}
}
Ngô Doãn Tuấn viết 22:20 ngày 30/09/2018

Mình nghĩ lần sau bạn có thể up code trực tiếp lên diễn đàn. Diễn đàn có hỗ trợ Markdown bạn nhé
Còn việc code của bạn. Mình nghĩ bạn đang mắc lỗi về cú pháp qua chỗ bug sau mình thấy

Line 18: error: conio.h: No such file or directory
Line 9: error: expected ';', ',' or ')' before '&' token
In function 'nhap':
Line 41: error: 'for' loop initial declaration used outside C99 mode
In function 'xuat':
Line 46: error: 'for' loop initial declaration used outside C99 mode
In function 'SapXepTang':
Line 51: error: 'for' loop initial declaration used outside C99 mode
Line 52: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 61: error: expected ';', ',' or ')' before '&' token

Bạn hãy khắc phục từng lỗi một để nhớ kiến thức cơ bản và lần sau sẽ không bị lỗi nữa

Bài liên quan
0