Actividad Aprendizaje 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Actividad de Aprendizaje 03.

La Lista, implementación estática

-Datos del alumno: Luis Alberto Martínez Valdez.

-Código: 219114813.

-Datos de la materia: Estructuras de Datos I.

-Fecha de elaboración: 05/09/2022.

CONCEPTO SI NO ACOMULACION
Bajé el trabajo de
internet o alguien me -100pts 0pts 0
lo pasó (aunque sea
de forma parcial)
Incluí el código fuente
en formato de texto +25pts 0pts 25
(sólo si funciona
cumpliendo todos los
requerimientos)
Incluí las impresiones
de pantalla (sólo si +25pts 0pts 25
funciona cumpliendo
todos los
requerimientos)
Incluí una portada
que identifica mi +25pts 0pts 25
trabajo (nombre,
código, materia,
fecha, título)
Incluí una descripción
y conclusiones de mi +25pts 0pts 25
trabajo
100pts
Introducción acerca de la forma en que fue abordado el problema:
Se me facilito un poco mas ya que me base en la anterior tarea y fue un poco más fácil
implementar todo lo de orientado a objetos como las clases y así, y me costo un poco mas con la
Lista.

CODIGO FUENTE:
Song.hpp
#ifndef SONG_HPP_INCLUDED

#define SONG_HPP_INCLUDED

#include<string>

class Song {

private:

std::string name;

std::string autor;

std::string interpreter;

int ranking;

public:

Song();

Song(const &Song);

std::string getName() const;

std::string getInterpreter() const;

std::string getAutor() const;

int getRanking() const;

std::string toString() const;

void setName(const std::string&);

void setInterpreter(const std::string&);

void setAutor(const std::string&);

void setRanking(const int&);

};

#endif // SONG_HPP_INCLUDED
Song.cpp
#include "song.hpp"

using namespace std;

