|
![]() |
||
Dúvidas em C...
|
||
. Nós temos 754.120 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Estou com duas dúvidas que acredito serem bem básicas, mas não estou conseguindo saná-las...
Primeiro, sobre a expressão de controle: num determinado programa, foram colocados os números 7.2, ou seja: %7.2f. Não entendi a explicação do livro.. O quê significa o "7" e o "2"?? Segundo, como faço para um programa bem básico como o de baixo manter a tela do DOS aberta com a mensagem gerada e não fechar a tela depois da execução? Código:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
#2 (permalink) |
|
Super Participante
Registrado em: Nov 2002
Localização: São João de Meriti RJ
Idade: 28
Mensagens: 931
Reputação: 321
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Sobre o %7.2f, se não me engano, ele indica que o número float a ser impresso deve ocupar 7 espaços, contando com a vírgula, com 2 casas decimais depois da vírgula.
Pra tela não fechar imediatamente, execute o programa no prompt ou coloque uma função tipo um getch no final do programa para que a janela só feche depois que pressionar uma tecla.
__________________
Desk: Gigabyte GA-MA69VM-S2 | AMD Athlon II X4 640 3.0@3.3 | 2GB DDR2 800@880 | MSI GeForce GTS 450 OC 512MB DDR5 | Samsung HD321HJ 320GB | Extream FEX-45T12 450W | LG L1753T 17'' Note: HP G42-215BR | Core i3 350 | 3Gb DDR3 | HD 500GB Fone: LG Optimus One P500 |
|
|
|
|
|
#3 (permalink) | |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Citação:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
|
#4 (permalink) |
|
GeeK
|
Código:
|
|
|
|
|
|
#5 (permalink) | |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Citação:
Sabe dizer como ficaria o programa abaixo? Código:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
|
#6 (permalink) | |||
|
Super Participante
|
Assumindo que A=1 e B=6:
Código:
Código:
Citação:
Como você está programando em windows, você pode usar a função getch() para "travar" o prompt. Assim você economiza memória pois não precisaria declarar uma variavel something a toa. Quanto aos números não estranhe. Veja: Código:
Citação:
Teste ai e veja. Isso se chama saída formatada, ou seja... você sempre terá um número com 7 digitos inteiros e 2 casas decimais. SEMPRE. Sacou? Outra dica. Como você ainda está usando um programa de apenas uma função troque o return (0) por exit(0). Segundo o livro que eu tô lendo isso vai limpar completamente a memória assim que o programa sair, coisa que o return(0) não faria já que ele só está indicando ao sistema operacional sucesso e não que ele terminou completamente. Logicamente que se o seu sistema operacional entender um programa como um processo o return(0) e o exit vão ter o mesmo sentido. Ainda estou estudando sistema operacionais mas pelo o que entendi no minix a banda não toca bem assim pois ele gera processos filhos que ao terminarem continuam existindo apenas ficando "parados". Pessoal também estou com duvidas. No meu caso são sobre matrizes. Vejam: Código:
Citação:
Por que trocando os simbolos de <= por apenas < dá certo? ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|||
|
|
|
|
|
#7 (permalink) |
|
GeeK
|
vc faz um for assim
for(inicio; condição ; incremento) se vc tem uma matriz de tamanho 20, ela vai de 0 a 19, por isso vc faz um contador que começa em 0 e incrementa enquanto é menor que 20. se vc usa <= vc vai pegar o elemento 20 de uma matriz que vai até 19 e isso não presta. |
|
|
|
|
|
#8 (permalink) | |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Citação:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
|
#9 (permalink) |
|
GeeK
|
#include <stdio.h>
#include <conio.h> main() { char c; printf("Pressione uma tecla..."); ch = getch(); printf("Voce pressionou a tecla %c", ch); } |
|
|
|
|
|
#10 (permalink) |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
No primeiro programa funciona...
Código:
... No segundo não rolou.... Código:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
#11 (permalink) |
|
GeeK
|
use scanf e seja feliz
|
|
|
|
|
|
#12 (permalink) |
|
Super Participante
|
Siga o conselho do amigo. O scanf tem uma sintaxe maior mas realmente vai te salvar a vida muitas vezes já que é uma função padrão C e diferentemente do getch.
Qual compilador você tá usando? O borland C? ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#13 (permalink) |
|
General de Pijama
|
Aqui o segundo funcionou 100%.
Lembre-se que para que a função getch() possa funcionar, vc deve ativar o cabeçalho conio.h, no inicio do programa. #include <conio.h> Valeu.
__________________
Gabriel vinicios |
|
|
|
|
|
#14 (permalink) |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Acho que não fui claro, desculpe... Não é o "if" que não está funcionando... É o getch()...
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
#15 (permalink) | |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Citação:
Só que cheguei a testar o primeiro programa sem ele(tirei de propósito para testar) e funcionou... Muito estranho... Será que era porque ele já estava carregado?? Mas valeu mesmo!!! Agora os dois funcionaram!!!! :mrgreen:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
|
#16 (permalink) |
|
Newbie
Registrado em: Sep 2005
Mensagens: 35
Reputação: 0
![]() |
Em vez de usar o getch() vc pode usar o system("pause") que também funciona.
__________________
Vlw Tardelli |
|
|
|
|
|
#17 (permalink) | |
|
General de Pijama
Registrado em: Apr 2002
Localização: RJ - Capital
Mensagens: 3.159
Reputação: 24
![]() |
Citação:
__________________
_________________________________________________ _______________ Incógnito - RJ |
|
|
|
|
|
|
#18 (permalink) |
|
GeeK
|
Que tal executar pelo prompt de comando do DOS ?
|
|
|
|
|
|
#19 (permalink) | |
|
Membro Senior
|
Citação:
|
|
|
|
|
|
|
#20 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
O getch() às vezes não funciona porque você faz um scanf() antes.
Ambos, getch() e scanf(), trabalham com o stream INPUT. Quando você usa scanf(), ela lê todos os caracteres até encontrar um separador. Esse separador não é lido, continua no stream. Detalhe: o "ENTER" é considerado um separador. Daí, quando você executa o getch() logo após o scanf(), o ENTER que estava no stream é lido, e getch() retorna sem esperar. Para isso não acontecer, você tem que usar a função fflush() para limpar tudo que esteja nos buffers de leitura do stream INPUT, fazendo com que o getch() em seguida espere que mais alguma coisa seja digitada. Código:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
![]() |
| Opções do Tópico | |
|
|