Mã:
Viết chương trình thực hiện chức năng sau đây (sử dụng mảng động).
1. Nhập vào một mảng các số phức (số phức gồm 2 thành phần thực và ảo).
2. Xuất mảng các số phức ra màn hình.
3. Tính tổng các số phức có trong mảng.
4. Tìm số phức thứ hai trong mảng có phần thực là một số không âm.
5. Thêm một số phức vào mảng (vị trí thêm do người dùng chọn, tính từ 0).
6. Xóa các số phức có phần thực chỉ định ra khỏi mảng (người dùng sẽ nhập giá trị phần thực cần xóa).
Em chạy được ra kết quả nhưng nó cứ báo lỗi HEAP CORRUPTION DETECT, mấy bài gần đây đụng vào cấp phát động thì nó cứ ra lỗi như vậy?
Mã:
#include <iostream>
using namespace std;
typedef struct sp{
float thuc;
float ao;
} sophuc;
void nhap(sophuc &f) {
cin >> f.thuc >> f.ao;
}
void nhapmang(sophuc *f,int n) {
for(int i=0;i<n;i++){
cout << "phan tu thu " << i+1 << ": ";
nhap(f[i]);
}
}
void xuat(sophuc f) {
cout << f.thuc;
if (f.ao>=0)
cout << "+";
cout << f.ao << "i";
}
void xuatmang(sophuc *f,int n) {
for(int i=0;i<n;i++) {
xuat(f[i]);
cout << endl;
}
}
sophuc tongmang(sophuc *f,int n) {
sophuc t;
t.ao=0;
t.thuc=0;
for(int i=0;i<n;i++) {
t.ao+=f[i].ao;
t.thuc+=f[i].thuc;
}
return t;
}
void pt20am(sophuc *f,int n) {
sophuc t;
t.ao=0;
t.thuc=0;
int i,dem=0;
for(i=0;(i<n)&&(dem<2);i++)
if(f[i].thuc>=0) {
dem++;
t.ao=f[i].ao;
t.thuc=f[i].thuc;
}
if(dem==2) {
cout << "So thu 2 co phan thuc khong am: ";
xuat(t);
}
else
cout << "Khong co phan tu thu 2 co phan thuc khong am!";
}
void doimang(sophuc *f,int &n,int m,int o) {
if(o>0)
for (int i=n;i>=m;i--)
f[i+o]=f[i];
else
for (int i=m+1;i<n;i++)
f[i+o]=f[i];
n+=o;
}
void them(sophuc *f,int &n,sophuc t,int m) {
doimang(f,n,m-1,1);
f[m-1]=t;
}
void xoa(sophuc *f,int &n,int m) {
doimang(f,n,m,-1);
}
int xoadk(sophuc *f,int &n,float thuc){
char fg=0;
for(int i=0;i<n;i++)
if(f[i].thuc==thuc){
xoa(f,n,i);
fg=1;
}
return fg;
}
void main() {
int n;
cout << "nhap vao so phan tu mang: ";
cin >> n;
sophuc *f;
f=new sophuc[n+1];
cout << "nhap cac phan tu mang(phan thuc - phan ao): " << endl;
nhapmang(f,n);
cout << "Mang vua nhap la: " << endl;
xuatmang(f,n);
cout << "Tong cac so co trong mang: ";
xuat(tongmang(f,n));
cout << endl;
pt20am(f,n);
int m;
sophuc t;
cout << endl << "Nhap vi tri can them phan tu (nho hon tong so phan tu): ";
cin >> m;
if (m>n)
do {
cout << "Nhap sai, nhap lai: ";
cin >> m;
} while (m>n);
cout << "Nhap so phuc can them: ";
nhap(t);
them(f,n,t,m);
cout << "Mang sau khi them: " << endl;
xuatmang(f,n);
float thuc;
cout << "Mhap phan thuc ban muon xoa: ";
cin >> thuc;
if(xoadk(f,n,thuc)){
cout << "Mang sau khi xoa: " << endl;
xuatmang(f,n);
}
else
cout << "Khong co phan thuc nhu vay trong mang!";
delete []f;
return;
}
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...