Ir para conteúdo

Arquivado

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

wgd_le

Ajuda com laço for

Recommended Posts

Bom dia!!

Esse é meu primeiro post no forum, então peço desculpa se postei no lugar errado!!

Sou novo no mundo da programação, então faço muitas coisas erras, e meu erro agora é o seguinte:

Foi pedido que pegue os valores de 13 edits diferentes então criei um laço for da seguinte maneira

float preço[13];

for(int ind=0;i<=13;i++){

preço=StrToFloat(Editind->Text);

}

Por não ter renomeado os edits, os mesmo ficam edit1, edit2... O problema é que o "ind" do laço for junta com nome, fincando editIND que não existe.

Existe alguma forma de resolver esse problema usando um laço de repetição?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é p/ ler 13 valores, use 0<= i <13. Preste atenção nas condições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

for(int ind=0;i<=13;i++){

troca por:

for(int i=0; i<=13;i++){

se não ajudar tente explicar melhor o problema! kkk

Opa, foi erro na hora de escrever aqui. Acho que expliquei mal o problema mesmo.

 

No caso eu preciso simplesmente ler 13 edits, invés de escrever as 13 atribuições, uma por uma, gostaria de fazer isso pelo laço for:

 

inves de fazer assim:

 

preço[0] = StrToFloat(Edit1->Text);

 

preço[1] = StrToFloat(Edit2->Text);

 

e ate a edit 13.

 

Queria fazer com laço for, só que o "I" do laço fica como se fosse o nome do componente, ficando editi, e não edit1, edit2 conforme o loop.

 

Se é p/ ler 13 valores, use 0<= i <13. Preste atenção nas condições.

Verdade, me confundo ainda um pouco com isso, vlws ai pelo toque!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda n entendi bem o que você quer fazer :D.

mas eu faria assim.

Para ler:

float preco[13];

int i;
for( i = 0; i < 13; i++){
   scanf("%f",&preco[i]);
};

para imprimir na tela:

for( i = 0; i < 13; i++){
   printf("edit%d -> %.2f",(i+1),preco[i]);
}

assim iria armazenar os valor no vetor e depois ia escrever do jeitinho que você falou: edit1, edit2...assim por diante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda n entendi bem o que você quer fazer :D.

mas eu faria assim.

Para ler:

float preco[13];

int i;
for( i = 0; i < 13; i++){
   scanf("%f",&preco[i]);
};

para imprimir na tela:

for( i = 0; i < 13; i++){
   printf("edit%d -> %.2f",(i+1),preco[i]);
}

assim iria armazenar os valor no vetor e depois ia escrever do jeitinho que você falou: edit1, edit2...assim por diante!

 

É só pra pegar o valor dos componentes Edits e passar para o vetor. Mas são 13 caixas de texto.

Os edit1, edit2 é o nome do componente.

O problema é que não sei como vincular o "i" do laço como o nome da caixa de texto, assim o "i" vira 1,2... e os edits se torna edit1 e edit2... igual no vetor, preco[1], preco[2]...

Mas o que quero mesmo é somente pegar os valores das caixas de texto em um laço de repetição.

Acho importante falar, que o programa é com interface, e já tem todas as caixas de texto, elas com os nomes edit1 edit2 e assim por diante.

 

Desculpe a complicação, é que sou péssimo com palavras!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, se vc está usando componente gráfico, vai ter que recorrer à hierarquia da janela p/ pesquisar por tipo (InputText ou outro nome parecido). Aí sim vc vai poder usar um loop p/ percorrer todos os campos (normalmente a API retorna uma lista de componentes se possuir um método tipo findByType('inputText')). Mas aí parece mais C++ do que C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função que criei já pode resolver seu problema em converter String para Float:

float StrToFloat(const char *Str){
    float result = strtof(Str, NULL);
    return result;
}

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.