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;
}
}
}
}
Bài liên quan
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
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