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