criar duas funções no mesmo programa em c++ como sobrecarga: uma como tipo bool e outra como int

1. criar duas funções no mesmo programa em c++ como sobrecarga: uma como tipo bool e outra como int

Lendel dos Santos Rodrigues
lendel

(usa Linux Mint)

Enviado em 16/05/2019 - 16:07h

Pessoal estou estudando C++ e em alguns exercicios, não estou conseguindo resolver algumas partes dos mesmos, no meu programa em C++. Gostaria que alguém me ajudasse com a solução, pois ja pesquisei em diversos sites, videos e ainda não encontrei uma solução para tal. aqui vai meu codigo

Devem existir funções:

h) verificar se um número inteiro faz parte do vetor e retornar true ou false
bool Busca(int v[ ], int n, int numero)
i) verificar se um número inteiro faz parte do vetor e retornar a sua posição. Retornar -1 se o número não for encontrado
int Busca(int v[ ], int n, int numero)


#include <iostream>

using namespace std;

void LeVetor(int v[], int n){
int consta;
// Ler elementos do vetor
for (int i = 0; i < n; i++)
{
cout << "v[" << i << "]=";
cin >> v[i];
do{
consta = 0;
for(int l = 0; l < i; l++)
if(v[i] == v[l]) // não permitir repetição de elemento
consta = 1;
if(consta == 1){
cout << "vetor repetido. Reinforme novamente" << endl;
cout << "v[" << i << "]=";
cin >> v[i];
}
}while(consta != 0);
}
}

bool Busca(int v[], int n, int numero){

for(int i = 0; i < n; i++){
if(numero == v[i]){
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Verdadeiro" << endl;
return true;
}
else{
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Falso" << endl;
}
}
return false;
}

int Busca(int v[], int n, int numero){
for(int i = 0; i < n; i++){
if(numero == v[i]){
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Verdadeiro" << endl;
return 1;
}
else{
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Falso" << endl;
}
}
return -1;
}

int main (int argc, char *argv[]){

int v[30], n, numero;
bool v2[30], n2, numero2;
cout << "Insira a quantidade de elementos: " << endl;
cin >> n;
cout << "Insira os elementos de v:" << endl;
LeVetor(v,n);
cout << "Insira um numero:" << endl;
cin >> numero;
for(int i =0; i < n; i++){
v2[i] = v[i];
}
n2 = n;
numero2 = numero;
cout << "Os numeros inteiros fazem parte do vetor: " << endl;
Busca(v2,n2,numero2);
Busca(v,n,numero);

return 0;
}


ele apresenta o seguinte erro;

exemplo2.cpp:42:6: error: ambiguating new declaration of ‘int Busca(int*, int, int)’
int Busca(int v[], int n, int numero){
^~~~~
exemplo2.cpp:26:7: note: old declaration ‘bool Busca(int*, int, int)’
bool Busca(int v[], int n, int numero){
^~~~~
exemplo2.cpp: In function ‘int main(int, char**)’:
exemplo2.cpp:73:8: error: cannot convert ‘bool*’ to ‘int*’
Busca(v2,n2,numero2);
^~
exemplo2.cpp:26:17: note: initializing argument 1 of ‘bool Busca(int*, int, int)’
bool Busca(int v[], int n, int numero){
~~~~^~~
Desde já agradeço a ajuda



  


2. Re: criar duas funções no mesmo programa em c++ como sobrecarga: uma como tipo bool e outra como int

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/05/2019 - 19:25h

O enunciado pede realemnte que você tenha ao mesmo tempo duas funções sobrecarregadas que diferem apenas pelo tipo de retorno? Se sim, então esse enunciado está errado, pois isso não é possível, de acordo com regras explícitas do padrão da linguagem.

Se não for ao mesmo tempo, mas os itens (h) e (i) forem em situações e programas diferentes, então tudo bem. Caso contrário, a única maneira de fazer funcionar ao mesmo tempo é se você eventualmente puder tocar a ordem dos parâmetros entre a função que retorna bool e a que retorna int.


Mas uma curiosidade: de onde você tirou a notação de “int v[]”? É influência de Java? Porque em C e C++ ela é sinônima de “int *v”, com a diferença de que esta é mais geral, e aquela só pode aparecer como parte de declaração de parâmetro de função.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: criar duas funções no mesmo programa em c++ como sobrecarga: uma como tipo bool e outra como int

Lendel dos Santos Rodrigues
lendel

(usa Linux Mint)

Enviado em 20/05/2019 - 11:03h

Ola Paulo,

Desde já obrigado pela ajuda.
Bom a questão é bem é assim:
Criar uma Unidade independente para manipular vetores de máximo, 30 elementos inteiros e distintos. Nesta unidade devem existir funções para:
a) ler a dimensão do vetor(1<= n <= 30)
void LeDimensão (int &n); 

b) ler os elementos do vetor (não permitir repetição)
void LeValores(int v[ ], int n); 

c) exibir os elementos do vetor
void ExibeValores(int v[ ], int n); 

d)retornar o maior elemento do vetor
int Maior(int v[ ], int n); 

e) retornar o menor elemento do vetor
int Menor(int v[ ], int n); 

f) retornar o maior elemento do vetor e sua posição
void Maior(int v[ ], int n, int &m, int &pos); 

g) retornar o menor elemento do vetor e sua posição
void Menor(int v[ ], int n, int &m, int &pos); 

