Visual C++ .NET - Como hacer programa de combinaciones en c++

 
Vista:

Como hacer programa de combinaciones en c++

Publicado por Ezequiel Nahun (1 intervención) el 23/08/2021 08:14:51
Buenas Noches, me pidieron realizar un programa en C++, en donde tengo que ingresar la cantidad de experimentos con los que deseo trabajar, después ingresar el nombre del primer experimento y después que me pida cuantos datos contendrá ese primer experimento, y así hasta cumplir n experimentos solicitados, pero después me pide que imprima la los datos registrados, como el nombre del experimento y los datos que corresponden a dicho experimento, después me pide que muestre el total de combinaciones posibles como el profesor nos enseño, que nos dijo que era la multiplicacion del total ce cada experimento simple, por ejemplo:
aerolíneas tiene 3 datos en ese experimento, clases tiene 2 datos en ese experimento, y destinos otros 4 datos, entonces el total de combinaciones posibles es(3*2*4)=24,una vez mostrado eso me pide que muestre las combinaciones

por ejemplo:
aereolineas:
aereomar
aereomexico
interjet

Destinos:
Mexico
España
Argentina

que me imprima las combinaciones:
aereomexico: mexico, españa, argentina
interjet: mexico , españa, argentina
aereomar: mexico, españa argentina

Tengo este poco de código, me podrían ayudar...se los agradecería




#include "stdlib.h"
#include <iostream>
#include <Windows.h>
using namespace std;

int main()
{
setlocale(LC_CTYPE, "Spanish");
system("color 8b");


int i,j, b, n ;
string nombre[99], dato[99];

cout << "Cuantos Experimentos Deseas Ingresar?" << endl;
cin >> b;
cout << " Captura tus datos: \n" << endl;
for (i = 1; i <= b; i++)
{
cout << "\nNombre del Experimento simple " << i << ":" << endl;
cin >> nombre[i];

cout << "\nCuantos Datos desea ingresar en el experimento " << nombre[i] << ":" << endl;
cin >> n;
for (j = 1; j <= n; j++)
{
cout << "\n Opcion " << j << ":" << endl;
cin >> dato[j];
}


}

cout << "\n\n Los Datos Ingresados son:\n" << endl;

for(i=1; i<= b; i++)
{
cout << "\nExperimento simple " << nombre[i] << ":" << endl;


for (j = 1; j <= n; j++)
{

cout << "Opcion " << j << ":" << dato[j] << endl;

}



}
system("pause");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa para gestión de experimentos y combinaciones

Publicado por Alejandro (265 intervenciones) el 15/02/2024 00:39:52
Ezequiel, para cumplir con tus requisitos, necesitarás almacenar los datos de cada experimento en una estructura de datos, como un arreglo bidimensional. Además, debes calcular el total de combinaciones posibles multiplicando la cantidad de opciones en cada experimento. Aquí hay una versión modificada de tu código para lograrlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <vector>
#include <iomanip>
 
using namespace std;
 
int main() {
    setlocale(LC_CTYPE, "Spanish");
 
    int numExperimentos;
    cout << "Ingrese la cantidad de experimentos: ";
    cin >> numExperimentos;
 
    vector<vector<string>> experimentos;
 
    for (int i = 0; i < numExperimentos; ++i) {
        string nombreExp;
        int numDatos;
 
        cout << "Nombre del Experimento " << i + 1 << ": ";
        cin >> nombreExp;
 
        cout << "Número de datos para " << nombreExp << ": ";
        cin >> numDatos;
 
        vector<string> datos;
        for (int j = 0; j < numDatos; ++j) {
            string dato;
            cout << "Dato " << j + 1 << " para " << nombreExp << ": ";
            cin >> dato;
            datos.push_back(dato);
        }
 
        experimentos.push_back(datos);
    }
 
    cout << "\nDatos ingresados:\n";
    for (size_t i = 0; i < experimentos.size(); ++i) {
        cout << "Experimento " << i + 1 << " (" << experimentos[i][0] << "): ";
        for (size_t j = 1; j < experimentos[i].size(); ++j) {
            cout << experimentos[i][j] << ", ";
        }
        cout << "\b\b\n";  // Eliminar la última coma y espacio
    }
 
    // Calcular el total de combinaciones posibles
    int totalCombinaciones = 1;
    for (size_t i = 0; i < experimentos.size(); ++i) {
        totalCombinaciones *= experimentos[i].size() - 1;  // Excluyendo el nombre del experimento
    }
 
    cout << "\nTotal de combinaciones posibles: " << totalCombinaciones << endl;
 
    // Mostrar las combinaciones
    cout << "\nCombinaciones:\n";
    for (int i = 1; i <= totalCombinaciones; ++i) {
        cout << "Combinacion " << i << ": ";
        for (size_t j = 0; j < experimentos.size(); ++j) {
            cout << experimentos[j][i % experimentos[j].size()] << ", ";
            i /= experimentos[j].size();
        }
        cout << "\b\b\n";  // Eliminar la última coma y espacio
    }
 
    return 0;
}

Este código utiliza un vector bidimensional (`experimentos`) para almacenar los datos de cada experimento. Luego, calcula y muestra el total de combinaciones posibles y las combinaciones específicas. Recuerda que este código asume que cada experimento tiene al menos un dato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar