Ir ao conteúdo
  • Cadastre-se

duvida simples


jnewsted23

Posts recomendados

aí galera...to com uma duvida simples...mas não consigo resolver de jeito algum...

seguinte...eu quero fazer um loop pro programa não contar os espacos em branco...ai eu fiz assim...

while((linha[k] != ' ') || (linha[k] != 13))

{

numero = (numero * 10) + (linha[k]-48);

k++;

}

Com isso o programa passaria direto pelos espacos...

mas o problema é q se eu entrar com uma entrada deste tipo: "4 5", ele le o 4, joga na variavel numero, mas quando le o espaco em branco ele entra no loop de novo...e não deveria...

alguem sabe como fazer pra ele não ler esse espaco em branco, e não entrar no loop do while de novo !?

ps.: já tentei com codigos da tabela ascii...mas mesmo assim ele entra.

falou !!!

Link para o comentário
Compartilhar em outros sites

Bem, vejamos:

Você quer contar todas as letras EXCETO os espaços, ou todas as letras ATÉ chegar em um espaço?

Veja o erro no seu teste:

// enquanto linha[k] diferente de espaço OU linha[k] diferente de enter

while((linha[k] != ' ') || (linha[k] != 13)) {

numero = (numero * 10) + (linha[k]-48);

k++;

}

Veja o seu exemplo: '4 5'

Supondo que k começe com 0, temos

1º) linha[0] = '4'; logo '4' != ' ' e '4' != 13 (enter)

entra no loop e incrementa numero.

2º) linha[1] = ' '; logo ' ' == ' ' e ' ' != 13

Se o teste é OU então ele entra no loop e incrementa numero pois espaço é diferente de enter.

Para solucionar mude o codigo para:

// enquanto linha[k] diferente de espaço E linha[k] diferente de enter

while((linha[k] != ' ') && (linha[k] != 13)) {

numero = (numero * 10) + (linha[k]-48);

k++;

}

com isso na segunda passada ele não entrará no loop, mas se você tiver uma entrada do tipo '4 56', ele só vai entrar uma vez, pois é ENQUANTO DIFERENTE, assim que ele ler o espaço, o loop termina e vai para o poximo comando.

Se quiser ler toda linha, coloque o codigo assim:

while(linha[k] != 13) { //enquanto diferente de enter

if (linha[k] != ' '){ //se diferente de espaço, incremente numero.

numero = (numero * 10) + (linha[k]-48);

}

k++;

}

Com isso ele entra no loop enquanto não for um enter, e só irá incrementar a variável numero se não for espaço, OK? :palmas:

Qualquer coisa é só perguntar.

see you

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!