Jump to content
Fórum Script Brasil
  • 0

Erro 0xC0000005 - SOCORRO!


Question

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 to post
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644509
×
×
  • Create New...