Ir ao conteúdo
  • Cadastre-se

Erro no meu código C++ AJUDA


Higor Senna
Ir à solução Resolvido por Dyego Borba,

Posts recomendados

Boa tarde galera, esses dias foi passado um exercício para checar se um numero digitado é primo ou não, então fiz meu código em C++ e nao funciona, parece que o meu "for" nao está percorrendo corretamente, segue abaixo meu código:(Todo numero que eu digito diz que é primo). alguém sabe onde está o erro? Obrigado.

 

int nprimo = 0;
    int div = 0;
    int resultado;
    int x;
 
    cout << "Digite um numero inteiro maior que 0: " << endl;
    cin >> x;
 
    div = (x-1);
 
       for (int div; div >1; div--){
 
            resultado = (x % div);
 
            if (resultado == 0){
                nprimo = 1;
            }
        }
 
        if(nprimo == 1){
            cout << "O numero " << x << " nao e primo" << endl;
        }
        else{
            cout <<"O numero e primo";
 
        }
Link para o comentário
Compartilhar em outros sites

  • Solução

Boa Tarde,

 

Cara, tentei replicar a tua função aqui; http://cpp.sh/ e me ocorreu falta de diversas funções, que acredito que no programa que tu utiliza, não são necessárias mas vi que a tua operação dentro do 'for' estava errada, tanto que nem entendi o teu código (parece código para ver se o número é par ou não.  :huh: ), onde eu fiz o código "do zero" utilizando as mesmas funções que tu precisa: cout, cin, if, else, etc. Como a tua função dentro do 'for' estava errada, sempre o teu resultado saía com o valor 1, por estar decrementando o valor dentro dele. To colocando abaixo o código que tenho para ver se o número é primo ou não, se te ajudar, que bom, se não é só ignorar :D

 

#include <iostream>
using namespace std;
 
int main()
{
  int nprimo = 0;
    int resultado;
    int x;
 
    cout << "Digite um numero inteiro maior que 0: " << endl;
    cin >> x;
    
    int nao_primo=0, divisoes=0, i;    
 
    if ((x == 1) || (x % 2 == 0) && (x != 2))
        nao_primo = 1;
    else                    
        for(i = 1; (i <= x) && (divisoes <= 2); i += 2){
           if (x % i == 0)
              divisoes++;
        }      
    if ((nao_primo == 0) && (divisoes <= 2)){
        cout <<"O numero e primo";
    }
     else{
        cout << "O numero " << x << " nao e primo" << endl;
     }
    }

Só uma observação, se tu tirar a função do 'for' do código que passei, funciona igual, coloquei ali só para que seja realizada a operação.

Link para o comentário
Compartilhar em outros sites

Boa Tarde,

 

Cara, tentei replicar a tua função aqui; http://cpp.sh/ e me ocorreu falta de diversas funções, que acredito que no programa que tu utiliza, não são necessárias mas vi que a tua operação dentro do 'for' estava errada, tanto que nem entendi o teu código (parece código para ver se o número é par ou não.  :huh: ), onde eu fiz o código "do zero" utilizando as mesmas funções que tu precisa: cout, cin, if, else, etc. Como a tua função dentro do 'for' estava errada, sempre o teu resultado saía com o valor 1, por estar decrementando o valor dentro dele. To colocando abaixo o código que tenho para ver se o número é primo ou não, se te ajudar, que bom, se não é só ignorar :D

 

#include <iostream>
using namespace std;
 
int main()
{
  int nprimo = 0;
    int resultado;
    int x;
 
    cout << "Digite um numero inteiro maior que 0: " << endl;
    cin >> x;
    
    int nao_primo=0, divisoes=0, i;    
 
    if ((x == 1) || (x % 2 == 0) && (x != 2))
        nao_primo = 1;
    else                    
        for(i = 1; (i <= x) && (divisoes <= 2); i += 2){
           if (x % i == 0)
              divisoes++;
        }      
    if ((nao_primo == 0) && (divisoes <= 2)){
        cout <<"O numero e primo";
    }
     else{
        cout << "O numero " << x << " nao e primo" << endl;
     }
    }

Só uma observação, se tu tirar a função do 'for' do código que passei, funciona igual, coloquei ali só para que seja realizada a operação.

Dyego o código era para checar se o numero digitado era primo ou nao, mas eu resolvi o erro aqui, pois a variavel div nao estava sendo inicializada dentro do for, então resolvi usando for(div = x-1, div > 1, div --), OBRIGADO PELA PREOCUPAÇÃO E PELA ATENÇÃO, abraço.

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...