Ir ao conteúdo

Comando return true/false


jpsan

Posts recomendados

Postado

Gostaria de saber como funciona o comando return de uma função.

Por exemplo eu executo uma função como por exemplo ver se um numero é primo. Se o numero for primo a função retorna true?? É isso. Caso negativo return false??

Seguindo o programa na função main() eu poderia colocar isso?


if (EhPrimo()==true)
{
cout<<"O numero é primo"
}
else
{
cout<<"O numero n é primo"
}

É essa ideia mesmo??

Outra coisa se isso estiver certo mesmo, eu poderia tambem ao invés de mandar um return usar somente o valor da variavel? Sem usar o return?

Valeu por quem ajudar

Postado

o comando return, serve para true/false ou caso o usuario queira retornar uma variavel é possivel sim;

em casos de função dentro de switch, o comando return para retornar um valor é um bom exemplo.

Ex.:



int SuaFuncao()
{
codigos e codigos
no fim a variavel termina em 5;
return variavel;
}


main ()
{
switch(SuaFuncao())
{
case 1
case 2
case 3
case 4
case 5
}

neste exemplo ao retornar o 5, no switch iria para o case 5

pois a funcção retornou o valor 5.

no caso so seu exemplo se uma função é bool(boolean) se dentro dela a condição de ser verdadeiro retorne um true, no if nem seria necessario o '==true'


bool EhPrimo()
{
if(bla bla bla)
{
return true;
}

else
{
... false
}

quando chamado o if(EhPrimo())

se for verdadeiro esse if ja iria pro comando de verdadeiro nao necessitando o uso do == true;

Postado

faltou uma coisa, você vai ter que passar um numero na função, eu fiz a seguinte

bool EhPrimo(int numero)
{
for (int i = 2; i < numero; i++)
{
if ((numero % i) == 0)
return false;
}

return true;
}

Postado

Ok, vamos ver se eu entendi:

Se eu utilizar valores boleanos, quando eu usar o if na função main eu teria que colocar somente

if(MinhaFuncao())

{

...

}.

Mas como o programa vai saber se eu quero a condição quando for false ou true?

Por exemplo a funcao pode returnar true mas e se eu quiser que ela só execute a condição quando for false??

Valeu

Postado

não tem necessidade de colocar o ==true, é mesma coisa que comparar 1==1, se tu quiser, compare com true, mas é muito mais elegante usar

if (EhPrimo(10))

ou

if (!EhPrimo(10)) //  !  significa Não

Postado

if (!EhPrimo(10)) // ! significa Não

Desculpe não entendi o 10.

Segue o codigo caso queriam dar uma olhada:


#include <iostream>
# include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
unsigned long long int numG = 600851475143;
int c = 0;
int aux;
int j;

int EhPrimo (){
int num, nao_primo=0, divisoes=0, i;

if ((j == 1) || (j % 2 == 0) && (j != 2))
nao_primo = 1;
else
for(i = 1; (i <= j) && (divisoes <= 2); i += 2){
if (j % i == 0)
divisoes++;
}
if ((nao_primo == 0) && (divisoes <= 2)){
return true; //informa q o numero é primo
}
else if ((j ==1) || (j==2))
{
return true; //o numero é primo
}
else
{
return false; //o numero n é primo
}
}







int main ()
{

aux = numG;
for (j=0; j<=numG; j++)
{
if ( j%aux==0)
{
aux/j;
if (EhPrimo() ==true)
{
cout <<"O numero " << j <<"é primo" <<endl;
}

}

}
}

Está cheio de erros então não reparem.

O objetivo seria achar o maior fator primo de um numero no caso a variavel numG

Postado

relembrando no seu if não precisa do == true.

pois ja esta retornando. então basta apenas o if(EhPrimo())

pois o if ja considera isso como true.

e voce podia fazer, diferente, le um numero e retorna se o mesmo é primo ou não.

e modifiquei sua função

fica assim



void Testa_Primo( int valor)
{
int div=0;
for (i = 1; i <= valor; i++) {
if (valor % i == 0) {
div++;
}
}

if (div == 2)
printf("O número %d é primo!", valor);
else
printf("O número %d não é primo!", valor);
}.

e no main coloque assim



printf("Informe um numero: ");
scanf("%d",&numero);

Testa_Primo(numero);

Postado

Ah agora eu entendi. :D

Adorei essa de colocar o numero dentro da função.

Testa_Primo(numero);

Mas ainda me surge uma dúvida: (Prometo que a ultima :D)

Este código que você me mandou ele testa o valor na função mas não retorna um valor e eu precisa-va que ela retorna-se um valor para poder usar isso depois no código.

Por exemplo não só se dizer que é primo mas fazer algo com o numero que é primo entende?

Ai eu tentei isso:


//PROGRAMA PARA VERIFICAR SE UM NÚMERO É PRIMO
#include <stdio.h>
#include <stdlib.h>

int Testa_Primo( int valor)
{
int div=0;
for (int i = 1; i <= valor; i++) {
if (valor % i == 0) {
div++;
}
}

if (div == 2){
printf("O numero %d é primo!", valor);
return 1;
}
else
{
printf("O numero %d nao é primo!", valor);
return 0;
}
}

int main(){
int numero;
printf("Informe um numero: ");
scanf("%d",&numero);

Testa_Primo(numero);
if (Testa_Primo (1))
{
printf (":D\n");
}
else
printf(":(\n");
system("pause");
}

Funcionou em partes mas quando o código a hora que ele diz se é primo ou não a frase aparece 2 vezes.

Postado

bool EhPrimo(int numero)
{
for (int i = 2; i < numero; i++)
{
if ((numero % i) == 0)
return false;
}

return true;
}

int main()
{
printf("Numeros primos:\n");
for (int i = 1; i < 100; i++)
{
if (EhPrimo(i))
{
printf("%d\t", i);
}
}
printf("\n\n");

system("PAUSE");
return 0;
}

  • 2 semanas depois...
Postado

Entendi agora certin :D:D

Obrigados a todos que me ajudaram e em especial ao Sylerr que foi muito claro nas explicações

Abrss a todos.

Moderador pode fechar o topico

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...