rendered paste body#include "stdafx.h"
class dizi
{
public:
dizi()
{
m_items = NULL;
m_count = 0;
}
dizi(const dizi& c) :
m_items(NULL),
m_count(0)
{
m_count = c.count();
if (m_count > 0) {
m_items = new int[m_count];
for (int i = 0; i < m_count; i++) {
m_items[i] = c[i];
}
}
}
~dizi()
{
clear();
}
void clear(void)
{
if (m_items) {
delete[] m_items;
}
m_items = NULL;
m_count = 0;
}
int count(void) const
{
return( m_count );
}
int operator[](int index) const
{
if (!m_items) { return( -1 ); } // hata
if ((index > -1) && (index < m_count)) {
return( m_items[index] );
}
return -1;
}
int max(void)
{
if (!m_items) { return( -1 ); } // hata
int iMax = 0;
for (int i = 0; i < m_count; i++) {
if (m_items[i] > iMax) {
iMax = m_items[i];
}
}
return( iMax );
}
int tek(void)
{
if (!m_items) { return( -1 ); } // hata
int iCount = 0;
for (int i = 0; i < m_count; i++) {
if ((m_items[i] % 2) != 0) {
iCount++;
}
}
return( iCount );
}
int ekle(const dizi& c)
{
if (&c == this) {
return( -1 ); // hata
}
int i;
int *items = NULL;
int iNewCount = m_count + c.count();
items = new int[iNewCount];
for (i = 0; i < m_count; i++) {
items[i] = m_items[i];
}
for (i = 0; i < c.count(); i++) {
items[i + m_count] = c[i];
}
if (m_items) { delete[] m_items; }
m_items = items;
m_count = iNewCount;
return( iNewCount );
}
int cift_ort(void)
{
if (!m_items) { return( -1 ); } // hata
int iCiftTotal = 0;
int iCiftCount = 0;
for (int i = 0; i < m_count; i++) {
if ((m_items[i] % 2) == 0) {
iCiftCount++;
iCiftTotal += m_items[i];
}
}
int iOrt = 0;
if (iCiftCount > 0) {
iOrt = iCiftTotal / iCiftCount;
}
return( iOrt );
}
// bu nedir annlamadım?
void dizial(void)
{
// sıralı bir dizi al dedim!?
clear();
m_count = 10;
m_items = new int[m_count];
for (int i = 0; i < m_count; i++) {
m_items[i] = i + 1;
}
}
private:
int *m_items;
int m_count;
};
int* duzenle(const dizi& x, const dizi& y, int *boy)
{
dizi* retDizi = new dizi(x);
retDizi->ekle(y);
if (boy) {
*boy = retDizi->count();
}
return( (int*)(retDizi) );
}
int _tmain(int argc, _TCHAR* argv[])
{
dizi x, y;
int *p = NULL, boy(0);
x.dizial();
y.dizial();
// kullanicidan dinamik yapida dizi alir
if( x.max() < y.tek() ) {
//max();dizinin max degeri; tek():dizideki tek sayilarin adeti
dizi z(x);
p = duzenle(x, y, &boy);
//nesneler degis tokus yapilir ve nesnelerin dizileri birbirne eklenerek ...
//... olusan yeni dizi ?p?degiskenine ;olusan dizinin boyu ise ?boy? degiskenine eklenir.
printf("cift_ort:%d, toplam_adet:%d\n", z.cift_ort(), boy);
} else {
x.ekle(y);
}
if (p) {
delete( (dizi*)p );
}
getchar();
//ekle(); y deki diziyi x nesnesindeki dizinin sonuna ekleyecek
return 0;
}