Ir ao conteúdo
  • Cadastre-se

Ajuda com código - C


Visitante
Ir à solução Resolvido por Ansi C,

Posts recomendados

NULO !!?

Nulo é muito subjetivo, primeiro temos que saber qual é a variável e dependendo disso se é nulo ou não vai depender exclusivamente da implementação. Por exemplo se considerarmos um string em C como segue abaixo é nulo:

   

#include <stdio.h>int main (void) {//>AS DUAS VARIAVEIS ABAIXO SÃO MATRIZES COM VALOR NULO (ZERO):    char meu_string[30]    = { 0 }; //>É NULO, POIS TEM APENAS ZEROS,    unsigned char character= -1;    //>TAMBÉM E NULO.    //>NESTE EXEMPLO AMBAS VARIÁVEIS SÃO NULAS, PARA MINHA IMPLEMENTAÇÃO     //QUE 0 E -1 SÃO NULOS.    return 0;    }

considerar -1 como sendo valor nulo, POIS não existe caractere com valor negativo, ou maior que 254.

:)

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Mas o que seria esse valor nulo então? Zero ou números negativos? O exercício é assim, crie uma função que receba um valor(numero) e diga se ele é nulo ou não, eu não sei que o seria esse nulo, se é valor negativo, se é zero...

Link para o comentário
Compartilhar em outros sites

  • Solução

Então @mi2011,
Não minha linha de pensamento: NULONULL pode ser tanto 0 quando -1.
Fica a critério do programador ou da implementação da linguagem, você na qualidade de programador pode definir esta e ou outra condição.
 
Por exemplo em C:

Um ponteiro de valor 0 é um ponteiro nulo;

Um literal de caractere '\0' é nulo, pois é 0 na tabela ASCII;

O Macro EOF (End of File) que representa do fim de um stream é -1.

 
Uma Situação:

1> Se escrevermos uma função que solicita através de parâmetro uma idade, podemos implementar essa função de maneira a retorna -1 caso o valor passado pelo parâmetro seja um valor negativo, alertando que não existe idade negativa.

Assim entendesse que uma idade negativa é uma valor nulo.

2> Temos uma função que exige por parâmetro números diferentes de 0, então se passamos o valor 0 ele não

afetará a operação desta função pois é nulo.

Supomos que a função do caso 2 seja: pegar esse valor e multiplicar por 1000,

Você concorda que 1000 + 0 é 1000 (NULO)?

Você concorda que 1000 *  1 é 1000(NULO)?

 
 
Resolução:
O problema faz menção a valor/ número; 
Para seu problema Zero é NULO já que zero não tem valor, aproposito zero é isso mesmo kkk.
EXEMPLO:

/** Converte Numerador e Denominador de uma fração em valor*   decimal do tipo Float */float To_Float(int as_numerado, int as_denominador);int main(){    float f_tmp;    setlocale(LC_ALL, "");    f_tmp = To_Float(1,3);    printf("Show variable: %f float.\n\n", f_tmp);    return 0;}float To_Float(int as_numerador, int as_denominador){//CONDIÇÃO PARA EXECUÇÃO DA FUNÇÃO:    //DENOMINADOR MAIOR E DIFERENTE DE 0, E NUMERADOR MAIOR QUE 0.    if(as_denominador <= 0 || as_numerador < 0) return 0;    return ((float)as_numerador / as_denominador);} 

 

Não sei se fui claro, qualquer coisa estamos aqui.

</byR3X>

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Então @mi2011,

Não minha linha de pensamento: NULONULL pode ser tanto 0 quando -1.

Fica a critério do programador ou da implementação da linguagem, você na qualidade de programador pode definir esta e ou outra condição.

 

Por exemplo em C:

Um ponteiro de valor 0 é um ponteiro nulo;

Um literal de caractere '\0' é nulo, pois é 0 na tabela ASCII;

O Macro EOF (End of File) que representa do fim de um stream é -1.

 

Uma Situação:

1> Se escrevermos uma função que solicita através de parâmetro uma idade, podemos implementar essa função de maneira a retorna -1 caso o valor passado pelo parâmetro seja um valor negativo, alertando que não existe idade negativa.

Assim entendesse que uma idade negativa é uma valor nulo.

2> Temos uma função que exige por parâmetro números diferentes de 0, então se passamos o valor 0 ele não

afetará a operação desta função pois é nulo.

Supomos que a função do caso 2 seja: pegar esse valor e multiplicar por 1000,

Você concorda que 1000 + 0 é 1000 (NULO)?

Você concorda que 1000 *  1 é 1000(NULO)?

 

 

Resolução:

O problema faz menção a valor/ número; 

Para seu problema Zero é NULO já que zero não tem valor, aproposito zero é isso mesmo kkk.

EXEMPLO:

/** Converte Numerador e Denominador de uma fração em valor*   decimal do tipo Float */float To_Float(int as_numerado, int as_denominador);int main(){    float f_tmp;    setlocale(LC_ALL, "");    f_tmp = To_Float(1,3);    printf("Show variable: %f float.\n\n", f_tmp);    return 0;}float To_Float(int as_numerador, int as_denominador){//CONDIÇÃO PARA EXECUÇÃO DA FUNÇÃO:    //DENOMINADOR MAIOR E DIFERENTE DE 0, E NUMERADOR MAIOR QUE 0.    if(as_denominador <= 0 || as_numerador < 0) return 0;    return ((float)as_numerador / as_denominador);} 

 

Não sei se fui claro, qualquer coisa estamos aqui.

</byR3X>

 

Muito obrigada! Questão resolvida! 

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