Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
claudio.g.chepa

Dúvida sobre vetores.

Recommended Posts

Boa tarde pessoal. Estou com uma dúvida sobre vetores em C++ e gostaria que me judassem a entender, por favor. O código abaixo funciona perfeitamente e faz o seguinte. Ele lê um arquivo de texto que contém números de 0 até 99, estes números estão em forma de tabela e tem 6 colunas e o número de linhas é variável. Então ele lê esse arquivo transforma os caracteres lidos em inteiros e os passa para uma matriz de inteiros. A matriz é feita da seguinte forma, primeiro aloquei um vetor de vetores,"vector< vector<int> > matriz" global. Montei a matriz dessa forma porque só quero ler o arquivo uma única vez e a única coisa que sei é que ele tem 6 colunas, mas não sei quantas linhas ele tem, então o jeito foi criar um vetor do tipo "vector" e ir usando o método "push_back". Dito isso, a minha dúvida está abaixo, no código.

vector< vector<int> > matriz;

void limparquivo(void)
{

ifstream arquivo("d:/Texts/tabela.txt");

vector<int> numero(2,0);
vector<int> coluna(6,0);

int i =0;
int col =0;
char carac;

if( arquivo.is_open() )
{
while( arquivo.good() )
{
carac = arquivo.get();
//Abaixo é só um esqueminha que eu criei para transformar caracteres em inteiros
de 2 dígitos.
if( carac >= 48 && carac <= 57 )
{
numero[i] = carac;
i++;
}
if( i == 2 )
{
coluna[col] = ((numero[0]-48)*10) + (numero[1]-48);
i =0;
col ++;
}
if( col == 6 )
{
//Abaixo "matriz" recebe o vetor "coluna" e zera apenas o seu índice o vetor
permanece o mesmo e que eu saiba com o mesmo endereço. O que não entendo é como
"matriz" guarda esses valores corretamente se o vetor "coluna" é o mesmo, só
estou substituindo seus elementos. Eu achei que para cada nova linha de "matriz"
eu teria que alocar um novo vetor de "coluna" para que ele tivesse um novo
endereço e então "matriz" apontar para este novo vetor.
matriz.push_back(coluna);
col =0;
}
}
}
else
{
cout<<"Arquivo nao encontrado."<<endl;
}

arquivo.close();

}

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×