C - Problems with printing

Asked

Viewed 68 times

0

Hello! So, I’m having problems with the variables "day" and "time". Although I make the required selection, the variable is not printed on the screen at the end of the program. I’ve made several changes but none of them have any effect, so I ask for your help!

Code:

int main(void){

setlocale(LC_ALL, "Portuguese");//habilita a acentuação para o português!

int escolha1, escolha2, escolhaD, menu, menu2, escolhaH,escolhaA, a[12][4], l, c, qtd, lucro, ocupados, Pvendas, condicao, confirmacao;
char  cidade, hora, dia, preco;
qtd=0;//quantidade de assentos total
lucro=0;// lucro da empresa
ocupados=0;// Assentos ocupados
Pvendas=0; // Passagens vendidas
  for (l=0;l<12;l++)
 {
    for (c=0;c<4;c++)
    {
        qtd++;
        a[l][c] = qtd;
        }
        }

    volta:
    printf("\n=====================================================");
    printf(" \n    B E M   V I N D O   A   I A L   V I A G E N S");
    printf("\n=====================================================");
    printf("\n\nComo podemos ajudar você?:  \n\n1 - Comprar passagem \n2 - Ver minhas passagens\n");
    printf("\nEscolha sua opção: ");
    scanf("%d", &menu);
     system("cls"); //LIMPA TELA AO REALIZAR O METODO ACIMA
      switch(menu){//Opções do menu principal

       case 1:

            printf("\n=====================================================");
            printf("\n       E S C O L H A   S E U   D E S T I N O");
            printf("\n=====================================================");
            printf("\n\n1 - Marudá \n2 - Salinas \n3 - Marituba \n4 - Castanhal\n");
            printf("\n0- Voltar ao menu principal");
            printf("\nEscolha sua opção: ");
            scanf("%d", &menu2);
            system("cls"); //LIMPA TELA AO REALIZAR O METODO ACIMA
            switch(menu2){//Opções do segundo menu

            case 1:

                volta2:

                printf("\n=====================================================");
                printf("\n                   M A R U D Á");
                printf("\n=====================================================");
                printf("\nDias disponíveis:");
                printf("\n1- 20/10/2017:");
                printf("\n2- 01/11/2017:");
                printf("\n3- 10/11/2017:");
                printf("\n0- Voltar ao menu principal");
                printf("\nEscolha sua opção: ");
                scanf("%d", &escolhaD);// Varivel para o dia da viagem
                char cidade[]="Marudá";
                 system("cls");//LIMPA TELA AO REALIZAR O METODO ACIMA
                if(escolhaD >3 )
                {
                    system("cls");//LIMPA TELA AO REALIZAR O METODO ACIMA
                    printf("\nOpção inválida, favor tentar novamente!");

                   goto volta2;
                     system("cls");//LIMPA TELA AO REALIZAR O METODO ACIMA
                }
                else
                {
                    if(escolhaD==1){
                        char dia[]="20/10/2017";//guardar a data da viagem

                    } else{
                        if(escolhaD==2){
                            char dia[]="01/11/2017";//guardar a data da viagem
                        }
                        else{
                            if(escolhaD==3){
                            char dia[]="10/11/2017";//guardar a data da viagem
                        }
                        else{
                            if(escolhaD==0){
                            goto volta;
                        }
                        }

                        }
                    }
                     printf("\nHorários disponíveis:");
                     printf("\n1- 06:30");
                     printf("\n2- 08:30");
                     printf("\n3- 10:00");
                     printf("\n4- 14:00");
                     printf("\n0- voltar para o menu principal");
                     printf("\nEscolha sua opção: ");
                     scanf("%d", &escolhaH);
                      system("cls");//LIMPA TELA AO REALIZAR O METODO ACIMA
                }

                if(escolhaH==1){
                    char hora[]="06:30";
                } 
                else{
                    if(escolhaH==2){
                        char hora[]="08:30";
                    } 
                    else{
                        if(escolhaH==3){
                            char hora[]="10:00";
                        } 
                        else{
                            if(escolhaH==4){
                                char hora[]="14:00";
                            }   
                        }
                    }
                }



                if(escolhaH==0){
                goto volta;
                }else{
                    volta4:
                        printf(dia);
                printf("\nEscolha seu assento:\n");
                 for (l=0;l<12;l++)
                {
                 for (c=0;c<4;c++)
                 {

                    if (a[l][c]==0 || a[l][c]==20 || a[l][c]==30 )
                     {
                          printf("[ x] ");
                          }
                          else
                          {
                              printf("[ %d] ", a[l][c]);
                              }
                          }
                          printf("\n");
                          }
                           printf("\n0- Voltar ao menu principal:\n");
                printf("\nEscolha seu assento:");
                scanf("%d", &escolhaA);
                system("cls");//LIMPA TELA AO REALIZAR O METODO ACIMA
                }

                if(escolhaA==0){
                    goto volta;
                }
                else{

                    if(escolhaA==20 || escolhaA==30){
                        printf("\nVocê escolheu um assento já vendido, favor tentar novamente!");
                        goto volta4;
            } 
            else{
                printf("\nCondições especiais:");
                printf("\n1- Não possuo. Valor da passagem: R$20,00 ");
                printf("\n2- Sou estudante. Valor da passagem: R$10,00 ");
                printf("\n3- Sou Idoso (Acima de 60 anos). Valor da passagem: R$00,00 ");
                printf("\n0- Voltar ao menu principal:\n");
                printf("\nEscolha seu assento:");
                scanf("%d", &condicao);
            }
                }

            if(condicao==0){
                goto volta;
            } 
            else{
                if(condicao==1){
                    printf("\nConfirme dados da passagem:");
                    printf("\nDestino: ");
                    printf(cidade);
                    printf("\nData:");
                    printf(dia);
                    printf("\nHorário:");
                    printf(hora);
                    printf("\nAssento: %d", escolhaA );
                    printf("\n\n1-Confirmar dados");
                    printf("\n\n2-Cancelar");
                    scanf("%d", confirmacao);
                }
            }
            if(confirmacao==1){

                lucro ++;
                Pvendas ++; 

                 for (l=0;l<12;l++)
             {
                 for(c=0;c<4;c++)
                 {
                      if (a[l][c]==escolhaA)
                      {
                          a[l][c]=0;
                          }
                          }
                          }
                goto volta;
            }
                  break;

        case 2:
                    printf("\n=====================================================");
                    printf("\n                   S A L I N A S");
                    printf("\n=====================================================");
                      break;


              case 3:
                        printf("\n=====================================================");
                        printf("\n                   M A R I T U B A");
                        printf("\n=====================================================");
                          break;
                    case 4:
                            printf("\n=====================================================");
                            printf("\n                   C A S T A N H A L");
                            printf("\n=====================================================");

                    break;
                default:
                 printf("\n\nOpção inválida! Por favor, verifique a opção e tente novamente!");
                 printf("\n");
            }//Fim do segundo menu
            break;
            //printf("\n\nOpção inválida! Por favor, verifique a opção e tente novamente!");
            //printf("\n");
            //break;
       case 2:
                printf("\n=====================================================");
                printf("\n    P A S S A G E N S   A D Q U I R I D A S");
                printf("\n=====================================================");
                printf("\n\nDestino: VITÓRIA-ES");
                printf("\nHorário = 08:00");
                printf("\nPrevisão de chegada = 12:00");
                printf("\n\n A IAL deseja a você uma excelente viagem!");
             break;
             default :
                printf("\n\nOpção inválida! Por favor, verifique a opção e tente novamente!");
                printf("\n");
                goto volta;
            break;
}//Fim do menu principal

return 0;
}
  • 1

    This code is very confusing, trying to fix it is not the solution. You need to learn every concept well with smaller codes to then do something like this. You can solve the problem of this code, but you will learn everything wrong.

  • This project is for this weekend and my college gave this deadline right on time and we didn’t even have much contact with the language (This code was done with a lot of research, but, honestly, vague by the time we were spent). Would it be too complicated to solve the code problems? Or it is better to try to even start from 0?

  • 1

    Starting with the goto. They are bad practice and certainly do not need them to structure themselves properly.

  • Do you have a project until the end of the week, @Allanlobo? So, how about following some tips for writing code for the reader? The first is that if you need to indicate to whom you refer a block end, then you have a very large block. It needs to be obvious that the main menu block ends there, or that the secondary menu ends there. Another point is that no code after the goto is executed. This operation is formally known as unconditional deviation, which means it will divert the execution flow and ready, it will not execute the command below, but indicated by the label

2 answers

1

There is a lot, but A lot wrong with your code. I would have to do it almost totally. It’s totally based on the patterns XGH.

I point here the three Achilles tendons that are causing the date and time not to appear at the end.

  1. Is declaring strings wrongly.
  2. This re-declaring the same variable names in different parts of the code.
  3. Assigning strings to variables incorrectly.

Getting ready:

  1. When you want to store strings, in C, you should declare them like this:

     char dia[tamanho];
    

    that is to say

     char dia[16];
    
  2. When you declare again a variable inside the keys { } they exist only in that context. State the variables only once, not each time you need to use them.

  3. And connected to 2, instead of redeclaring the variables use the strcpy function to assign a string to a variable like this:

    strcpy(dia, "20/10/2017");
    

Making these fixes your program will work, but it still contains several errors.

Make like Chaves, if you want to be something in life, devour the books.

-4

The line you try to print the day variable put this:

printf("%s",dia);

Browser other questions tagged

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