Song::Song() {

Song::Song(const& Song) {

string Song::getName() const {

return name;

string Song::getAutor() const {

return autor;

string Song::getInterpreter() const {

return interpreter;

int Song::getRanking() const {

return ranking;

string Song::toString() const {

string cadenaDatos;

cadenaDatos+="| ";

cadenaDatos+=to_string(ranking);

cadenaDatos+="\t|";

cadenaDatos+=name;

cadenaDatos+="\t|";

cadenaDatos+=interpreter;

cadenaDatos+="\t|";

cadenaDatos+=autor;

cadenaDatos+="\t|";

return cadenaDatos;

void Song::setName(const std::string& n ) {

name = n;
}

void Song::setAutor(const std::string& a ) {

autor = a;

void Song::setInterpreter(const std::string& i ) {

interpreter = i;

void Song::setRanking(const int& r) {

ranking = r;

listaex.hpp
#ifndef LISTAEX_HPP_INCLUDED

#define LISTAEX_HPP_INCLUDED

#include<exception>

#include<string>

class ListtaException : public std::exception {

private:

std::string msg;

public:

explicit ListtaException(const char* message) : msg(message) { }

explicit ListtaException(const std::string& message) : msg(message) { }

virtual ~ListtaException() throw () { }

virtual const char* what() const throw () {

return msg.c_str();

};

#endif // LISTAEX_HPP_INCLUDED
Lista.hpp
#ifndef LISTA_HPP_INCLUDED

#define LISTA_HPP_INCLUDED

#include <iostream>

#include <stdlib.h>

#include <string>

#include "song.hpp"

class Listta {

private:

Song LaSong [50];

int Lacounter;

bool isValidPos(const int&);

void copyAll(const Listta&);

public:

Listta();

Listta(const Listta&);

bool isEmpty();

bool isFull();

void agregarSong(const int&, const Song& );

void eliminarData(const int&);

int getFirstPos();

int getLastPos();

int getPrevPos(const int&);

int getNextPos(const int&);


int getCounter();

std::string retrieve(const int&);

std::string toString();

void print();

void deleteAll();

Listta& operator = (const Listta&);

};

#endif // LISTA_HPP_INCLUDED

Lista.cpp
#include "lista.hpp"

#include "listaex.hpp"

using namespace std;

bool Listta::isValidPos(const int& p) {

return p >= 0 and p <= Lacounter;

void Listta::copyAll(const Listta& l) {

int i(0);

while(i < l.Lacounter) {

LaSong[i] = l.LaSong[i];

i++;

Lacounter = l.Lacounter;

}
Listta::Listta() : Lacounter(-1) {}

Listta::Listta(const Listta& l ) {

copyAll(l);

bool Listta::isEmpty() {

return Lacounter == -1;

bool Listta::isFull() {

return Lacounter == 49;

void Listta::agregarSong(const int& p, const Song& s) {

if(isFull()) {

throw ListtaException("ESTA LLENA, insertData");

if(p != -1 and !isValidPos(p)) {

throw ListtaException("LUGAR INVALIDO, insertData");

int i(Lacounter);

while(i > p ) {

LaSong[i+1] = LaSong[i];

i--;

LaSong[p+1] = s;

Lacounter++;
}

void Listta::eliminarData(const int& p) {

if(!isValidPos(p)) {

throw ListtaException("Posicion invalida, eliminarData");

int i(p);

while(i < Lacounter) {

LaSong[i] = LaSong[i+1];

i++;

Lacounter--;

int Listta::getFirstPos() {

if(isEmpty()) {

return -1;

return 0;

int Listta::getLastPos() {

return Lacounter;

int Listta::getPrevPos(const int& p) {

if(p == getFirstPos() or !isValidPos(p)) {

return -1;

return p - 1;
}

int Listta::getNextPos(const int& p) {

if(p == getLastPos() or !isValidPos(p)) {

return -1;

return p + 1;

int Listta::getCounter() {

return Lacounter;

string Listta::retrieve(const int& p) {

if(!isValidPos(p)) {

throw ListtaException("Posicion invalida, retrieve");

return LaSong[p].toString();

string Listta::toString() {

string result;

int i(0);

while(i <= Lacounter) {

result +=" "+to_string(i) + "-" + LaSong[i].toString() + "\n";

i++;

return result;

}
void Listta::print() {

int i(0);

while(i <= Lacounter) {

cout<<LaSong[i++].toString()<<"\n\n";

i++;

void Listta::deleteAll() {

Lacounter = -1;

Listta& Listta::operator=(const Listta& l) {

copyAll(l);

return *this;

Menu.hpp
#ifndef MENU_HPP_INCLUDED

#define MENU_HPP_INCLUDED

#include <iostream>

#include <string>

#include"lista.hpp"

class Menu {

private:

public:
void mainMenu(Listta&);

};

#endif // MENU_HPP_INCLUDED

Menu.cpp
#include<iostream>

#include <random>

#include <chrono>

#include <string>

#include"menu.hpp"

#include"song.hpp"

#include"lista.hpp"

using namespace std;

void Menu::mainMenu(Listta& LaListta) {

int o,w,opcion,elementoo;

string str;

Song LaSong;

do {

cout<<"\n\t MENU\n1:Insertar cancion.\n2:Eliminar cancion.\n3:Recuperar cancion.\n4:Primera.\n5:Ultima.\n6:Anterior


cancion.\n7:Siguiente cancion.\n8:Anular.\n9:Salir.\n\nSeleccionar: ";

cin>>opcion;

auto semilla=chrono::system_clock::now().time_since_epoch().count();

default_random_engine generator(semilla);

switch(opcion) {
case 1:

cout<<"\nQue quieres hacer?\n\n1:Agregar.\n2:Cambiar.\n\nSelecciona una opcion: ";

cin>>opcion;

if(opcion == 1) {

uniform_int_distribution<int>distribution(0,50);///Ranking

int rnum = distribution(generator);

LaSong.setRanking(rnum);

cout<<"\nNombre: ";

fflush(stdin);

getline(cin,str);

LaSong.setName(str);

cout<<"\nInterprete: ";

fflush(stdin);

getline(cin,str);

LaSong.setInterpreter(str);

cout<<"\nAutor: ";

fflush(stdin);

getline(cin,str);

LaSong.setAutor(str);

LaListta.agregarSong(LaListta.getLastPos(),LaSong);

cout<<endl;

if(opcion == 2) {
cout<<"(Despues del punto de interes)\nPosicion: ";

fflush(stdin);

cin>>o;

uniform_int_distribution<int>distribution(0,50);///Ranking

int rnum = distribution(generator);

LaSong.setRanking(rnum);

cout<<"\nNombre: ";

fflush(stdin);

getline(cin,str);

LaSong.setName(str);

cout<<"\nInterprete: ";

fflush(stdin);

getline(cin,str);

LaSong.setInterpreter(str);

cout<<"\nAutor: ";

fflush(stdin);

getline(cin,str);

LaSong.setAutor(str);

LaListta.agregarSong(w,LaSong);

cout<<endl;

break;

case 2:

cout<<"Posicion: ";

fflush(stdin);

cin>>o;
LaListta.eliminarData(o);

system("cls");

break;

case 3:

cout<<"Posicion: ";

fflush(stdin);

cin>>o;

cout<<"\n"<<LaListta.retrieve(o)<<"\n"<<endl;

break;

case 4:

cout<<"\n"<<LaListta.retrieve(LaListta.getFirstPos())<<"\n"<<endl;

break;

case 5:

cout<<"\n"<<LaListta.retrieve(LaListta.getLastPos())<<"\n"<<endl;

break;

case 6:

cout<<"Posicion: ";

fflush(stdin);

cin>>o;

cout<<"\n"<<LaListta.retrieve(LaListta.getPrevPos(o))<<"\n"<<endl;

break;

case 7:

cout<<"Posicion: ";

fflush(stdin);

cin>>o;

cout<<"\n"<<LaListta.retrieve(LaListta.getNextPos(o))<<"\n"<<endl;
break;

case 8:

LaListta.deleteAll();

break;

case 9:

cout<<"\n\n"<<"TERMINASTE EL PROGRAMA."<<"\n"<<endl;

break;

default:cout<<"Opcion invalida.\n\n";

while(opcion != 9);

Main.cpp
#include<stdlib.h>

#include<iostream>

#include"menu.hpp"

#include"song.hpp"

#include"lista.hpp"

#include"listaex.hpp"

int main() {

Menu theMenu;

Listta LaListta

theMenu.mainMenu(LaListta);

return 0;

}
Impresiones de pantallas que muestren la ejecución satisfactoria del programa:
Resumen personal del trabajo realizado: programa de lista de canciones, se me hizo un poco
complicado, aun no termino de entender todo muy bien espero seguir mejorando :p.

También podría gustarte