• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rgcaldas

[C] Ajuda: Uma opinião sobre codigo

11 mensagens neste tópico

Boas

Não sei se devo colocar aqui ou não, mas eu tenho um programinha que ando a desenvolver.

A ideia é simplesmente fazer as operações de álgebra com vectores (algébricos, não do c).

E gostava que dessem a vossa opinião, tipo se alguma coisa podia ser simplificada.

E já agora coloco outra questão:

- Qual é a forma de transformar as seguintes expressões, que só funcionam em windows, em algo mais standard:

  - getch()

  - fflush(stdin)

Obrigado desde já

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que no código não precisas de incluir o fflush(stdin). Eu pelo menos nunca incluo e nunca tive problemas, a não ser quando quero realmente retirar o '\n'.

Para mais informações :  http://www.portugal-a-programar.pt/index.php?showtopic=3969

- Qual é a forma de transformar as seguintes expressões, que só funcionam em windows, em algo mais standard:

Como assim? o getch() podes usar o getchar() que faz o mesmo por exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas fico com um problema, que é os "enters" que vem de trás.

logo no sitio do getch() tenho de colocar dois getchar()

Também não sei se estou utilizar a função certa, o que eu quero com o getch() é pausar o programa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas fico com um problema, que é os "enters" que vem de trás.

logo no sitio do getch() tenho de colocar dois getchar()

Também não sei se estou utilizar a função certa, o que eu quero com o getch() é pausar o programa.

Fazes o seguinte:

...
getchar();
printf("\n\nPrima tecla para continuar...");
getchar();
...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazes o seguinte:

...
getchar();
printf("\n\nPrima tecla para continuar...");
getchar();
...

Isto é mais ou menos aquilo que eu tenho na versão linux. O que eu queria saber é se não há alguma forma de simplificar isto.

Se calhar tem a ver com a função fflush(stdin) que não consigo que funcione no linux, não limpa o buffer do teclado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto é mais ou menos aquilo que eu tenho. O que eu queria saber é se não há alguma forma de simplificar isto.

Se calhar tem a ver com a função fflush(stdin) que não consigo que funcione no linux, não limpa o buffer do teclado.

Segundo alguns users que postaram naquele tópico que te indiquei acima, o fflush(stdin) não funciona em Linux. :)

É o que te disse, eu nunca uso isso. Outra forma é substituires o '\n' por um '\0' no final da frase ou palavra.

Exemplo:

scanf("%s", buffer);
int len = strlen(buffer);
buffer[len-1] = '\0';

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para limpar o buffer de entrada (remover o \n e outros caracteres que lá estejam) eu normalmente uso a seguinte linha

while(getchar()!='\n');

que elimina lê todos os caracteres do buffer até aparecer um \n.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Segundo alguns users que postaram naquele tópico que te indiquei acima, o fflush(stdin) não funciona em Linux. ;)

Desculpa não tinha visto esta parte da tua resposta.

Já fui ler o post  :-[

Vou fazer uns testes

Já agora. Alguém viu o codigo que deixei. O que é que acharam??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora. Alguém viu o codigo que deixei. O que é que acharam??

-penso que também não existe o 'clrscr()' em linux (podes usar o 'system("clear");'...)

-não percebi a necessidade dos vectores na função 'main', pareceu-me que nunca eram usados

-algumas da operações podiam ser feitas com ciclos, ficava mais fácil adaptar o código para vectores maiores (ou mesmo generalizar para vectores de qualquer dimensão).

-a forma como abordas o problema se calhar não é a melhor, mas isto é um ponto que vais melhorar com a experiência...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

-penso que também não existe o 'clrscr()' em linux (podes usar o 'system("clear");'...)

Pois essa era outra, que me esqueci, se colocar system("clear") tenho o mesmo problema mas com o windows

-não percebi a necessidade dos vectores na função 'main', pareceu-me que nunca eram usados

Estou a alterar o codigo, de maneira a ter os vectores na main e passa-los para as funções como argumentos.

-algumas da operações podiam ser feitas com ciclos, ficava mais fácil adaptar o código para vectores maiores (ou mesmo generalizar para vectores de qualquer dimensão).

Vou tentar  :hmm: Mas os vectores à partida não vão mudar de dimensão, pelo menos a ideia do programa é só fazer as operações em R3

-a forma como abordas o problema se calhar não é a melhor, mas isto é um ponto que vais melhorar com a experiência...

Espero que sim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora