Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Tiago Araujo

Dúvida de função em C

Mensagens Recomendadas

Tiago Araujo

Boa tarde

Numa questão de exame é pedido o seguinte:

"Escreva uma função em C capaz de determinar o número de ocorrências de valores negativos numa
sequência de valores inserida pelo utilizador aquando da sua execução e terminada por 0 (zero)."

Eu escrevi um código que resulta, mas sem ser com a função... 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float num;
    int negativos=0;
    
    
    
    do
    {
        printf ("Inserir num :");
        scanf("%f", &num);
        
        if (num<0)
        {
            negativos=negativos++;
        }
    }
    while(num!=0);
    
    printf("o n. de ocorrencias de num negativos e = %d", negativos);

    
    
    return 0;
}

Alguém me pode dar uma sugestão?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

O teu código já está escrito numa função; chama-se main. Talvez pretendas colocá-lo noutra função, é isso? Ficamos a aguardar detalhes.

PS.: tens alguns detalhes que deviam ser corrigidos, mas não é essa a questão colocada.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tiago Araujo
23 horas atrás, pwseo disse:

O teu código já está escrito numa função; chama-se main. Talvez pretendas colocá-lo noutra função, é isso? Ficamos a aguardar detalhes.

PS.: tens alguns detalhes que deviam ser corrigidos, mas não é essa a questão colocada.

Olá

Sim eu queria colocar numa outra função...

Eu evoluí para isto.... 

#include <stdio.h>
#include <stdlib.h>

int quantNegativos (float valor, int negativos) // funcao
{
    if (valor < 0)
    {
        negativos ++;
    }
    return negativos;
}

int main()
{
    float num;
    int neg=0;

    do
    {
        printf ("Inserir num :");
        scanf("%f", &num);

        neg = quantNegativos(num, neg);    // chamada da funcao
    }
    while(num != 0);

    printf("O n. de ocorrencias de num negativos e = %d", neg);

    return 0;
}

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tiago Araujo

Julgo que agora está bem, dá-me o resultado esperado.

Se achas que responde à questão colocada...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Muito bem, vamos por partes. Antes de mais, como deves imaginar, nem sempre obter o resultado correcto significa que o que fizemos está bem feito. Estes são os resultados pretendidos:

Em 22/01/2019 às 13:26, Tiago Araujo disse:

"Escreva uma função em C capaz de determinar o número de ocorrências de valores negativos numa sequência de valores inserida pelo utilizador aquando da sua execução e terminada por 0 (zero)."

Ou seja, a tua função precisa de fazer 3 coisas:

  1. aceitar uma sequência de valores do utilizador
  2. determinar quantos desses valores são negativos
  3. parar quando for introduzido o zero

O teu código actualmente é este (omiti a main propositadamente):

int quantNegativos (float valor, int negativos) // funcao
{
    if (valor < 0)
    {
        negativos ++;
    }
    return negativos;
}

Ora... essa função isoladamente é incapaz de aceitar um sequência de valores, o que significa que não consegue determinar quantos deles são negativos. Repara no código: se valor for > 0, então aumentar negativos e devolver esse valor. Ainda por cima, negativos é um parâmetro da função, o que significa que o valor é determinado por factores externos. Esta tua função está a ser aplicada a cada valor introduzido pelo utilizador... quando a própria função deveria ela mesma aceitar input do utilizador.

Vamos tentar refazer:

#include <stdio.h>

int negativos(void)
{
    // Para completares:
    // 1. Obter sequencia de valores
    // 2. Contar quantos foram negativos
    // 3. Devolver a contagem
}

int main(void)
{    
    printf("Introduza números (0 para terminar)\n");
    int neg = negativos();
    printf("Foram introduzidos %d números negativos.\n", neg);
}

Proponho que completes a definição de negativos. Logicamente, se é uma função que conta números negativos, deverá devolver como resultado esse valor (daí ter um tipo de dados int). Como não há factores externos que devam influenciar a função, esta não deve ter argumentos (indicado pelo void).

Vai colocando as tuas dúvidas.

Editado por pwseo
Correcções menores
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.