Created
August 26, 2012 21:28
-
-
Save felialois/3483684 to your computer and use it in GitHub Desktop.
Tarea 2a #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// main.cpp | |
// Tarea 2a | |
// | |
// Created by Felipe Alfaro on 8/22/12. | |
// Copyright (c) 2012 Felipe Alfaro. All rights reserved. | |
// | |
/* Repetición de elementos: Escriba una función List repeatN(List lista, int[] arreglo) que retorna una nueva lista en donde el elemento de la posición i de la lista aparece repetido tantas veces como señale arreglo[i]. Escriba un programa de ejemplo (usando strings) para probar esta función. El método no debe alterar el contenido de la lista original. Escriba un método eficiente. */ | |
#include <iostream> | |
#include <cstdlib> | |
#include <string> | |
template <typename E> | |
class List { | |
public: | |
int maxSize; //tamano maximo | |
int listSize; //tamano | |
int curr; //elemento actual | |
E* listArray; | |
List(int size) { // Constructor | |
maxSize = size; | |
listSize = curr = 0; | |
listArray = new E[maxSize]; | |
} | |
List() { delete [] listArray; } // Destructor | |
void clear() { | |
delete [] listArray; | |
listSize = curr = 0; | |
listArray = new E[maxSize]; | |
} | |
void insert(const E& it) { //insertar un elemento en la posicion actual | |
if(listSize > maxSize) | |
std::cout<<("Capacidad excedida"); | |
for(int i=listSize; i>curr; i--) | |
listArray[i] = listArray[i-1]; | |
listArray[curr] = it; | |
listSize++; | |
} | |
void append(const E& it) { //agregar un elemento al final | |
if(listSize > maxSize) | |
std::cout<<("Capacidad excedida"); | |
listArray[listSize++] = it; | |
} | |
List repeatN (int arreglo[]) { //funcion para repetir segun el arreglo | |
List listanueva(maxSize*10); //crea una lista nueva | |
for (int i=0;i<listSize; i++) //a la lista nueva le agrega el valor de la psocion i de la lista vieja cunatas veces aparezca en el arreglo | |
for (int j=0; j<arreglo[i];j++) | |
listanueva.append(listArray[i]); | |
return listanueva; | |
} | |
void print(){ //imprime la lista | |
for (int i=0;i<listSize;i++){ | |
std::cout<<(listArray[i]); | |
std::cout<<(" ");} | |
std::cout<<"\n"; | |
} | |
}; | |
int main(){ | |
using namespace std; | |
std::cout<<("inicio \n"); | |
int a[ ] = {2,3,4}; //arreglo de las repetciones de cada dato | |
List<string> lista1(3); //crea una lista con | |
lista1.append("a"); //agrega abc a la lista | |
lista1.append("b"); | |
lista1.append("c"); | |
lista1.repeatN(a).print(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment