Ir ao conteúdo
  • Cadastre-se
Vinicius Buzzacaro

RESOLVIDO Texto de script c++ simplesmente ignorado pelo cmd

Recommended Posts

Não posso dizer que sou um programador iniciante em c++, pois na verdade por enquanto apenas estou praticando um pouco por hobbie, logo, a minha "ignorância" em relação ao assunto é esperada. Sei apenas algumas coisas básicas.

 

O seguinte é que meu código está passando pelo compilador tranquilamente, porém alguns trechos passam como se fossem um "flash" pelo Cmd quando executado, trechos tais como este: 

 

char Confirmation_pa, Data_confirmation, Data_confirmation2, Confirmation_pg, Pgdata_confirmation, Pgdata_confirmation2;
    int Menu_decision, Pa_choice, a1pa, anpa, npa, Sumpa, rpa, Pg_choice, Sumpg, rpg, npg, a1pg, anpg, an;
    
    system("color f0");
    printf("Menu\n\n");
    printf("1 - P.A.\n");
    printf("2 - P.G.\n");
    scanf("%d", &Menu_decision);
    
    if(Menu_decision==1)
        {
            system("cls");
            printf("voce escolheu: P.A.\n");
            printf("Esta certo disso? (Y/N)");
            scanf("%c", &Confirmation_pa);

 

 

Este trecho que diz "voce escolheu: P.A.", simplesmente não aparece, achei isso estranho pois não vi nenhum erro no compilador, enfim se alguém puder me ajudar agradeço desde já, ai vai o código inteiro, para quem quiser ver todo: 

 

 

 

#include <iostream>
#include <math.h>

int main(int argc, char *argv[])

{
    char Confirmation_pa, Data_confirmation, Data_confirmation2, Confirmation_pg, Pgdata_confirmation, Pgdata_confirmation2;
    int Menu_decision, Pa_choice, a1pa, anpa, npa, Sumpa, rpa, Pg_choice, Sumpg, rpg, npg, a1pg, anpg, an;
    
    system("color f0");
    printf("Menu\n\n");
    printf("1 - P.A.\n");
    printf("2 - P.G.\n");
    scanf("%d", &Menu_decision);
    
    if(Menu_decision==1)
        {
            system("cls");
            printf("voce escolheu: P.A.\n");
            printf("Esta certo disso? (Y/N)");
            scanf("%c", &Confirmation_pa);
            
            if(Confirmation_pa=='y'||'Y')
                {
                    system("cls");
                    printf("Menu\n\n");
                    printf("1 - Soma de uma P.A.\n");
                    printf("2 - Determinacao de um termo especifico de uma P.A.\n");
                    scanf("%d", &Pa_choice);
                    
                    if(Pa_choice==1)
                        {
                            system("cls");
                            printf("Digite o primeiro termo da sua P.A.: ");
                            scanf("%d", &a1pa);
                            system("cls");
                            printf("Digite o ultimo termo da sua P.A.: ");
                            scanf("%d", &anpa);
                            system("cls");
                            printf("Digite o total de termos da sua P.A.: ");
                            scanf("%d", &npa);
                            system("cls");
                            printf("a1 = %d", a1pa);
                            printf("r = %d", rpa);
                            printf("a%d = %d", npa, anpa);
                            printf("Estes sao seus dados? (Y/N)");
                            scanf("%c", &Data_confirmation);
                            
                            if(Data_confirmation=='y'||'Y')
                                {
                                    Sumpa=((a1pa+anpa)*npa)/2;
                                    printf("A soma da sua P.A. e = %d", Sumpa);
                                }
                            
                            else(Data_confirmation=='n'||'N');
                                {
                                    while(Data_confirmation=='y'||'Y')
                                              {
                                                        system("cls");
                                                printf("Digite o primeiro termo da sua P.A.: ");
                                                 scanf("%d", &a1pa);
                                                system("cls");
                                                printf("Digite o ultimo termo da sua P.A.: ");
                                                 scanf("%d", &anpa);
                                                 system("cls");
                                                   printf("Digite o total de termos da sua P.A.: ");
                                                scanf("%d", &npa);
                                                system("cls");
                                                printf("a1 = %d\n a%d = %d\n n = %d", a1pa, anpa, npa, npa);
                                                 printf("Estes sao seus dados? (Y/N)");
                                                scanf("%c", &Data_confirmation);
                                           }   
                                }
                        
                
                                
                            
                        }
                        
                    else(Pa_choice==2);
                        {
                            system("cls");
                            printf("Digite o primeiro termo da sua P.A.: ");
                            scanf("%d", &a1pa);
                            system("cls");
                            printf("Digite a razao de sua P.A.: ");
                            scanf("%d", &rpa);
                            system("cls");
                            printf("Digite o total de termos da sua P.A.: ");
                            scanf("%d", &npa);
                            system("cls");
                            printf("a1 = %d\n r = %d\n n = %d", a1pa, rpa, npa);
                            printf("Estes sao seus dados? (Y/N)");
                            scanf("%c", &Data_confirmation2);
                            
                            if(Data_confirmation2=='y'||'Y')
                                {
                                    system("cls");
                                    an=a1pa+(npa-1)*rpa;
                                    printf("O termo a%d e = %d", npa, anpa);
                                }
                                
                            else(Data_confirmation2=='n'||'N');
                                {
                                     system("cls");
                                       printf("Digite o primeiro termo da sua P.A.: ");
                                     scanf("%d", &a1pa);
                                    system("cls");
                                     printf("Digite a razao de sua P.A.: ");
                                      scanf("%d", &rpa);
                                     system("cls");
                                     printf("Digite o total de termos da sua P.A.: ");
                                      scanf("%d", &npa);
                                      system("cls");
                                      printf("a1 = %d\n r = %d\n n = %d", a1pa, rpa, npa);
                                      printf("Estes sao seus dados? (Y/N)");
                                       scanf("%c", &Data_confirmation2);
                                }
                            
                        }
            
                }
                
            else(Confirmation_pa=='n'||'N');
               {
                       while(Confirmation_pa=='n'||'N')
                              {
                                  
                                    system("cls");
                              printf("Menu\n\n");
                              printf("1 - P.A.\n");
                              printf("2 - P.G.\n");
                              scanf("%d", &Menu_decision);
                           }
                       
               }
        }
        
    else(Menu_decision==2);
       {
            system("cls");
            printf("voce escolheu: P.G.\n");
            printf("Esta certo disso? (Y/N)");
            scanf("%c", &Confirmation_pg);
            
            if(Confirmation_pg=='y'||'Y')
                {
                    system("cls");
                    printf("Menu\n\n");
                    printf("1 - Soma de uma P.G.");
                    printf("2 - Determinacao de um termo especifico de uma P.G.");
                    scanf("%d", &Pg_choice);
                    
                    if(Pg_choice==1)
                        {
                            system("cls");
                            printf("Digite o primeiro termo da sua P.G.: ");
                            scanf("%d", &a1pg);
                            system("cls");
                            printf("Digite a razao da sua P.G.: ");
                            scanf("%d", &rpg);
                            system("cls");
                            printf("Digite o total de termos da sua P.G.: ");
                            scanf("%d", npg);
                            printf("a1 = %d\n r = %d\n n = %d", a1pg, rpg, npg);
                            printf("Estes sao seus dados? (Y/N)");
                            scanf("%c", &Pgdata_confirmation);
                            
                            if(Pgdata_confirmation=='y'||'Y')
                                {
                                    Sumpg=(a1pg*(pow(rpg, npg)-1))/(rpg-1);
                                    printf("A soma da sua P.G. e = %d", Sumpg);
                                }
                                
                            else(Pgdata_confirmation=='n'||'N');
                                {
                                    while(Pgdata_confirmation=='n'||'N')
                                       {
                                               system("cls");
                                               printf("Digite o primeiro termo da sua P.G.: ");
                                              scanf("%d", &a1pg);
                                             system("cls");
                                            printf("Digite a razao da sua P.G.: ");
                                              scanf("%d", &rpg);
                                              system("cls");
                                             printf("Digite o total de termos da sua P.G.: ");
                                               scanf("%d", npg);
                                            printf("a1 = %d\n r = %d\n n = %d", a1pg, rpg, npg);
                                            printf("Estes sao seus dados? (Y/N)");
                                            scanf("%c", &Pgdata_confirmation);
                                       }
                                       
                                } 
                                 
                        }
                        
                    else(Pg_choice==2);
                        {
                            system("cls");
                            printf("Digite o primeiro termo da sua P.G.: ");
                            scanf("%d", &a1pg);
                            system("cls");
                            printf("Digite a razao da sua P.G.: ");
                            scanf("%d", &rpg);
                            system("cls");
                            printf("Digite o total de termos da sua P.G.: ");
                            scanf("%d", &npg);
                            printf("a1 = %d\n r = %d\n n = %d", a1pg, rpg, npg);
                            printf("Estes sao seus dados? (Y/N)");
                            scanf("%c", &Pgdata_confirmation2);
                            
                            if(Pgdata_confirmation2=='y'||'Y')
                                {
                                    system("cls");
                                    anpg=a1pg*pow(rpg, (npg-1));
                                    printf("a%d = %d", npg, anpg);
                                    
                                }
                                
                            else(Pgdata_confirmation2=='n'||'N');
                                {
                                    while(Pgdata_confirmation2=='n'||'N')
                                           {
                                                    system("cls");
                                                    printf("Digite o primeiro termo da sua P.G.: ");
                                                     scanf("%d", &a1pg);
                                                      system("cls");
                                                       printf("Digite a razao da sua P.G.: ");
                                                    scanf("%d", &rpg);
                                                       system("cls");
                                                      printf("Digite o total de termos da sua P.G.: ");
                                                      scanf("%d", &npg);
                                                       printf("a1 = %d\n r = %d\n n = %d", a1pg, rpg, npg);
                                                      printf("Estes sao seus dados? (Y/N)");
                                                    scanf("%c", &Pgdata_confirmation2);
                                           }
                                }
                            
                            
                    
                        }
                    
                }
       }
       
       system("pause");
       return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca

Citação

fflush(stdin);

antes dos scanf de %c para limpar o buffer do teclado. Se não limpa o scanf %c pega lixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp Eu nunca entendi o fflush direito, tem gente que coloca antes do scanf, tem gente que coloca depois. Eu apenas coloco antes e depois por não entender como funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você leu o que eu coloquei? A função fflush foi criada para trabalhar com o buffer de saída(stdout) e não com o de entrada(stdin). O fato de que funcione com stdin é pura sorte, os próprios criadores desta função ja advertiram que ela tem um funcionamento imprevisível tratando-se de limpar strings e pior ainda se é com o buffer de entrada, por esse motivo você não deve usar nunca essa função para limpar o buffer.

 

Desgraçadamente só existe um modo de limpar o buffer... e é lendo char a char desde ele, isso é o que se explica nessa pagina que deixei para você ler.

 

Não se confunda, as vezes encontramos coisas como estas em livros de certo 'prestigio' porém as razões estão já expostas, cabe a você investigar nesse link que deixei anteriormente para poder ver alternativas. Da mesma forma que alguém te ensinou errado você está passando essa informação para outros, isso gera uma espiral interminável dessa informação distorcida, depende de você realmente querer aprender a coisa de forma correta, e eu até acho que é uma obrigação para todo aquele que deseja trabalhar de programador... ou bem você pode continuar a fazer a coisa de forma errada, produto de desconhecimento alheio, eu somente lhe brindo a forma de fazer corretamente igual que me explicaram a mim quando errei da mesma forma.

 

Sorte

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

×