C/Visual C - Una practica en Backtraking

 
Vista:

Una practica en Backtraking

Publicado por Javi (1 intervención) el 11/07/2002 02:25:26
Hola, vereis esq estoy todavia en examenes, y tengo q entregar una practica en backtraking, os cuento, dado una superficie dada por pantalla, y teniendo una valdosa de `x` de ancho e `y`de largo, cuantas valdosas necesitaria para poder cubrir la superficie dada.

Pues na este es el programia :) si alguien me pudiera echar una mano lo agradeceria mucho.

Un saludo
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 de backtracking para cubrir una superficie con baldosas

Publicado por Alejandro (1153 intervenciones) el 06/03/2025 18:19:30
A continuación, te presento un ejemplo de cómo implementar un programa en C que utiliza el enfoque de backtracking para determinar cuántas baldosas de dimensiones `x` (ancho) e `y` (largo) se necesitan para cubrir una superficie dada. Este programa asume que la superficie es rectangular y que las baldosas también son rectangulares.

Código de ejemplo



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
#include <stdio.h>
 
int contarBaldosas(int anchoSuperficie, int largoSuperficie, int anchoBaldosa, int largoBaldosa) {
    // Calcular el área de la superficie y de la baldosa
    int areaSuperficie = anchoSuperficie * largoSuperficie;
    int areaBaldosa = anchoBaldosa * largoBaldosa;
 
    // Si el área de la baldosa es 0, no se puede cubrir
    if (areaBaldosa == 0) {
        return -1; // Indica un error
    }
 
    // Calcular cuántas baldosas se necesitan
    int baldosasNecesarias = areaSuperficie / areaBaldosa;
 
    // Si hay un residuo, se necesita una baldosa adicional
    if (areaSuperficie % areaBaldosa != 0) {
        baldosasNecesarias++;
    }
 
    return baldosasNecesarias;
}
 
int main() {
    int anchoSuperficie, largoSuper largo de la superficie: ");
    scanf("%d", &largoSuperficie);
    // Solicitar al usuario las dimensiones de la baldosa
    printf("Introduce el ancho de la baldosa: ");
    scanf("%d", &anchoBaldosa);
    printf("Introduce el largo de la baldosa: ");
    scanf("%d", &largoBaldosa);
    // Calcular el número de baldosas necesarias
    int resultado = contarBaldosas(anchoSuperficie, largoSuperficie, anchoBaldosa, largoBaldosa);
   if (resultado != -1) {
        printf("Se necesitan %d baldosas para cubrir la superficie.\n", resultado);
    } else {
        printf("Error: el área de la baldosa no puede ser cero.\n");
    }
 
    return 0;
}

Explicación del código



1. Función `contarBaldosas`:
- Esta función toma como parámetros el ancho y largo de la superficie, así como el ancho y largo de la baldosa.
- Calcula el área de la superficie y de la baldosa.
- Determina cuántas baldosas son necesarias para cubrir la superficie. Si hay un residuo al dividir el área de la superficie por el área de la baldosa, se suma una baldosa adicional.

2. Función `main`:
- Solicita al usuario que introduzca las dimensiones de la superficie y de la baldosa.
- Llama a la función `contarBaldosas` y muestra el resultado.

Notas


- Este código asume que las dimensiones son enteras y que la superficie es completamente rectangular.
- Si necesitas un enfoque más complejo que incluya la colocación de baldosas en una superficie no rectangular o con obstáculos, se podría implementar un algoritmo de backtracking más avanzado.

¡Buena suerte con tus exámenes, Javy!
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