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

Problema em Cálculos


Jader Everton Datorre

Pergunta

Bom dia amigos, meu problema certamente é um dos desafios que iniciantes em C enfrentam, mas ele já me fez esquentar a cabeça e não encontrei nada de conclusivo na internet para entendê-lo e principalmente resolvê-lo, espero que alguém possa me ajudar...

 

Fiz um programa simples para exemplificar meu problema, segue o código:

 

#include<stdio.h>
#include<locale.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>

int main(void) {
    
    int n1 = 0;
    int n2 = 0;
    float n3 = 0.0;
    
    printf("\nValor de 1: ");
    scanf("%d", &n1);
    printf("\nValor de 2: ");
    scanf("%d", &n2);
    printf("\nValor de 3: ");
    scanf("%f", &n3);

    printf("\n\nResultado 1: %.6f", n3 / n1);    
    printf("\n\nResultado 2: %.6f", n2 / n3);
    printf("\n\nResultado 3: %.6f\n\n", n1 / n3);
    system("pause");
}

 

Bem, meu problema é o seguinte se insiro o valor "0" nas 3 variáveis o resultado da divisão que recebo é:

 

1 = -1.#IND00

2 = -1.#IND00

3 = -1.#IND00

 

Bem, esperava receber o resultado "0" simplesmente, pq isso não ocorre???

 

Obrigado.

Editado por Jader Everton Datorre
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

em C/C++ qualquer numero que dividir por zero vai causar um crash do seu programa. Prove abrir a calculadora do windows e faça a mesma coisa. Vc vai ver algo como isso:

fc28192295b1465590a2dad4a1d816e0.png

Somente chuck norris pode dividir por zero >_<
92542962d0be586b1e3faf9303fd0c14e9e9bc40

O resto dos mortais devemos fazer algo como:

#include<stdio.h>

int main(void) {
    
    int n1 = 0;
    int n2 = 0;
    float n3 = 0.0;
    
    printf("\nValor de 1: ");
    scanf("%d", &n1);
    printf("\nValor de 2: ");
    scanf("%d", &n2);
    printf("\nValor de 3: ");
    scanf("%f", &n3);

    if ( n1<1 ){
        printf("\n\nResultado 1: indefinido");    
    }else{
        printf("\n\nResultado 1: %.6f", n3 / n1);    
    }

    if ( n1<1 ){
        printf("\n\nResultado 2: indefinido");  
    }else{
        printf("\n\nResultado 2: %.6f", n2 / n3);
    }

    if ( n1<1 ){
        printf("\n\nResultado 3: indefinido");  
    }else{
        printf("\n\nResultado 3: %.6f\n\n", n1 / n3);
    }
    getchar();
    return 0;

}

 

Link para o comentário
Compartilhar em outros sites

  • 0


Para não lhe deixar sem alguma explicação leia aqui: https://motherboard.vice.com/pt_br/article/por-que-nao-podemos-dividir-por-zero

Nesse video vc tem uma boa resposta...
Ao dividir qualquer numero por zero vc obtém infinito, o que quer dizer que supera e muito a capacidade de armazenamento de qualquer variável, isso causa crash no sistema, o sistema não seria capaz de alojar isso na memoria, provavelmente isso causaria que o sistema trabalhasse infinitamente tentando resolver o problema, porem  certamente o computador tenha algum sistema de proteção para quando detectar esse problema simplesmente de um aviso e não realize a operação, se não que de um aviso em vez falho igual fizemos com nosso programa.


Será por essa razão que existe tantos memes? https://www.google.es/search?newwindow=1&client=firefox-b&biw=1366&bih=631&tbm=isch&sa=1&q=jesus+can+divide+by+zero+meme&oq=jesus+can+divide+by+zero+meme&gs_l=img.3...7645.14768.0.14943.24.24.0.0.0.0.305.2884.0j17j1j1.19.0....0...1c.1.64.img..6.7.1293...0j0i19k1j0i7i30i19k1j0i7i30k1j0i7i5i30k1j0i8i30k1j0i8i7i30k1.WsvtFBIDRS8

https://www.google.es/search?newwindow=1&client=firefox-b&biw=1366&bih=631&tbm=isch&sa=1&q=dividir+por+zero&oq=dividir+por+zero&gs_l=img.3..0i30k1.1752636.2317068.1.2317234.19.16.0.3.3.0.171.1516.0j12.12.0....0...1c.1.64.img..4.15.1514.0..0j0i67k1.1RsYA4RSajA#imgrc=_

 

Como eu sou ruim de matemáticas, melhor aceito que divisão por zero == "vai dar merda no meu programa" e simplesmente não faço nunca!
Fui! >_<

Editado por vangodp
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,3k
×
×
  • Criar Novo...