(4) Faça uma função que retorna a razão entre dois números inteiros. A função deve retornar pelo comando return o valor 1 se a operação foi possível e o valor 0 se a operação não foi possível (divisão por zero, por exemplo). O resultado da divisão deve ser retornado por um parâmetro por referência. Na função main, os valores de entrada devem ser lidos. Se o retorno da função chamada for 1 , imprimir o valor da razão. Se o retorno for 0, imprimir ERRO.

Exemplo de entrada:

Digite um número inteiro: 11
Digite um número inteiro: 2

Exemplo de saída:

Razão: 5

Passo 1

Beleza, o que a gente tem aqui é um exercício de programação em C. A ideia é criar uma função que receba dois inteiros e devolva a “razão” (divisão inteira) desses números. Se o divisor for zero, a função deve avisar que deu erro (retornando 0); se der certo, retorna 1 e “devolve” o resultado da divisão por um parâmetro por referência (usando ponteiro). Na main, a gente lê os dois números, chama a função e, conforme o valor de retorno, imprime o resultado ou “ERRO”.
Conteúdo: funções em C, passagem por referência com ponteiros, tratamento de erro (divisão por zero), leitura com scanf e impressão com printf.

Passo 2

Primeiro precisamos entender passagem por referência em C. Em C não existe “referência” como em C++, mas a gente usa ponteiro. Se quisermos que uma função altere o valor de uma variável que está na main, a gente passa o endereço dela. Por exemplo, para devolver um int, a função recebe um int *res. Dentro da função, escrevemos *res = valor; para alterar a variável da main.

Passo 3

Vamos definir a assinatura da função:
int razao(int a, int b, int *res);
Aqui:
  • a e b são os inteiros a dividir;
  • *res é onde a gente vai guardar o resultado se der certo;
  • o int de retorno é 1 (sucesso) ou 0 (erro, divisor zero).

Passo 4

Agora o corpo da função. Primeiro a gente verifica se b == 0. Se for, retornamos 0 (erro). Senão, calculamos a divisão inteira
ab
com a operação a / b e guardamos em *res. Depois retornamos 1.
int razao(int a, int b, int *res) {
    if (b == 0) {
        return 0;          // divisão por zero: erro
    }
    *res = a / b;          // operação de divisão inteira
    return 1;              // sucesso
}

Passo 5

Na função main, a gente faz:
  1. declara três inteiros: x, y e r;
  2. pede pro usuário digitar x e y com printf + scanf;
  3. chama razao(x, y, &r);
  4. se o retorno for 1, imprime Razão: r; se for 0, imprime ERRO.
#include <stdio.h>

int razao(int a, int b, int *res) {
    if (b == 0) {
        return 0;
    }
    *res = a / b;
    return 1;
}

int main() {
    int x, y, r;
    printf("Digite um número inteiro: ");
    scanf("%d", &x);
    printf("Digite um número inteiro: ");
    scanf("%d", &y);

    if (razao(x, y, &r)) {
        // retorno 1 → sucesso
        printf("Razão: %d\n", r);
    } else {
        // retorno 0 → erro (divisão por zero)
        printf("ERRO\n");
    }
    return 0;
}

Resposta

Código completo acima. A função razao retorna 1 ou 0 conforme o divisor seja diferente de zero e devolve o resultado da divisão inteira pelo ponteiro res. Na main, lemos os valores, chamamos a função e imprimimos “Razão: …” ou “ERRO” conforme o caso.

Exercícios relacionados