Ir ao conteúdo
  • Cadastre-se
Gustavo Duarte Barbosa

C Erro na exibição de MATRIZ em C

Recommended Posts

O problema é que a última linha da matriz está dando erro, não exibindo o caractere que foi definido, e este erro ocorre apenas na última linha, não importando quantas linhas e quantas colunas eu defina. Eu já li e reli o código mas não encontro nada de estranho que pertenceria a esse problema. Este código eu localizei na internet, não é de minha autoria como descrito no \\ comentário do código, mas ele está servindo de base para um código meu.

/*
  Name: teatro
  Copyright: danilo lima da guia    
  Author: limadaguia
  Date: 21/09/06 14:58
  Description: 
*/

#include <stdio.h>
#include<stdlib.h>
#include<conio.h>
#define COL 7
#define ROW 4
#define FALSE 0
#define TRUE 1

void inicializa(char matriz[ROW][COL]);
void mostrarPainel(char matriz[ROW][COL]);
void comprar(char matriz[ROW][COL]);
void reservar(char matriz[ROW][COL]);
void legenda();
int menuOpcao();
int colunaY();
int linhaX();

//estrutura dos dados
 struct dados {
          char nome[30];
          char bairro[30];
          int regnum;
   };  
      
   struct dados cod[50];
      int n=0;

int main (void){
  char matriz[ROW][COL];
  int opcao;
  int loopContinue=TRUE;
  
  inicializa(matriz); //Iniciliza a matriz com valores .(Livre)
    
  do{
     system("cls");//Limpa a tela                
     opcao=menuOpcao();                   
     switch(opcao){
        case 1:
          system("cls");
          system("cls"); 
          mostrarPainel(matriz);//Mostra o Painel atualizado
          comprar(matriz); // Realiza a compra de uma cadeira no painel, marcando c/ um X
          break;
        
        case 2:
          system("cls");
          system("cls");
          mostrarPainel(matriz);
          reservar(matriz); //Realiza a reserva de uma cadeira no painel, marcando c/ um R
          break;
        
        case 3:
          system("cls");
          mostrarPainel(matriz);
          getch();
          break;   
        
        case 4:
          loopContinue = FALSE; //condicao para saída do programa
     }
  }while(loopContinue);
        
  getchar();    
  return 0;       
}
void inicializa(char matriz[ROW][COL]){
     int i,j;
     for(i=1;i<=ROW;i++)
       for(j=1;j<=COL;j++)
          matriz[i][j] = '.';
}

void mostrarPainel(char matriz[ROW][COL]){
  
  int i,j;
  printf("\n\n         %c   PAINEL DE OCUPACOES   %c\n\n",16,17);
  printf("          ");
  
  for(i=1;i<=COL;i++)
    printf("%d     ",i);
  
  for(i=1;i<=ROW;i++){
     printf("\n\n     %d",i);
     for(j=1;j<=COL;j++)
       printf("   (%c)",matriz[i][j]);     
  }
  //apresenta o menu na tela
  legenda();
}        
 
int menuOpcao(){
    int opcao=4;
    do {
         system("cls"); 
         printf("\n\n                    %c  MENU  %c\n\n",16,17);
        
         printf("                %c  1- Comprar        %c\n",16,17);
        
         printf("                %c  2- Reservar       %c\n",16,17);
        
         printf("                %c  3- Mostrar Painel %c\n",16,17);
        
         printf("                %c  4- Exit           %c\n\n",16,17);
        
         printf("                   opcao: ");scanf("%d",&opcao);
         
         if(opcao <= 0 || opcao > 4){
            printf("\n\n\n    DIGITE APENAS VALORES CORESPONDENTES AO MENU !!");
            getch();
         }
            
     }while(opcao <= 0 || opcao > 4);
    
    return opcao;
}
//apresenta  a legenda na tela
void legenda(){
   printf("\n\n\n        .-Livre  X-Ocupado  R-Reservado\n\n");

}  
    //efetica a compra da cadeira
void comprar(char matriz[ROW][COL]){
   int row, col;
   printf("\n           COMPRA DE CADEIRAS\n\n");
   row = linhaX();
   col = colunaY();
   
   if(matriz[row][col]=='.'){
       matriz[row][col] = 'X';
       printf("\n\n      COMPRA EFETIVADA COM SUCESSO !!");
   }   
   else if (matriz[row][col]=='X')
             printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");
        else if(matriz[row][col]=='R')
               printf("\n\n    CADEIRA JA RESERVADA!! ESCOLHA OUTRA !!\n\n");
   
   getch();
   
               
} 
//reserva a cadeira no teatro
void reservar(char matriz[ROW][COL]){
   int row, col;
    printf("\n\n         RESERVA DE CADEIRAS\n\n");
   row = linhaX();
   col = colunaY();
   
   if(matriz[row][col]=='.'){
       matriz[row][col] = 'R';
       printf("\n\n      RESERVA EFETIVADA COM SUCESSO !!");
   }   
   else if (matriz[row][col]=='X')
             printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");
        else if(matriz[row][col]=='R')
               printf("\n\n      CADEIRA JA RESERVADA !! ESCOLHA OUTRA !!\n\n");
    
    getch();
              
}
//ler a linha oferecida pelo usuario
int linhaX(){
   int row;
   printf("          Linha: "); scanf("%d",&row);
     if(row>4)
     {
       printf("\t\n Esta cadeira nao existe!!! ");
       }
   return row;
}
//ler a coluna oferecida pelo usuario
int colunaY(){
   int col;
   printf("          Coluna: "); scanf("%d",&col);
   if(col>7)
     {
       printf("\t\n Esta cadeira nao existe!!! ");
       }
   return col;                         
}


    
  
                      

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada, quando olhei a maneira que o for tava sendo usado já pensei nessa possibilidade, que na hr de salvar as informações na matriz, tava indo em lugar que nem existia, claro que há uma explicação melhor kk mas pra mim pode ter sido isso, enfim,  fico feliz por ter ajudado, boa sorte no seu código!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×