Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ana Fontoura

[Resolvido] Construindo vetor de strings

Recommended Posts

Olá pessoal, estou criando um programa onde um numero inteiro é lido e é impresso por extenso, mas estou com problemas dentro do construtor do código abaixo, acho que estou atribuindo erroneamente os valores aos vetores... o compilador acusa erro de sintaxe em cada uma das 4 linhas do construtor. O construtor serve para instanciar um vetor de objetos. Como que deve ser feita a atribuição?

 

class Extenso
{
	private:
		char dez[9][10];
		char unid[9][7];
		char deci[9][11];
		char cent[9][13];
		int num, pos;
	public:
		Extenso();
		void leexibe();
};

Extenso::Extenso()
{
	dez[9][10]={"onze","doze","treze","quatorze","quinze","dezesseis","dezesete","dezoito","dezenove"};
	unid[9][7]={"um","dois","tres","quatro","cinco","seis","sete","oito","nove"};
	deci[9][11]={"dez","vinte","trinta","quarenta","cinquenta","sessenta","setenta","oitenta","noventa"};
	cent[9][13]= {"cento","duzentos","trezentos","quatrocentos","quinhentos","seiscentos","setecentos","oitocentos","novecentos"};
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ana,

 

Você esta tentando atribuir as strings de maneira errada.

Quando você diz int dez[9][10] você esta criando um vetor de 9 posições para outro vetor de 10 posições.

Então se você quer atribuir 9 "strings" para o vetor basta utilizar:

 

dez[9]={"onze","doze","treze","quatorze","quinze","dezesseis","dezesete","dezoito","dezenove"};

Já que nessa atribuição pedimos que a variável *dez* receba 9 strings de no maximo 10 caracters.

 

Dê uma lida em http://equipe.nce.ufrj.br/adriano/c/apostila/vetor.htm para esclarecer melhor esse problema.

 

ps: Acho que alguém já passou aqui tentando resolver essa tarefa... XD

http://forum.imasters.com.br/index.php?/topic/363980-numeros-por-extenso/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ana,

 

Você esta tentando atribuir as strings de maneira errada.

Quando você diz int dez[9][10] você esta criando um vetor de 9 posições para outro vetor de 10 posições.

Então se você quer atribuir 9 "strings" para o vetor basta utilizar:

 

dez[9]={"onze","doze","treze","quatorze","quinze","dezesseis","dezesete","dezoito","dezenove"};

Já que nessa atribuição pedimos que a variável *dez* receba 9 strings de no maximo 10 caracters.

 

fiz isso e não funcionou... :/

 

ps: Acho que alguém já passou aqui tentando resolver essa tarefa... XD

http://forum.imasters.com.br/index.php?/topic/363980-numeros-por-extenso/

 

isso aí que perguntaram era em C, e o problema que ele teve era diferente do meu também... ali é diferente... eu tenho uma versão desse programa em C e ele funciona, mas em C++ essa parte do construtor dá problema :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita, viajei na maionese...

 

Eu tive esse problema um dia mas não lembro em qual linguagem eu resolvi assim.

 

Em c++, eu acho que você tem que atribuir os valor no momento da declaração, tipo isso:

char dez[9][10]={"onze","doze","treze","quatorze","quinze","dezesseis","dezesete","dezoito","dezenove"};

 

Mas isso não deve resolver seu problema, já que você quer atribuir depois...

Uma alocação dinâmica deve resolver, mas eu não me lembro como que faz...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem códigos prontos aki no fórum que fazem isso, faça uma busca.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem códigos prontos aki no fórum que fazem isso, faça uma busca.

 

[]s

 

 

eu tenho que fazer exatamente desse jeito, ja dei uma olhada no outro código...é que o professor deu um programa em c, e mando a gente passar pra c++, e nao to conseguindo :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase todo código ANSI C também é C++, o inverso não é verdade.

você pode simplesmente trocar os headers e entregar o trabalho. xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase todo código ANSI C também é C++, o inverso não é verdade.

você pode simplesmente trocar os headers e entregar o trabalho. xD

 

 

pois é...eu fiz exatamente a mesma coisa...só que simplesmente da erro..ninguem sabe me responder isso aqui?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra que você vai quardar em cada instancia da classe Extenso os arrays uni, deci, cent...

Sendo que você só precisa de um...

#define UNIDADE_LEN 9
const char * const Unidade[] = {
"um",
"dois",
"tres"...
};

#define DEC_LEN 9
const char * const Dec[] = {
"dez",
"vinte",
"trinta",
...
};

/*
agora você usa esses arrays globais.
*/

Da erro pq você declara, por exemplo: cent[9][13], mas "cento" não possui 13 letras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.