-----------------------
file : array.cpp
-----------------------#include "array.h"
/**
* ...
* @autor Daniel Schreiner
*/
Array::Array(int tamanho){
myTamanho = tamanho;
myDados = new int[tamanho];
}
Array::~Array(){
delete[] myDados;
delete[] tmpDados;
}
int Array::get(unsigned i) const {
return myDados[i];
}
void Array::set(unsigned i, int valor ) {
myDados[i] = valor;
}
void Array::print(std::ostream& out) const {
for (int i = 0 ; i < myTamanho ; i++) {
out << myDados[i] << std::endl;
}
}
/**
* Metodo resize
* redimensiona matriz
*/
void Array::resize(unsigned i) {
tmpDados = new int[i];
for (int x = 0 ; x < i ; x++ ){
if (x > myTamanho){
tmpDados[x] = 0;
}
else {
tmpDados[x] = myDados[x];
}
}
myTamanho = i;
myDados = tmpDados;
}
/**
* retorna quantidade de elementos da matriz
*/
int Array::length(){
return myTamanho;
}
/**
* ...
* coloca em ordem crescente elementos da matriz
*/
void Array::sort(){
int j,i,key;
for (j = 1 ; j < myTamanho ; j++){
key = myDados[j];
i = j - 1;
while (i > (-1) && myDados[i] > key) {
myDados[i + 1] = myDados[i];
i = i -1 ;
}
myDados[i + 1] = key;
}
}
/**
* ...
* adiciona um elemento no final da matriz
*/
void Array::push(int i){
this->resize(myTamanho+1);
myDados[myTamanho-1] = i;
}
/**
* ...
* remove um elemento da matriz
* int i: indice do elemento a ser removido
*/
void Array::deleteIndex(int i){
if (i <= myTamanho){
tmpDados = new int[myTamanho-1];
for (int j=0; j <= myTamanho; j++) {
if (j < i){
tmpDados[j] = myDados[j];
}
else if (j > i){
tmpDados[j-1] = myDados[j];
}
}
myDados = tmpDados;
this->resize(myTamanho-1);
}
}
/**
* ...
* insere um elemento na matriz
* int i: indice de onde deve ser inserido o elemento
* int val: valor a ser inserido no elemento de indice i
*/
void Array::insert(int i, int val){
if (i <= myTamanho){
this->resize(myTamanho+1);
tmpDados = new int[myTamanho+1];
for (int j=0; j <= myTamanho; j++) {
if (j < i){
tmpDados[j] = myDados[j];
}
else if (j == i) {
tmpDados[j] = val;
}
else if (j > i){
tmpDados[j] = myDados[j-1];
}
}
myDados = tmpDados;
}
}
-----------------------
file : array.h
-----------------------
#ifndef INT_ARRAY_H
#define INT_ARRAY_H
/**
* ...
* @autor Daniel Schreiner
*/
#include <iostream>
class Array {
private:
int* myDados;
int myTamanho;
int* tmpDados;
public:
//aloca memopria suficiente para guardar tamanho inteiros
Array(int tamanho);
~Array();
int get(unsigned i) const;
void set(unsigned i, int valor);
void print(std::ostream& out = std::cout) const;
void resize(unsigned i);
int length(void);
void sort(void);
void push(int i);
void deleteIndex(int i);
void insert(int i, int val);
};
#endif
sexta-feira, 16 de setembro de 2011
Classe Array -> manipulação de vetores - source
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário