elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Reserva de asientos en un cine
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Reserva de asientos en un cine  (Leído 24,782 veces)
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Reserva de asientos en un cine
« en: 22 Enero 2014, 22:05 pm »

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".

Código
  1.                      printf("\nEscribe la fila: ");
  2.                      scanf("%d", &fila);
  3.                      printf("\nEscribe la columna: ");
  4.                      scanf("%d", &columna);
  5.  
  6.                      for (i=0; i<fila; i++) {
  7.                          for (j=0; j<columna; j++) {;}
  8.                          if (mat[i][j] != 1){    
  9.                             mat[i][j] = 1;
  10.                          }
  11.                          else printf("Asiento ocupado");
  12.                      }
  13.  



Gracias!


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #1 en: 22 Enero 2014, 22:12 pm »

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 Desconectado

Mensajes: 269



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #2 en: 22 Enero 2014, 22:13 pm »

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Reserva de asientos en un cine
« Respuesta #3 en: 22 Enero 2014, 22:28 pm »

Tal como está, yo quitaría los 2 for, y lo dejaría:

Código
  1. if (mat[i][j] != 1){  
  2.      mat[i][j] = 1;
  3. }
  4. else printf("Asiento ocupado");
En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #4 en: 22 Enero 2014, 22:47 pm »

@ivancea96

De esa forma no me funciona. Si no recorro la matriz no se puede hacer nada.
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #5 en: 22 Enero 2014, 23:19 pm »

Puede ser que el scanf este guardando en el buffer de memoria el salto de linea lo que provoca esos errores.

Intenta con:
Código
  1. printf("\nEscribe la fila: ");
  2. scanf("%d%c", &fila);  //Para cuando presiones Enter
  3. printf("\nEscribe la columna: ");
  4. scanf("%d%c", &columna);  //Para cuando presiones Enter
  5.  
  6. for (i=0; i<fila; i++) {
  7.      for (j=0; j<columna; j++) {;}  // WAAAAAAT???
  8.             if (mat[i][j] != 1){    
  9.                      mat[i][j] = 1;
  10.             }
  11.             else printf("Asiento ocupado");
  12. }

En línea


rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #6 en: 23 Enero 2014, 03:10 am »

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:
Código
  1. printf("\nEscribe la fila: ");
  2. scanf("%d", &fila);
  3.  
  4. printf("\nEscribe la columna: ");
  5. scanf("%d", &columna);
  6.  
  7. for (i = 0; i < fila; i++){
  8.   for (j = 0; j < columna; j++){
  9.      ; /* Este es el cuerpo del bucle */
  10.   }
  11.   /* El valor final de "j" es "columna" */
  12.  
  13.   if (mat[i][j] != 1){ /* Si mat[i][columna] != 1 ... */
  14.      mat[i][j] = 1;
  15.   }else
  16.      printf("Asiento ocupado");
  17. }

Basta con eliminar el bucle, quedando así:
Código
  1. puts("Escribe la fila:");
  2. scanf("%d", &fila);
  3.  
  4. puts("Escribe la columna:");
  5. scanf("%d", &columna);
  6.  
  7. if (mat[fila][columna] != 1)
  8.   mat[i][j] = 1;
  9. else
  10.   puts("Asiento ocupado");

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 Desconectado

Mensajes: 269



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #7 en: 23 Enero 2014, 13:23 pm »

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Reserva de asientos en un cine
« Respuesta #8 en: 23 Enero 2014, 14:56 pm »

Código
  1. if (mat[fila][columna] != 1)
  2.   mat[fila][columna] = 1;
  3. else
  4.   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 Desconectado

Mensajes: 269



Ver Perfil
Re: Reserva de asientos en un cine
« Respuesta #9 en: 23 Enero 2014, 15:33 pm »

Posteo todo el code haber si así me podeis ayudar a encontrar el error.

Gracias!


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(){
  6.    srand(time(NULL));
  7.    int opcion, i, j, fila, columna;
  8.    int mat[20][15];
  9.  
  10.    while (opcion != 0){
  11.          system("cls");
  12.          printf("1.- Vaciar sala\n");
  13.          printf("2.- Visualizar asientos disponibles\n");
  14.          printf("3.- Reservar asientos\n");
  15.          printf("0.- Salir\n");
  16.          printf("\nEscoge una opcion: ");
  17.          fflush(stdin);
  18.          scanf("%d", &opcion);
  19.  
  20.          switch (opcion){
  21.                 case 1: // Vaciar sala
  22.                      system("cls");
  23.                      for (i=0; i<20; i++) {
  24.                          for (j=0; j<15; j++) {
  25.                              mat[i][j] = 0;
  26.                          }
  27.                      }
  28.                      printf("La sala ha sido vaciada correctamente");
  29.                      getch();
  30.                      break;
  31.  
  32.                 case 2: // Visualizar asientos disponibles
  33.                      system("cls");
  34.                      for (i=0; i<20; i++) {
  35.                          printf("\n");
  36.                          for (j=0; j<15; j++) {
  37.                              printf(" %d ", mat[i][j]);
  38.                          }
  39.                          printf("\n");
  40.                      }
  41.                      getch();
  42.                      break;
  43.  
  44.                 case 3: // Reservar asientos
  45.                      system("cls");
  46.                      printf("\tReserva de asientos");
  47.                      printf("\n------------------------------\n");
  48.                      printf("\nEscribe la fila: ");
  49.                      scanf("%d%c", &fila);
  50.                      printf("\nEscribe la columna: ");
  51.                      scanf("%d%c", &columna);
  52.  
  53.                      for (i=0; i<fila; i++) {
  54.                         for (j=0; j<columna; j++) {;}
  55.                          if (mat[i][j] != 1){    
  56.                             mat[i][j] = 1;
  57.                          }
  58.                          else printf("Asiento ocupado");
  59.                     }
  60.  
  61.                      getch();
  62.                      break;
  63.  
  64.                 case 0:
  65.                      system("cls");
  66.                      printf("Has decidido salir, hasta luego");
  67.                      getch();
  68.                      return 0;
  69.                      break;
  70.  
  71.                 } // Fin switch
  72.    } // Fin while
  73.  
  74.    getch();
  75.    return 0;
  76. }
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
validar dia reserva php
PHP
kakashi20 2 3,143 Último mensaje 29 Diciembre 2011, 21:35 pm
por kakashi20
AYuda Sistema de reserva
Desarrollo Web
y4ankee231 1 2,194 Último mensaje 15 Noviembre 2012, 10:35 am
por #!drvy
Asignacion de asientos en C++
Programación C/C++
rusoko 4 5,576 Último mensaje 6 Mayo 2014, 09:20 am
por eferion
AYUDA Reserva de vuelos en C
Programación C/C++
B_PORTA 6 4,077 Último mensaje 16 Abril 2016, 13:33 pm
por B_PORTA
Algoritmo de reserva de puestos en avión
Programación C/C++
daya2912 3 2,413 Último mensaje 16 Noviembre 2016, 05:28 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines