Jump to content

[C] Ajuda: Uma opinião sobre codigo


Recommended Posts

Posted

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á

Posted

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.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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.

Posted

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();
...

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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.

Posted

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';

😉

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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.

Posted

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??

Posted

Só vi por alto ma spareceu-me estar bem. 😉

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

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...

Posted

-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  ? 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.