Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Erro no final do programa


Gabriel XD

Pergunta

Olá, pessoal! Bom, meu código C++ é compilado no Turbo C++ e uso Windows XP. Fiz um programinha que sorteia uma nota musical, toca-a e depois pede para o usuário escrever qual nota foi tocada. O problema é que no final aparece uma mensagem de erro do Windows (já vi em outros programas meus também).

Esse é o código (ainda em aperfeiçoamento):

#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<dos.h>
#include<math.h>
#define r 1.0594631
#define C3 int(523.264)
#define C3s int(C3*pow(r,1))
#define D3 int(C3*pow(r,2))
#define E3b int(C3*pow(r,3))
#define E3 int(C3*pow(r,4))
#define F3 int(C3*pow(r,5))
#define F3s int(C3*pow(r,6))
#define G3 int(C3*pow(r,7))
#define G3s int(C3*pow(r,8))
#define A3 int(C3*pow(r,9))
#define B3b int(C3*pow(r,10))
#define B3 int(C3*pow(r,11))

void main()
{
    clrscr();

    int cont=0,resposta=-1,nota[]={C3,C3s,D3,E3b,E3,F3,F3s,G3,G3s,A3,B3b,B3};
    char *texto;

    cout<<"Pressione qualquer tecla para ouvir uma nota.";

    while(!kbhit())
    {
        if(cont==11) cont=0;
        else cont++;
    }

    getch();

    clrscr();

    sound(nota[cont]);
    delay(1000);
    nosound();

    cout<<"Que nota foi essa?\n\n";
    cin>>texto;

    if(strcmpi(texto,"C")==0)  resposta=0;
    if(strcmpi(texto,"C#")==0) resposta=1;
    if(strcmpi(texto,"D")==0)  resposta=2;
    if(strcmpi(texto,"Eb")==0) resposta=3;
    if(strcmpi(texto,"E")==0)  resposta=4;
    if(strcmpi(texto,"F")==0)  resposta=5;
    if(strcmpi(texto,"F#")==0) resposta=6;
    if(strcmpi(texto,"G")==0)  resposta=7;
    if(strcmpi(texto,"G#")==0) resposta=8;
    if(strcmpi(texto,"A")==0)  resposta=9;
    if(strcmpi(texto,"Bb")==0) resposta=10;
    if(strcmpi(texto,"B")==0)  resposta=11;

    if(resposta==cont)
    cout<<"\nVocˆ acertou!";
    else
    cout<<"\nVocˆ errou!";

    getch();
}

E essa é a mensagem de erro:

erroturboc.jpg

Como resolver isso?

P.S.: Estou usando demais a CPU nesse meu processo de sorteio?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Realmente, fazendo desse seu jeito não deu mais problema. Porém, eu ainda não sei muito bem o que siginificam new e delete (cursei 2 semestres de Ciência da Computação na faculdade). Mas eu também usei

char texto[DIM];

e funcionou do mesmo jeito. Poderia me dizer qual a diferença entre esse e o seu código?

Grato pela atenção.

Editado por Gabriel XD
Link para o comentário
Compartilhar em outros sites

  • 0

Desse último jeito funciona também, acho que é até mais simples.

O comando new aloca memória para um ponteiro, assim char *texto = new char[DIM] aloca DIM posições de memória do tipo char e passa o endereço dessa alocação para o ponteiro texto. Ponteiro é um recurso muito poderoso que vale a pena você dar uma estudada a fundo. O comando delete libera a alocação de memória apontada pelo ponteiro.

char texto[DIM] cria um vetor texto do tipo char com DIM posições.

Que bom que deu certo. Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...