Skip to content

Instantly share code, notes, and snippets.

@felialois
Created August 26, 2012 21:28
Show Gist options
  • Save felialois/3483684 to your computer and use it in GitHub Desktop.
Save felialois/3483684 to your computer and use it in GitHub Desktop.
Tarea 2a #5
//
// 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