I’m having trouble storing a value in the C struct

Asked

Viewed 37 times

0

When it comes to printing, they are somehow superimposed. I have no idea what it might be. The FOR is strange because it is necessary that Tsala data[FLOOR][ROOM][TURN] be this way and in that order.

//importação de bibliotecas
#include <stdio.h>
#include <string.h>

//definição de constantes
#define ANDAR 1
#define SALA 1
#define TURNO 2

//declaração de tipos
typedef struct {
    int status, periodo; 
    char curso[50];
} TSala;

//definição dos protótipos
void leituraDados (TSala dados[ANDAR][SALA][TURNO]);

//main
void main ()
{
    //declaração de variáveis
    TSala dados[ANDAR][SALA][TURNO];

    //preenchendo o vetor
    leituraDados (dados);
    
}
//implementações das funções
void leituraDados (TSala dados[ANDAR][SALA][TURNO])
{
    //declaração de variáveis
    int i, j, h;
    
    //3 for percorrendo todos os dados da matriz
    for (i=0; i<=ANDAR; i++)
    {
        for (j=0; j<=TURNO; j++)
        {
            for (h=0; h<=SALA; h++)
            {
                printf("\nInforme o Status do Andar %d, Turno %d, Sala %d: ", i+1, j, h+1);
                scanf("%d", &dados[i][h][j].status);
                
                printf("\nSTATUS = %d\n", dados[i][h][j].status);
                
                //Caso a sala esteja com o status alocada (status=1) irá receber as informações da mesma
                if (dados[i][h][j].status == 1)
                {
                    fflush (stdin);
                    printf("\n----- Informe o Curso do Andar %d, Turno %d, Sala %d: ", i+1, j, h+1);
                    gets (dados[i][h][j].curso);
                    printf("\nCURSO = %s\n", dados[i][h][j].curso);
                    printf("\nI(ANDAR)= %d | J(TURNO)= %d | H(SALA)= %d", i, j, h);
                    
                    printf("\n----- Informe o Periodo do Andar %d, Turno %d, Sala %d: ", i+1, j, h+1);
                    scanf("%d", &dados[i][h][j].periodo);                   
                }               
            }
        }
    }
    
    for (i=0; i<=ANDAR; i++)
    {
        for (j=0; j<=TURNO; j++)
        {
            for (h=0; h<=SALA; h++)
            {
                if (dados[i][h][j].status == 1)
                {

                    printf("\nCURSO = %s\n", dados[i][h][j].curso);
                                    
                }
            }
        }
    }
}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.