Ir para conteúdo
Fórum Script Brasil
  • 0

Função


Ceemer

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

Editado por Maligno
Link para o comentário
Compartilhar em outros 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.

Editado por KaL
Link para o comentário
Compartilhar em outros 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...

Editado por KaL
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...