Untitled

 avatar
unknown
plain_text
23 days ago
3.4 kB
2
Indexable
#include <iostream> // Incluir la biblioteca de entrada y salida estándar

using namespace std; 

char menu();
void escribeVector(float* vec, int size);

int main() {

    const int TAM=4;
    float v1[TAM];

    char option = menu();

    do {
        cout << "Opción seleccionada" << option << endl;

        switch(option) {
            case 'A':
                cout << "Opción A crear" << endl;
                cout << "Escribe los "<< TAM << " elementos del vector:" << endl;
                for(int i=0;i<TAM;i++){
                    cout << "Dime el elemento " << i << ": ";
                    cin >>v1[i];
                    cin.ignore();
                }
                cout << endl;
                break;
            case 'B':
                cout << "Opción B ver" << endl;
                escribeVector(v1, TAM);
                break;
            case 'C':
                cout << "Opción C - ordenar" << endl;
                cout << "Se empieza con " << endl;
                // START: ESto es solo para que lo veamos visualmente
                escribeVector(v1, TAM);
                // END: ESto es solo para que lo veamos visualmente
                for(int i=0;i<TAM;i++){
                    // este primer for va a comparar cada posición con el resto a la derecha
                    cout << "Comparar el valor [" << i << "]: " << v1[i] <<" con: " << endl;
                    for(int j=i+1;j<TAM;j++){
                        // este segunda se encarga de que cada uno de la derecha del priemr for se peuda compara
                        cout << " * el valor [" << j << "]: " <<  v1[j] << "... " << endl; 
                        if (v1[j]<v1[i]) {
                            // si entra aqui es porque los valores del siguiente son más pequeños y debe intercambiarlos
                            cout << " !! como " << v1[j] << " es menor que " << v1[i] << " se intercambian...";
                            float temporal = v1[i];
                            // hace falta un temporal para no perder uno de los valores
                            v1[i] = v1[j];
                            v1[j] = temporal;
                            cout << " y el vector queda como ";
                            // START: ESto es solo para que lo veamos visualmente
                            escribeVector(v1, TAM);
                            // END: ESto es solo para que lo veamos visualmente
                        }
                    }
                }
                cout << endl;
                break;
            default :
                cout << "Opción no válida, elige otra" << endl;
                break;
        }
        option = menu();
    } while (option != 'D');



    return 0; // Retornar 0 para indicar que el programa terminó correctamente
}

void escribeVector(float* vec, int size) {
    cout << "[";
    for(int i=0; i<size; i++){
        cout << vec[i];
        if (i < size-1) {
            cout << ", ";
        }
    }
    cout << "]";
    cout << endl;
}

char menu() {
    char option;
    cout << endl;
    cout << "************ MENU ********************" << endl;
    cout << "* A.- Rellena" << endl;
    cout << "* B.- Ver" << endl;
    cout << "* C.- Ordenar" << endl;
    cout << "* D.- Salir" << endl;
    cout << "**************************************" << endl;
    cout << endl;

    cin >> option;

    return toupper(option);
}
Leave a Comment