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

Erro 0xC0000005 - SOCORRO!


Vitor10080

Pergunta

Então, eu estava fazendo essa simples questão de vetores:

 

"14. Ler um vetor C de 10 nomes de pessoas, após pedir que o usuário digite um nome
qualquer de pessoa. Escrever a mensagem ACHEI e mostre o nome, se o nome estiver
armazenado no vetor C ou NÃO ACHEI caso contrário."

 

Eu consegui fazer a questão solicitada, mas quando coloquei pra rodar, o programa parou de funcionar e o processo retornado foi 0xC0000005, que, pesquisando em alguns sites, tem haver com algo relacionado a "acessar memória não permitida" ou coisa do tipo.

Mesmo sabendo do que esse erro se trata, eu NÃO consigo encontrar o defeito no meu programa, e eu já verifiquei o gabarito em outros sites, e o código está SEMELHANTE ao meu!!!!

Ajudem, por favor!!!!!!

CÓDIGO ABAIXO:

 

#include <iostream>

using namespace std;

int main () {
    string Nome, C[10];
    bool Esta;
    cout << "Insira um nome de pessoa qualquer: ";
    cin >> Nome;
    
    for (int i = 1; i <= 10; i++) {
        cout << "Insira o nome da pessoa " << i << " : ";
        cin >> C;
    }
    
    for (int j = 1; j <= 10; j++) {
        if (C[j] == Nome) {
            Esta = true;
            break;
        } else {
            if (j == 10) {
                Esta = false;    
            } else {
                continue;    
            }
        }
    }
    
    if (Esta == true) {
        cout << "ACHEI o nome " << Nome << " no grupo de pessoas registrado.";    
    } else {
        cout << "NÃO ACHEI o nome " << Nome << " no grupo de pessoas registrado.";    
    }
}

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 1

o pior de todos os erros é esse i <= 10. Se você tem 10 posições você conta desde 0 até 10-1, ou seja 9. O correto é i < 10, você ta estourando os índices tentando ler e escrever além do que você reservou.

Link para o comentário
Compartilhar em outros sites

  • 0
Em 26/06/2019 em 21:42, Vitor10080 disse:

Então, eu estava fazendo essa simples questão de vetores:

 

"14. Ler um vetor C de 10 nomes de pessoas, após pedir que o usuário digite um nome
qualquer de pessoa. Escrever a mensagem ACHEI e mostre o nome, se o nome estiver
armazenado no vetor C ou NÃO ACHEI caso contrário."

 

Eu consegui fazer a questão solicitada, mas quando coloquei pra rodar, o programa parou de funcionar e o processo retornado foi 0xC0000005, que, pesquisando em alguns sites, tem haver com algo relacionado a "acessar memória não permitida" ou coisa do tipo.

Mesmo sabendo do que esse erro se trata, eu NÃO consigo encontrar o defeito no meu programa, e eu já verifiquei o gabarito em outros sites, e o código está SEMELHANTE ao meu!!!!

Ajudem, por favor!!!!!!

CÓDIGO ABAIXO:

 

#include <iostream>

using namespace std;

int main () {
    string Nome, C[10];
    bool Esta;
    cout << "Insira um nome de pessoa qualquer: ";
    cin >> Nome;
    
    for (int i = 1; i <= 10; i++) {
        cout << "Insira o nome da pessoa " << i << " : ";
        cin >> C;
    }
    
    for (int j = 1; j <= 10; j++) {
        if (C[j] == Nome) {
            Esta = true;
            break;
        } else {
            if (j == 10) {
                Esta = false;    
            } else {
                continue;    
            }
        }
    }
    
    if (Esta == true) {
        cout << "ACHEI o nome " << Nome << " no grupo de pessoas registrado.";    
    } else {
        cout << "NÃO ACHEI o nome " << Nome << " no grupo de pessoas registrado.";    
    }
}

 

faltou o "return 0;" no final. Pois a funcão main está pedindo um valor inteiro como retorno.

Link para o comentário
Compartilhar em outros sites

  • 0
10 horas atrás, vangodp disse:

o pior de todos os erros é esse i <= 10. Se você tem 10 posições você conta desde 0 até 10-1, ou seja 9. O correto é i < 10, você ta estourando os índices tentando ler e escrever além do que você reservou.

Mano, muito obrigado. Eu já estava ficando preocupado demais com os detalhes que eu nem percebi esse erro. É que geralmente quando eu leio um vetor eu faço de 1 até N. Eu até já ouvi falar do intervalo 0-(N-1), mas não dei muita bola... Agora você abriu meus olhos um pouco mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Sempre tenha claro em qual linguagem você está. Dependendo da linguagem você vai ter que traduzir de 1 até 10 em 0 até 9. Porque em algumas linguagens começa a contar de zero. Parece uma coisa banal mas não é... os índices em C/C++ lembre que você está trabalhando diretamente com a memória ram, qualquer erro é fatal.😉

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,5k
×
×
  • Criar Novo...