All pastes #2107980 Raw Edit

Miscellany

public text v1 · immutable
#2107980 ·published 2012-01-31 04:23 UTC
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; 
}