Jump to content
Tiago Araujo

Dúvida de função em C

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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;
}

 

Share this post


Link to post
Share on other sites
Tiago Araujo

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

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

Share this post


Link to post
Share on other 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.

Edited by pwseo
Correcções menores
  • Vote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.