h)verificar se um número inteiro faz parte do vetor e retornar true ou false
bool Busca (int v[ ], int n, int numero); 

i) verificar se um número inteiro faz parte do vetor e retornar a sua posição. Retornar -1 se o número não for encontrardo
int Busca(int v[ ], int n, int numero); 


a influência dessa notação peguei desse livro que estou estudando "Aplicações Cientificas em C++: Da Programação Estruturada à Programação Orientada para Objetos". pag 203, cap. 15, questão 15.28

bom aqui vai os codigo independentes. esse que postei era apenas pra resolver o problema dessas duas funções. geralmente eu isolo num codigo separado para resolver apenas o que esta impedindo do codigo rodar.


4. Re: criar duas funções no mesmo programa em c++ como sobrecarga: uma como tipo bool e outra como int

Lendel dos Santos Rodrigues
lendel

(usa Linux Mint)

Enviado em 20/05/2019 - 11:08h

A função principal ou o função main
#include <iostream>
#include "Funcoes15028.h"

using namespace std;

int main (int argc, char *argv[]){

cout << endl;
cout << "Programa para manipular vetores com varias funções"<< endl;
cout << endl;

int n, m, pos, numero, maior, menor;
int v[30];

LeDimensao(n);
LeValores(v,n);
cout << "Os vetores inseridos são: " << endl;
ExibeValores(v,n);
cout << "Maior vetor" << endl;
Maior(v,n);
cout << "Menor vetor" << endl;
Menor(v,n);
cout <<"Maior elemento e sua posição é: " << endl;
Maior(v,n,m,pos);
cout << "Componente[" << pos << "]=" << m << endl;
maior = m;
cout <<"Menor elemento e sua posição é: " << endl;
Menor(v,n,m,pos);
cout << "Componente[" << pos << "]=" << m << endl;
menor = m;
cout << "Os números inteiros que fazem parte do vetor: " << endl;
numero = maior;
Busca(v,n,numero);
numero = menor;
Busca(v,n,numero);/*
cout << "Faz parte do vetor e sua posição é: " << endl;
Busca(v,k,numero2);
*/

return 0;
}


A codigo que está somente as funções

#include "Funcoes15028.h"
#include <cmath>
#include <iostream>

using namespace std;

void LeDimensao(int &n)
{
// Ler dimensão do vetor
cout << "Quantidade de n de elementos do vetor x = "; cin >> n;
while (n < 1 || n > MAX)
{
cout << "Quantidade de elementos invalida!\n";
cout << "Quantidade de n de elementos do vetor x = "; cin >> n;
}
}

void LeValores(int v[], int n){
int consta;
// Ler elementos do vetor
for (int i = 0; i < n; i++)
{
cout << "v[" << i << "]=";
cin >> v[i];
do{
consta = 0;
for(int l = 0; l < i; l++)
if(v[i] == v[l]) // não permitir repetição de elemento
consta = 1;
if(consta == 1){
cout << "vetor repetido. Reinforme novamente" << endl;
cout << "v[" << i << "]=";
cin >> v[i];
}
}while(consta != 0);
}
}

void ExibeValores(int v[], int n){
// Exibir vetor
for (int i = 0; i < n; i++)
cout << v[i] << '\t';
cout << endl;
}

int Maior(int v[], int n){
double maior = 0; //menor valor
for(int i = 0; i < n; i++){ //Varia de 1 a n-1
if (v[i] > maior){
maior = v[i]; // Determina maior
}
}
cout << maior << endl;
return maior;
}

int Menor(int v[], int n){
double menor = v[0]; //Primeio elemento
for(int i = 0; i < n; i++){ //Varia de 1 a n-1
if (v[i] < menor)
menor = v[i]; // Determina menor
}
cout << menor << endl;
return menor;
}

void Maior(int v[], int n, int &m, int &pos){
m = 0; //Menor valor
for(int i = 0; i < n; i++){ //Varia de 1 a n-1
if (v[i] > m){
m = v[i]; // Determina maior
pos = i; // Determina a posição
}
}
}

void Menor(int v[], int n, int &m, int &pos){
for(int i = 0; i < n; i++){ //Varia de 1 a n-1
if (v[i] < m){
m = v[i]; // Determina maior
if(m == v[i]){
pos = i; // Determina a posição
}
}
}
}

bool Busca(int v[], int n, int numero){

for(int i = 0; i < n; i++){
if(numero == v[i]){
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Verdadeiro" << endl;
return true;
}
else{
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Falso" << endl;
}
}
return false;
}
/*
int Busca(int v[], int n, int numero){

for(int i = 0; i < n; i++){
if(numero == v[i]){
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Verdadeiro" << endl;
return 1;
}
else{
cout << "Componente[" << i << "]=" << v[i] << endl;
cout << "Falso" << endl;
}
}
return -1;
}
*/


o codigo que está somente o cabeçalho das funções

#ifndef FUNCOES15028_H_INCLUDED
#define FUNCOES15028_H_INCLUDED
const int MAX = 30;
typedef int Vetor[MAX];
void LeDimensao(int &n);
void LeValores(int v[], int n);
void ExibeValores(int v[], int n);
int Maior(int v[], int n);
int Menor(int v[], int n);
void Maior(int v[], int n, int &m, int &pos);
void Menor(int v[], int n, int &m, int &pos);
bool Busca(int v[], int n, int numero);/*
int Busca(int v[], int n, int numero);*/
#endif


Desde já agradeço a ajuda...
Abraços






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts