Ir ao conteúdo
  • Cadastre-se

Como faz uma função com dois retornos em c++


Visitante
Ir à solução Resolvido por dontpanic,

Posts recomendados

A minha dúvida é no exercício 6 dessa lista

 

https://dl.dropboxusercontent.com/u/4297019/Aulas/2014-02/Bcc702/04_pratica.pdf

 

N estou conseguindo fazer os dois retornos!! Da uma olhada no meu código:

#include <iostream>using namespace std;int sexo(int *a, int b ){    int maior=a[0];    int menor=a[0];    for (int i=1;i<b;i++){        if (a[i]>maior){            maior=a[i];        }        if (a[i]<menor){            menor=a[i];        }    }    return(maior,menor); //N sei se pode fazer isso!}int main(){    int vet[10];    for (int i=0;i<10;i++){        cout << "Digite o "<<i<<" valor do vetorzin ae:";        cin>>vet[i];    }    [maior,menor]=sexo(vet,i); //Aqui, eu quero q o maior elemento do vetor vai para a variavl maior e o menor elemento para variavel menor!    cout<<"\n\nO maior numero digitado foi: "<<maior<<" e o menor numero digitado foi: "<<menor<<endl;    return 0;}
Link para o comentário
Compartilhar em outros sites

Acho que precisa receber o ponteiro antes;

Assim:

#define MAIOR  0#define MENOR 1int* sexo(int *a, int b, int* morless );//dentro do main declareint morless[ 2 ];//substitua morless nos int's da função sexo equivalente assim;/*Onde há                                   porint maior=a[0];                          morless[ MAIOR ];int menor=a[0];                         morless[ MENOR ];*///a função pode retorna o ponteiroreturn( morless );//porém já não fará diferença já que morless guarda as informações prontas para uso.cout << "Maior e Menor: =  "<<morless[ MAIOR ]<<" e " << morless[ MENOR ];

Se ajudou ou não, o importante é compartilhar :)

Link para o comentário
Compartilhar em outros sites

  • Solução

Bom dia.

Então...  uma função só pode retornar um único valor em C/C++. Se você precisar receber/alterar mais de um valor você tem algumas opções:

 

Alterar os valores por referência:

void sexo(int *vetor, int tam, int &maior, int &menor) {    maior = vetor[0];    menor = vetor[0];    for (int i=1; i < b; i++) {        if (a[i] > maior) {            maior = a[i];        }        if (a[i] < menor) {            menor = a[i];        }    }} int main() {    int maior;    int menor;    int vet[10];    ...    sexo(vet, 10, maior, menor);    cout << "O maior numero digitado foi: " << maior << " e o menor numero digitado foi: " << menor << endl;     return 0;}
 

Como 'maior' e 'menor' foram passados por referência pra função 'sexo()', então as mudanças que você fizer neles dentro da função serão refletidas no main também.

 

Criando uma struct:

struct resultados {    int maior;    int menor;}; resultados sexo(int *vetor, int tam) {    resultados res;    res.maior = vetor[0];    res.menor = vetor[0];    for (int i=1; i < b; i++) {        if (a[i] > res.maior) {            res.maior = a[i];        }        if (a[i] < res.menor) {            res.menor = a[i];        }    }    return res;} int main() {    resultados res;    int vet[10];    ...    res = sexo(vet, 10);    cout << "O maior numero digitado foi: " << res.maior << " e o menor numero digitado foi: " << res.menor << endl;     return 0;}
 

Usando um std::pair:

pair<int,int> sexo(int *vetor, int tam) {    int maior = vetor[0];    int menor = vetor[0];    for (int i=1; i < b; i++) {        if (a[i] > maior) {            maior = a[i];        }        if (a[i] < menor) {            menor = a[i];        }    }    return make_pair(maior, menor);} int main() {    pair<int,int> res;    int vet[10];    ...    res = sexo(vet, 10);    cout << "O maior numero digitado foi: " << res.first << " e o menor numero digitado foi: " << res.second << endl;     return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!