mình mới bước vào OOP nên còn nhiều bỡ ngỡ ! có đề bài nè mong bạn nào biết cách xây dựng theo đúng opp chỉ giúp !
đề bài:
Người ta quan tâm đến việc sắp xếp 1 mảng các số thực n gồm n phần tử a[0],a[1]..., a[n-1] theo các yêu cầu sau:
-Sắp theo thứ tự tăng dần
-Sắp theo thứ tự giảm dần
-Sắp theo trị tuyệt đối tăng dần
-Sắp xếp để các số không âm về đầu mảng và tăng dần, còn các số âm thì về cuối mảng và giảm dần.
Bằng cách tận dụng khả năng dùng lại mã nguồn của ngôn ngũ lập trình hướng đối tượng, ta có thể giải quyết ngắn gọn bài toán trên. Hãy:
Đề nghị giải pháp thiết kế và cài đặt các lớp để giải quyết tất cả các bài toán theo loại nói trên.
lời giải của mình như sau ! nhưng chưa hoàn thiện mong các bác góp ý sao đúng cú pháp opp nhé !
Code:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
class mang
{
private :
int n;//n phan tu khi ta khoi tao ;
int a[100];
public :
mang (int so)
{
n= so;
}
void hoanvi(int&b,int&c)
{
int tg;
tg = b;
b= c;
c= tg;
}
void tang(int*a ,int n);// a sẽ là địa chỉ của mảng còn n là số phần tử trong mảng
void giam(int*a ,int n);
void tuyetdoi(int*a ,int n);
void dieukien(int*a ,int n);
};
//////////////////////////////////////////////////////////////////
void mang::tang(int*a,int n)
{
int i,j,tg;
i=0;
for (i=0;i<n;i++)
{
for(j=i;j<n;j++)
if(a[j]<a[i]) mang::hoanvi(a[i],a[j]);
}
}
void mang::giam(int *a,int n)
{
mang::tang(a, n);
for(int i = 0; i<n/2 ; i++)
mang::hoanvi(a[i],a[n-i]);
}
void mang::tuyetdoi(int *a,int n)
{
int i,j;
i=0;
for (i=0;i<n;i++)
{
for(j=i;j<n;j++)
if(fabs(a[j])<fabs(a[i]))
mang::hoanvi(a[i],a[j]);
}
}
void mang::dieukien(int *a,int n)
{
int i,j,k=0,h=0;
int b[100],c[100];
for(i=0;i<n;i++)
{
if(a[i]>=0)
{
b[k]= a[i];
k++;
}
c[h]= a[i];
h++;
}
mang::tang(b,k);
mang::giam(c,h);
for(i=0;i<=k;i++)
a[i]=b[i];
for(i=k;i<=h+k;i++)
{
a[i]=c[j];
j++;
}
}
ah không biết có phải tạo hàm khởi tao và hàm hủy không nhỉ ! bác nào biết thì chỉ giúp
mình vừa đọc mấy bài về opp của tiền bối trên forom từ mấy năm trước ! tổng hợp thành cái nè ! bạn nào muốn voc nhanh opp thì dùng nhé ! mình mai thi nên đọc cái ngắn nè chắc hữu hiệu !
của bác wheremylove? đó
http://www.box.net/shared/xw74xp0ws4
Bookmarks