Autor
|
Tema: Reserva de asientos en un cine (Leído 24,900 veces)
|
sora_ori
Desconectado
Mensajes: 269
|
Hola compañeros, Estoy haciendo un programa en C que me haga con una matriz los asientos de un cine, y me ha surgido un problema tonto. Cuando asigno un asiento reservado y muestro por pantalla me aparece así: Yo escogí reservar fila 3 y columa 3 y me reserva los anteriores, es decir, donde he marcado en rojo debería estar en "0". printf("\nEscribe la fila: "); printf("\nEscribe la columna: "); for (i=0; i<fila; i++) { for (j=0; j<columna; j++) {;} if (mat[i][j] != 1){ mat[i][j] = 1; } else printf("Asiento ocupado"); }
Gracias!
|
|
|
En línea
|
|
|
|
engel lex
|
Decidiste reservas fila 3 Y columna 3 o decifiste reservar el asiento que cumpla ambas condiciones?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
sora_ori
Desconectado
Mensajes: 269
|
Solamente el asiento, como se ve en la imagen, el color verde es el correcto, el color rojo es lo que sobra.
Saludos
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Tal como está, yo quitaría los 2 for, y lo dejaría: if (mat[i][j] != 1){ mat[i][j] = 1; } else printf("Asiento ocupado");
|
|
|
En línea
|
|
|
|
sora_ori
Desconectado
Mensajes: 269
|
@ivancea96
De esa forma no me funciona. Si no recorro la matriz no se puede hacer nada.
|
|
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
Puede ser que el scanf este guardando en el buffer de memoria el salto de linea lo que provoca esos errores. Intenta con: printf("\nEscribe la fila: "); scanf("%d%c", &fila ); //Para cuando presiones Enter printf("\nEscribe la columna: "); scanf("%d%c", &columna ); //Para cuando presiones Enter for (i=0; i<fila; i++) { for (j=0; j<columna; j++) {;} // WAAAAAAT??? if (mat[i][j] != 1){ mat[i][j] = 1; } else printf("Asiento ocupado"); }
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Estoy haciendo un programa en C que me haga con una matriz los asientos de un cine, y me ha surgido un problema tonto. Cuando asigno un asiento reservado y muestro por pantalla me aparece así: El problema se debe a que por alguna extraña razón estas utilizando un bucle: printf("\nEscribe la fila: "); printf("\nEscribe la columna: "); for (i = 0; i < fila; i++){ for (j = 0; j < columna; j++){ ; /* Este es el cuerpo del bucle */ } /* El valor final de "j" es "columna" */ if (mat[i][j] != 1){ /* Si mat[i][columna] != 1 ... */ mat[i][j] = 1; }else }
Basta con eliminar el bucle, quedando así: puts("Escribe la fila:"); puts("Escribe la columna:"); if (mat[fila][columna] != 1) mat[i][j] = 1; else
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
sora_ori
Desconectado
Mensajes: 269
|
Gracias "dato000" y "rir3760" por la ayuda, hice las sugerencias de ambos y me sigue printando igual (en el caso de "dato000") y en el caso de "rir3760" me lo deja todo en 0.
Saludos
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
if (mat[fila][columna] != 1) mat[fila][columna] = 1; else puts("Asiento ocupado");
Si con eso que hemos dicho, sin los bucles, no te va, es que ha de haber algo mal en el código.
|
|
|
En línea
|
|
|
|
sora_ori
Desconectado
Mensajes: 269
|
Posteo todo el code haber si así me podeis ayudar a encontrar el error. Gracias! #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int opcion, i, j, fila, columna; int mat[20][15]; while (opcion != 0){ printf("2.- Visualizar asientos disponibles\n"); printf("3.- Reservar asientos\n"); printf("\nEscoge una opcion: "); switch (opcion){ case 1: // Vaciar sala for (i=0; i<20; i++) { for (j=0; j<15; j++) { mat[i][j] = 0; } } printf("La sala ha sido vaciada correctamente"); break; case 2: // Visualizar asientos disponibles for (i=0; i<20; i++) { for (j=0; j<15; j++) { } } break; case 3: // Reservar asientos printf("\tReserva de asientos"); printf("\n------------------------------\n"); printf("\nEscribe la fila: "); printf("\nEscribe la columna: "); for (i=0; i<fila; i++) { for (j=0; j<columna; j++) {;} if (mat[i][j] != 1){ mat[i][j] = 1; } else printf("Asiento ocupado"); } break; case 0: printf("Has decidido salir, hasta luego"); return 0; break; } // Fin switch } // Fin while return 0; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
validar dia reserva php
PHP
|
kakashi20
|
2
|
3,148
|
29 Diciembre 2011, 21:35 pm
por kakashi20
|
|
|
AYuda Sistema de reserva
Desarrollo Web
|
y4ankee231
|
1
|
2,223
|
15 Noviembre 2012, 10:35 am
por #!drvy
|
|
|
Asignacion de asientos en C++
Programación C/C++
|
rusoko
|
4
|
5,610
|
6 Mayo 2014, 09:20 am
por eferion
|
|
|
AYUDA Reserva de vuelos en C
Programación C/C++
|
B_PORTA
|
6
|
4,129
|
16 Abril 2016, 13:33 pm
por B_PORTA
|
|
|
Algoritmo de reserva de puestos en avión
Programación C/C++
|
daya2912
|
3
|
2,451
|
16 Noviembre 2016, 05:28 am
por engel lex
|
|