GithubHelp home page GithubHelp logo

grobereiner / poo2_unit6_adaptadores_poo_v2021_2_template Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rrivas-utec/poo2_unit6_adaptadores_poo_v2021_2_template

0.0 0.0 0.0 1.11 MB

CMake 0.22% Shell 0.64% C++ 98.95% Makefile 0.01% C 0.19%

poo2_unit6_adaptadores_poo_v2021_2_template's Introduction

Task #7: Estructuras Basicas Adaptadores

course: Programación Orientada a Objetos II
unit: 6
cmake project: poo2_unit6_adaptadores_poo_v2021_2

Instructions

Question #1 - merge_stacks (3 points)

Elaborar un template de función merge_stacks, que dado 2 stacks genere la unión con valores intercalados como se muestra en el diagrama.

stack<T> merge_stacks(stack<T> a, stack<T> b);

img.png

Casos de uso

    stack<int> stack_a;
    stack<int> stack_b;
    int n {};
    cin >> n;
    while (n-- > 0) {
        int value {};
        cin >> value;
        stack_a.push(value);
    }
    cin >> n;
    while (n-- > 0) {
        int value {};
        cin >> value;
        stack_b.push(value);
    }
    
    auto stack_result = merge_stacks(stack_a, stack_b);
    
    while (!stack_result.empty()) {
        cout << stack_result.top() << " ";
        stack_result.pop();
    }

Question #2 - join_stacks (3 points)

Elaborar un template de función join_stacks, donde dada 2 stacks genere la unión como se muestra en el diagrama.

stack<T> join_stacks(stack<T> a, stack<T> b);

img_1.png

Casos de uso

stack<int> stack_a;
stack<int> stack_b;
int n {};
cin >> n;
while (n-- > 0) {
    int value {};
    cin >> value;
    stack_a.push(value);
}
cin >> n;
while (n-- > 0) {
    int value {};
    cin >> value;
    stack_b.push(value);
}

auto stack_result = join_stacks(stack_a, stack_b);

while (!stack_result.empty()) {
    cout << stack_result.top() << " ";
    stack_result.pop();
}

Question #3 - process_text_by_stack (3 points)

Elaborar una función que utilizando stack cumpla con las siguientes reglas: Una letra significa un push y un * significa un pop. Dada una secuencia de caracteres el programa deberá retornar la secuencia de caracteres extraídos por el pop.

Ejemplos:

EAS*Y*QUE***ST***IO*N***  SYEUQTSAONIE
UN*IV*ERS*IDADDEINGENIE*RIAYTECN***OLOGIA  NVSENCE
COMPUTER*****S**CIEN**CE  RETUPSMNE
string process_text_by_stack(string source);

Casos de uso

string text;
getline(cin, text);
cout << process_text_by_stack(text);

Question #4 - process_text_by_queue (3 points)

Elaborar una función que utilizando queue cumpla con las siguientes reglas:

Una letra significa un push y un * significa un pop. Dada una secuencia de caracteres el programa deberá retornar la secuencia de caracteres extraídos por el pop.

Ejemplos:

EAS*Y*QUE***ST***IO*N***  EASYQUESTION
UN*IV*ERS*IDAD**  UNIVE
COMPUTER*****S**CIEN**CE  COMPUTERS
string process_text_by_queue(const& string source); 

Casos de uso

string text;
getline(cin, text);
cout << process_text_by_queue(text);

Question #5 - is_equation_balanced (4 points)

Dada una ecuación, realizar una función basada en stack que determine si el balance de separadores es correcto.

Ejemplo:

((10 + 20) + 30)            Balanceado
((10 +(30 * 1 + 2))         No Balanceado
(10 + (15 + 4/2 - 5)))      No Balanceado
{ (6 + 20} + 4)             No Balanceado
{ [ (4 - 5) * 3] + 14}      Balanceado
bool is_equation_balanced(string source);

Casos de uso

string text;
getline(cin, text);
cout << boolalpha << is_equation_balanced(text);

Question #6 - find_in_stack (4 points)

Utilizando la clase alumno_t que incluya los atributos nombre, apellido y nota (int), se genere iterativamente. Elaborar un template de función find_in_stack que permita ubicar un valor basado en cualquier criterio.

T find_in_stack(stack<T> s, function<bool(T)> cmpr);
// Crear un stack basado en alumnos
auto a1 = find_in_stack (stack, [](alumno_t a) { return a.apellido == "Perez"; });

Casos de uso

stack<alumno_t> s1;
int n{};
cin >> n;
string nombre;
string apellido;
double nota;
while (n-- > 0) {
    getline(cin, nombre);
    getline(cin, apellido);
    cin >> nota;
    s1.push_back(alumno_t{nombre, apellido, nota});
}

string name_tobe_found;
get_line(cin, name_tobe_found);
a1 = find_in_stack (s1, [=](auto a) { return a.get_nombre() == name_tobe_found; });
cout << a1.get_nombre() << " " << a1.get_apellido() << " " << a1.get_nota() << endl;

Question #7 - complete_equation (Opcional)

Elaborar una función basada en stack que tome un expresión sin el paréntesis izquierdo y que retorne la expresión infijo con los paréntesis completos.

Ejemplo:

10 + 20) * 5 + 3)      (10 + 20) * (5 + 3) 
10 +30) * 30)          (10 + 30) * (30)
10 + 15) * 2 - 5))     ((10 + 15) * (2 - 5))
string complete_equation( string source);

Casos de uso

    string text;
    getline(cin, text);
    cout << boolalpha << complete_equation(text);

poo2_unit6_adaptadores_poo_v2021_2_template's People

Contributors

rrivas-utec avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.