Ir ao conteúdo
  • Cadastre-se

Texto de script c++ simplesmente ignorado pelo cmd


Ir à solução Resolvido por MassakiMsk,

Posts recomendados

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;
}

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...