Ir ao conteúdo
  • Cadastre-se

Problemas com vector - exercício do livro de bjarne stroustrup


Lodibr

Posts recomendados

Olá pessoal estou com uma duvida em relação a um vector que tem que identificar o maior e menor string no vector, pois bem o problema é o seguinte ele verifica o tamanho da string digitada e o valor da string existente na variavel, mas so altera a primeira vez as vezes subsequentes ele não altera a variavel mesmo verificando que ela e maior... segue o codigo para que possam analisar e me ajudar.


vector<string> programa;
vector<int> total_n;

int translate()
{
	int tamanho = ;
	for(int i =; i<programa.size();++i)
	{	
		tamanho = programa[i].size();
	}
	total_n.push_back(tamanho);
	return tamanho;
}

int contador()
{
}

void maior_menor()
{
	int tamanho = translate();
	string menor ="";
	string maior ="";
	
	for(int i = ; i<programa.size(); ++i)
	{
		if (tamanho > maior.length()) maior = programa[i];		
	
	
	}
	
	cout << maior.length() <<"\n"<< menor.length() <<"\n"<< tamanho<<"\n";	
}

//----------------------------------

int main()
{
	vector<string> valor1;
	string tenso;
	while (cin >> tenso){
	programa.push_back(tenso);
	maior_menor();
	}
	
}

Agradeço pelo apoio...

Link para o comentário
Compartilhar em outros sites

@Lodibr o que você quis dizer com isso: "mas so altera a primeira vez as vezes subsequentes ele não altera a variavel mesmo verificando que ela e maior..."

Explique melhor o seu problema. o que altera? onde altera? O que era que você queria fazer?. Porque quer alterar?. Se você detalhar bem o seu problema se torna mais fácil te ajudar.

 

abraços...

 

Link para o comentário
Compartilhar em outros sites

@CiroboyBR

Pois bem o que quero fazer e o seguinte, preciso verificar qual maior string dentro do vector e qual a menor, no caso o translate() me retorna a quantidade de caracteres na ultima inserção, e eu utilizo esse valor de retorno para verificar se ele e maior que a variavel Maior dentro da função maior_menor() se verdadeiro o ultimo valor digitado é maior que o existente alocado na variavel maior dentro da função maior_menor, ele coloca a nova string dentro da variavel Maior. 

 

o problema é que ele so adiciona o primeiro valor verificado na variavel maior, os que forem digitados depois são adicionados no vector mas não alocados na variavel maior.

 

deu para entender agora amigo? obrigado pelo apoio!

Link para o comentário
Compartilhar em outros sites

@Lodibr O problema deve estar nessa parte:

 

for(int i = 0; i<programa.size(); ++i)
	{
		if (tamanho > maior.length()) maior = programa[i];		
	}

Pois você faz um for que eu imagino ser para percorrer o vector, mas você utiliza a variável tamanho. tente assim:

for(int i = 0; i<programa.size(); ++i)
	{
		if (programa[i].size() > maior.length()) maior = programa[i];
	}


abaixo está seu código com algumas correções e mudanças:

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

vector<string> programa;
vector<int> total_n;

int translate() {
    cout << "\n-------VECTOR------";
    int tamanho = 0, i;
    for(i = 0; i<programa.size(); i++) {
        tamanho = programa[i].size();
        cout << "\nNome: " << programa[i] << endl;
    }
    cout << "\n------------------\n";

    total_n.push_back(tamanho);
    return tamanho;

}


void maior_menor() {
    int tamanho = translate();
    string menor ="";
    string maior ="";

    for(int i = 0; i<programa.size(); ++i) {
        if (programa[i].size() > maior.length()) maior = programa[i];

    }

    cout << maior.length() <<"\n"<< menor.length() <<"\n"<< tamanho<<"\n";
}

//----------------------------------

int main() {
    string tenso;
    while (cin >> tenso) {
        programa.push_back(tenso);
        maior_menor();
    }

}

 

  • Curtir 1
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!