Jump to content
Fórum Script Brasil
  • 0

Função


Ceemer
 Share

Question

Olá estou com um problema, primeiro programa que faço utilizando funções, e neste preciso fazer uma função para verificar se um numero é primo, fiz o código base do programa e creio que a lógica esteja certa porém, ele não está rodando, se alguém puder me dar uma dicas. obrigado.

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

primo()

for (i=1; i<=num; i++)
{
  resto=num%i;
if (resto==0)
{
cont=cont+1;
}
else if (resto!=0)
{
cont=cont;
}
}
}
}
int main()
{
int  num, resto, cont, i;

primo();
if (cont==2)
printf "PRIMO"
else if (cont!=2)
prinf "N PRIMO"
}

system("pause");
}

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Nem li muito. É realmente difícil, além de muito chato, ter que ler código sem indentação. Mas numa leitura (bem) rápida, consegui perceber a falta de vários ponto-e-vírgulas. Provavelmente seu compilador reclamou disse. Siga o que ele diz. :)

Link to comment
Share on other sites

  • 0

Outra coisa: o printf é uma função como outra qualquer, deve ter os parênteses entre os parâmetros.

Por exemplo:

printf("PRIMO");

E as funções devem iniciar com { e terminar com } . Isso é o que as delimita, indicando onde começa e onde termina. No caso da função primo não existe a abertura mas em compensação compensou em fechamento! :blink:

Arrume essas coisas, compile novamente e veja o que deu errado. Qualquer coisa poste o retorno do compilador no fórum!

Link to comment
Share on other sites

  • 0

Desculpa ai gente, porém dei uma ajeitada, e o erro que procede é o seguinte.

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

primo()
for (i=1; i<=num; i++)
{
    resto=num%i;
    if (resto==0)
   {
    cont=cont+1;
   }
     else if (resto!=0)
     {
       cont=cont;
     }
}     

int main()
{
int  num, resto, cont, i;

primo();
if (cont==2)
printf ("PRIMO");
else if (cont!=2)
printf ("N PRIMO");
}

system("pause");
}

5 C:\Documents and Settings\Gabriel\Meus documentos\testee.cpp expected constructor, destructor, or type conversion before "for"

5 C:\Documents and Settings\Gabriel\Meus documentos\testee.cpp expected `,' or `;' before "for"

Link to comment
Share on other sites

  • 0

Está faltando ponto-e-vírgula na linha 5.

Note: se o compilador diz que tem algo errado na linha X, pode crer: há um erro, se não nessa linha X, um pouco antes dela. Então revise o código dessa linha pra trás.

Edited by Maligno
Link to comment
Share on other sites

  • 0

Refiz a função pra você:

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

int primo(int num)
{
    int resto, cont = 0;
    for (int i=1; i<=num; i++)
    {
        resto = num % i;
        if (resto == 0)
            cont += 1;
    }  
    return cont;
}

int main()
{
    int num;
    printf("Digite o numero a ser verificado:\n");
    scanf_s("%d", &num);
    if (primo(num) == 2)
        printf ("PRIMO\n");
    else
        printf ("N PRIMO\n");

    system("pause");
}
Você cometeu alguns erros bobos. A função "primo" tem que ser de algum tipo (no caso int), quando não for void, ela deve retornar um valor (no caso "cont"). As variáveis que só uma função usará, devem ser declaradas dentro dela (resto e cont) e não na main, pois o que estiver fora da main, não as identificará. Atribua um parâmetro a função primo para que ela trabalhe com este parâmetro (num, número a ser verificado). As funções devem começar por { e terminar por }, você apenas as terminou Oo
else if (resto!=0)
     {
       cont=cont;
     }
Isso é totalmente desnecessário, ele só entrará no if caso o resto seja 0, então bastava colocar else (if resto!=0 está implícito, caso contrário ele acessaria o if resto = 0). O conteúdo também é totalmente desnecessário, não há necessidade de atribuir a uma variável ela mesma, ela não se modifica "do nada".
else if (cont!=2)
printf ("N PRIMO");

A mesma coisa do anterior, o if está implícito, basta colocar o else.

Quanto ao for, você deve declarar a variável no primeiro parâmetro: int i = 1; não i = 1; sei que você o declarou na main, mas como eu disse, o valor só será reconhecido pela função caso ele seja enviado como parâmetro (ou caso seja global, declarado antes de todas as funções, mas seria desnecessário uma vez que o i é apenas usado pelo for())

Você também deve estipular o valor a ser calculado (num) na main, ele não vai ler do nada ou sortear um valor qualquer. Defina-o previamente ou de qualquer outro modo (coloquei para ser digitado como um exemplo para te auxiliar).

Sobre o if da main, ele deve conter a função, e não a função fora do escopo (a não ser que você atribua a uma variável, por exemplo: int retorno = primo(num); e depois use o retorno no if). Com if(primo(num)) ele executa a função if usando o parâmetro num e retorna um número, que se for 2 entra no controlador if(primo(num) == 2) ou se não for vai para o else.

Acho que é só isso ^^

Sugiro que você busque alguma apostila para entender melhor a sintaxe da linguagem.

Victor.

Edited by KaL
Link to comment
Share on other sites

  • 0

Não vou ficar criando função pra ti hein...você que tem que procurar aprender, leia algumas apostilas pra começar!

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

int primo(int num)
{
    int resto, cont = 0;
    for (int i=1; i<=num; i++)
    {
        resto = num % i;
        if (resto == 0)
            cont += 1;
    }  
    return cont;
}

int main()
{
    int num = 0;
    int buscaNum = 0;
    printf("Digite quantos numeros primos a buscar:\n");
    scanf_s("%d", &num);
    for(int i=0; i < num; i++)
    {
        buscaNum++;
        while(primo(buscaNum) != 2)
            buscaNum++;
        
        printf("%d ", buscaNum);
    }
    system("pause");
}

Fica por tua conta a interpretação agora...

Edited by KaL
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...