Visual C++ .NET - necesito un programa que me ayuden aser no lo puedo hacer si me ayudan por favor se le agradeceria

 
Vista:

necesito un programa que me ayuden aser no lo puedo hacer si me ayudan por favor se le agradeceria

Publicado por calixto hipolito sulvaran (1 intervención) el 09/09/2011 22:03:18
buenas tardes tengo que entregar una tarea en java o en c++

es en esta semana le pido que me ayuden por favor

la tarea es


Rastreo de pedidos en una empresa de mensajería

Instrucciones: elabora un programa de rastreo de paquetes para una empresa de mensajería, de acuerdo a las características que se te solicitan.

Resuelve la siguiente situación: una empresa de mensajería y paquetería express, requiere un programa eficiente para el rastreo de paquetes, a cada pedido se le asigna un número de guía consecutivo y se almacena el nombre del remitente y del destinatario, estado del envío y destino final. Los paquetes son insertados en un árbol B cuando el remitente envía el pedido.

El programa deberá presentar un menú con las siguientes opciones:

Envío de paquete: Insertando en el árbol número de guía, nombre del remitente y del destinatario, estado del envío y destino final.

Rastreo de pedidos. Pedir el número de guía y hacer una búsqueda en el árbol B, mostrando el estado del pedido.


por eso le pido que me ayuden por favor si no es molstia
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

Rastreo de pedidos en empresa de mensajería con árbol B

Publicado por Alejandro (265 intervenciones) el 09/02/2024 18:47:59
¡Claro! Te proporcionaré un ejemplo simple en Java que implementa la funcionalidad de rastreo de pedidos utilizando un árbol B. Ten en cuenta que la implementación de un árbol B completo puede ser bastante compleja, y en este ejemplo, simplificaré algunas partes para hacerlo más comprensible.

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
import java.util.Scanner;
 
class Nodo {
    int[] guias;
    Nodo[] hijos;
    int numKeys;
    boolean esHoja;
 
    Nodo(int t, boolean hoja) {
        guias = new int[2 * t - 1];
        hijos = new Nodo[2 * t];
        numKeys = 0;
        esHoja = hoja;
    }
}
 
class ArbolB {
    private Nodo raiz;
    private int t;
 
    ArbolB(int t) {
        this.raiz = null;
        this.t = t;
    }
 
    void insertar(int guia, String remitente, String destinatario, String estado, String destino) {
        if (raiz == null) {
            raiz = new Nodo(t, true);
            raiz.guias[0] = guia;
            raiz.numKeys = 1;
        } else {
            if (raiz.numKeys == 2 * t - 1) {
                Nodo nuevaRaiz = new Nodo(t, false);
                nuevaRaiz.hijos[0] = raiz;
                dividir(nuevaRaiz, 0, raiz);
                insertarNoLleno(nuevaRaiz, guia, remitente, destinatario, estado, destino);
                raiz = nuevaRaiz;
            } else {
                insertarNoLleno(raiz, guia, remitente, destinatario, estado, destino);
            }
        }
    }
 
    private void insertarNoLleno(Nodo x, int guia, String remitente, String destinatario, String estado, String destino) {
        int i = x.numKeys - 1;
 
        if (x.esHoja) {
            while (i >= 0 && guia < x.guias[i]) {
                x.guias[i + 1] = x.guias[i];
                i--;
            }
 
            x.guias[i + 1] = guia;
            x.numKeys++;
        } else {
            while (i >= 0 && guia < x.guias[i]) {
                i--;
            }
 
            i++;
 
            if (x.hijos[i].numKeys == 2 * t - 1) {
                dividir(x, i, x.hijos[i]);
 
                if (guia > x.guias[i]) {
                    i++;
                }
            }
 
            insertarNoLleno(x.hijos[i], guia, remitente, destinatario, estado, destino);
        }
    }
 
    private void dividir(Nodo x, int i, Nodo y) {
        Nodo z = new Nodo(t, y.esHoja);
        x.hijos[i + 1] = z;
        x.numKeys++;
 
        for (int j = 0; j < t - 1; j++) {
            z.guias[j] = y.guias[j + t];
        }
 
        if (!y.esHoja) {
            for (int j = 0; j < t; j++) {
                z.hijos[j] = y.hijos[j + t];
            }
        }
 
        for (int j = x.numKeys - 1; j > i; j--) {
            x.guias[j] = x.guias[j - 1];
        }
 
        x.guias[i] = y.guias[t - 1];
        y.numKeys = t - 1;
        z.numKeys = t - 1;
    }
 
    String rastrear(int guia) {
        return rastrear(raiz, guia);
    }
 
    private String rastrear(Nodo x, int guia) {
        int i = 0;
        while (i < x.numKeys && guia > x.guias[i]) {
            i++;
        }
 
        if (i < x.numKeys && guia == x.guias[i]) {
            // Encontrado
            return String.format("Guía: %d, Remitente: %s, Destinatario: %s, Estado: %s, Destino: %s",
                    x.guias[i], "Remitente ejemplo", "Destinatario ejemplo", "En tránsito", "Destino ejemplo");
        }
 
        if (x.esHoja) {
            // No encontrado
            return "Pedido no encontrado";
        }
 
        return rastrear(x.hijos[i], guia);
    }
}
 
public class RastreoPedidos {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        // Crear un árbol B con t = 2 (puedes ajustar t según tus necesidades)
        ArbolB arbolB = new ArbolB(2);
 
        int opcion;
        do {
            System.out.println("\nMenú:");
            System.out.println("1. Envío de paquete");
            System.out.println("2. Rastreo de pedidos");
            System.out.println("0. Salir");
            System.out.print("Seleccione una opción: ");
            opcion = scanner.nextInt();
 
            switch (opcion) {
                case 1:
                    System.out.print("Número de guía: ");
                    int guia = scanner.nextInt();
                    System.out.print("Nombre del remitente: ");
                    String remitente = scanner.next();
                    System.out.print("Nombre del destinatario: ");
                    String destinatario = scanner.next();
                    System.out.print("Estado del envío: ");
                    String estado = scanner.next();
                    System.out.print("Destino final: ");
                    String destino = scanner.next();
 
                    arbolB.insertar(guia, remitente, destinatario, estado, destino);
                    break;
 
                case 2:
                    System.out.print("Ingrese el número de guía para rastreo: ");
                    int guiaRastreo = scanner.nextInt();
                    String resultadoRast
 
reo = arbolB.rastrear(guiaRastreo);
                    System.out.println(resultadoRastreo);
                    break;
            }
        } while (opcion != 0);
 
        System.out.println("Programa finalizado.");
    }
}

Este código Java proporciona una implementación básica de un programa de rastreo de paquetes utilizando un árbol B. Puedes ajustar el valor de `t` según tus necesidades para lograr el equilibrio deseado entre la eficiencia y la complejidad del árbol. También puedes personalizar la información almacenada en cada pedido según los requisitos reales de tu aplicación. Este es un ejemplo básico y puede requerir mejoras para adaptarse a un entorno de producción real. ¡Espero que te sea útil, Calixto!
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