Ir ao conteúdo
  • Cadastre-se

Ajuda com vetores c++


Gui_cpp

Posts recomendados

 

Preciso muito de ajuda de como trabalhar com vetores estou me dando mal nessa matéria na faculdade. Qualquer ajuda sera muito bem vinda.

 

-Enunciado da questão : Faça um programa que recebe um numero inteiro com no minimo 3 digitos e cria uma representação textual para o numero com virgula antes dos dois últimos dígitos, além de pontos para separar outro dígitos de três em trés para facilitar a leitura.

-como o numero pode ter muitos digitos, e eles devem ser processados individualmente, é recomendado que seu armazenamento seja feito numa string(array de char) com capacidade para cerca de 40 digitos. O numero processado também deve usar o mesmo tipo.

-O programa não deve apenas escrever o numero formatado, ele deve guardar a string numa variavel (vetor) antes de escrever.

 

 

-Exemplo de entrada : 2187483647

-Exemplo de saída :    21.874.836,47

 

Não consigo nem começar o código pessoal por favor qualquer dica sera de muito valor.

Lembrando : em c++.

Link para o comentário
Compartilhar em outros sites

- Primeiro pega o número do usuário:

 

unsigned long int x;scanf("%d", &x);
- Faz a checagem se o número tem no mínimo 3 dígitos:

if (x < 100) { ... }

- Se tiver menos que 3 dígitos, repete o primeiro passo.

- Se não, transforma o número numa string:

 

int n; // tamanho do vetorchar numeros[50];n = sprintf(numeros, "%lu", x); // guarda o inteiro 'x' no vetor 'numeros'
- Depois disso é só criar um outro vetor, pegar os caracteres do primeiro vetor e montar eles no segundo, adicionando as vírgulas, pontos, etc.

Os exemplos acima usam C. Em C++ você usa a mesma lógica, mas pra converter inteiros pra string é mais fácil ainda:

 

#include <iostream>#include <string>#include <sstream>int main() {	unsigned long int a;        std::cin >> a;	std::stringstream ss;	ss << a;	std::string str = ss.str();	std::cout << str << std::endl;	return 0;}
Link para o comentário
Compartilhar em outros sites

É só percorrer o vetor da direita pra esquerda... conta dois caracteres, põe uma vírgula, conta mais 3, põe um ponto, mais 3, outro ponto...

Usando as funções string.size() e string.substr(inicio, tamanho) você sai testando o vetor original pra saber onde pôr as virgulas e pontos.

 

Por exemplo, se o tamanho do teu vetor for maior ou igual a 3, significa que ele tem uma vírgula, e você usa a vírgula antes dos dois últimos digitos:

 

if (vetor.size() > 2) {

    resultado = vetor.substr(0, vetor.size() -2) + "," + vetor.substr(vetor.size() -2, 2);

}

 

Se o tamanho do vetor for maior que 5, você usa uma vírgula antes dos dois últimos digitos e um ponto antes dos cinco últimos dígitos.

Se o tamanho do vetor for maior que 8, você usa uma vírgula antes dos dois últimos digitos, um ponto antes dos cinco últimos digitos, e outro ponto antes dos oito ultimos digitos...

etc...

 

Só que na prática você não precisa usar esse monte de IFs... basta usar um único FOR, percorrer o vetor de trás pra frente, de 3 em 3 dígitos, adicionando eles no outro vetor com os pontos.

  • 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...