Ir para conteúdo
Fórum Script Brasil

Jonas de Abreu

Membros
  • Total de itens

    137
  • Registro em

  • Última visita

Tudo que Jonas de Abreu postou

  1. Voce pode usar a funcao printf para isso. o codigo para a impressao seria: printf("A soma de: %d com %d é: %d", variavel, variavel2, soma); O printf aceita diversos outros tipos de impressao tambem. O %d serve para inteiros, %f para ponto flutuante, %s para strings, e varios outros formatos.
  2. Jonas de Abreu

    Voip

    Procure tambem pelo projeto Asterisk. é OpenSource então voce pode ver o codigo dele e aprender com isso. Apenas não sei se esta e C ou C++
  3. Admins, tem alguma forma de permitir caracteres como '\ 0' no forum??? Aparentemente eles estao sendo interpretados como parte do php e por isso desaparecem. Isso atrapalha muito quando o digitamos algum codigo fonte e precisamos dos caracteres especiais.
  4. tem um pequeno erro no seu codigo, Rafael. As strings são terminadas por '\ 0', sem o espaco. (Por algum motivo o caractere \ 0 não aparece no forum). E sempre que o scanf le uma string ele coloca '\ 0' no fim dela.
  5. Jonas de Abreu

    Dalay()

    O que a funcao dalay() faz??? Sabendo o que ela faz é mais facil encontrar alguma que tenha comportamento parecido.
  6. a funcao se chama qsort e é da stdlib.h Ela possui o seguinte prototipo: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) base é o vetor que voce quer ordenar nmemb é o numero de elementos no vetor size é o sizeof do tipo do vetor compar é uma funcao de comparacao que devolve 0 se forem iguais, < 0 se o primeiro é maior que o segundo e >0 caso contrario.
  7. O cygwin voce pega em http://www.gygwin.com . é bem capaz que o Vista de problema com o cygwin, afinal a Microsoft não gosta muito de compatibilidade. Apenas acho estranho codigo C não compilar se a extensao for C++, pois ele deveria suportar perfeitamente.
  8. Os headers em C++ não precisam do ".h" no nome. Mas voce pode usar tambem. Mais uma coisa: o compilador que voce esta usando esta errado. Para C++, use o g++ ou gpp.
  9. Voce pode fazer um vetor de classes. Assim voce cria a indexacao direto.
  10. Talve o problema seja voce não inicializar a variavel total. Tente inicializa-la com 0 antes do for.
  11. Jonas de Abreu

    Funções

    então, acho que não expliquei direito. Main não pode ser inline por que a funcao que voce declara como main sera chamada por um inicializador (geralmente escrito em assebly), portanto ela não tem como ser inserida no meio daquele codigo. Em teoria, qualquer outra funcao pode ser inline, mas ai dependendo do tamanho dela cai no problema que eu citei no post #2. Minha ideia para voce veriicar a velocidade que o inline acrescenta era algo assim: inline void incrementa(int &i){/*não programo muito em C++, mas acho que passagem por referencia é assim*/ i++; } int main(){ int i; for (i = 0; i < 10000000; ){ incrementa(i); } return 0; } Dai voce testa com o inline e sem o inline pra notar a diferenca. Um que tenho certeza que a diferenca ficara visivel (a não ser que o compilador já otimize) é: inline int incrementa(int i){ return i+1; } int main(){ int i; for (i = 0; i < 10000000; ) i = incrementa(i); return 0; }
  12. Se voce apenas quer contar as palavras, da pra fazer de um jeito mais eficiente, embora um pouco mais complicado: Enquanto não encontrar \ 0 1-Percorra a frase ate encontrar caracteres não brancos(que não são espaco, tab, \r, \n e \ 0) 2-incremente contadora de palavras 3-Percorra a frase ate encontrar caracteres brancos Se quiser coloco em C depois aqui no forum. Mas é um bom exercicio pra praticar.
  13. Mais uma ideia. Ordene as letras dentro das duas strings e compare-as com strcmp. Se devolver 0 elas são anagramas. Caso contrario não.
  14. Se fortran não tem uma funcao de numeros pseudo-aleatorios, voce pode implementar a sua propria funcao. Geralmente geradores aleatorios são implementados pelo metodo da congruencia linear. Basicamente, voce tem uma semente X[i-1], um numero M e um fator de multiplicacao A e um numero B relativamente primo a M. seu numero pseudo-aleatorio é da forma: X[i] = (A*X[i-1] + B) mod M O problema é a escolha de A e M. Se escolher mal o gerador sera muito ruim e seus dados praticamente não serao aleatorios. De uma olhada em "A arte da programacao de computadores", Volume 2, de Donald Knuth, neste artigo da Wikipedia http://en.wikipedia.org/wiki/Pseudorandom_number_generator e neste outro artigo também http://en.wikipedia.org/wiki/Linear_congruential_generator. Procurei artigos em portugues, mas os que eu achei estavam meio incompletos.
  15. O que pode estar acontecendo é o Dev não vir com headers escritos para o Vista. Isso é normal, pois o Vista é um Windows com a base bem modificada (não necessariamente melhor). Procure uma versao do Dev para Vista ou tente um outro compilador. Se não me engano, quando voce instala o cygwin (pacote livre de aplicativos de desenvolvimento para windows)já vem uma implementacao do GCC dentro dele. Outra alternativa é renomear seus arquivos .c para .cpp. Pelo que voce disse arquivos cpp estao compilando sem problema. Como qualquer compilador C++ compila codigo C, esse truque deve funcionar.
  16. Uma das saidas é montar uma tabela em que cada posicao corresponde a uma letra. Dai, para cada caractere da primeira palavra voce incrementa a posicao desse caractere na tabela e para cada caractere da segunda palavra voce decrementa a posicao do caractere. Se depois que voce tiver terminado tiver alguma posicao na tabela que seja diferente de zero, as palavras não são anagramas. Caso contrario elas são.
  17. Se voce garantir que o bispo tenha posicao inicial valida, os movimentos do bispo são sempre da seguinte forma, considerando que ele esta na posicao (x,y): (x+k, y+k) é para ele se mover na diagonal direita e para baixo (x-k, y-k) é para ele se mover na diagonal esquerda e para cima (x+k, y-k) é para ele se mover na diagonal direita e para cima e finalmente (x-k, y+k) ele se move na diagonal esquerda e para baixo. Com isso e um simples loop pra avancar o k, voce consegue calcular todas as posicoes para onde o bispo pode andar.
  18. Voces pretendem abrir um forum sobre Ruby/Ruby on Rails?? é uma linguagem que esta crescendo muito nos ultimos 5 anos e ainda não tem muita coisa em portugues.
  19. Voce esta se referindo a salvar opcoes que o usuario escolheu ou algo do genero? Porque ate onde eu sei, C não tem suporte a isso. Voce tem que gravar esses dados manualmente usando as funcoes fopen (para abrir um arquivo), fclose(para fechar o arquivo) e fwrite (para gravar os dados no arquivo), ambas da stdio.h . Depois para recuperar esses dados voce usaria fopen, fclose e fread (para ler os dados).
  20. O problema é que o VIM usa um listener... E os jogos usam direto listeners de teclado pra isso, mas é realmente dificil implementar um listener, porque depende da arquitetura do SO. Pra usar um listener, voce pode usar uma lib como a SDL ou GLUT. Eles possuem listeners já implementados. Talvez a ncurses tambem possua. Listener é um pouco chato de usar, mas resolve este tipo de problema. Pensei que voce estava falando de leitura a partir de um terminal...
  21. Jonas de Abreu

    Raiz Cúbica

    Kandrade, acho que voce entendeu errado a pergunta. A pergunta é sobre raiz cubica e não exponenciacao. Bom, a funcao cbrt() faz parte da biblioteca math.h e é padrão ANSI. O problema deve estar no momento da linkagem. Grazielle, voce esta especificando que a math.h deve ser linkada? no compilador que eu uso (GCC) voce faz isso acrescentando -lm nas opcoes do compilador. Uma outra coisa que pode estar ocorrendo é a implementacao da sua math.h não possuir essa funcao. Em Linux ou MacOS X isso é bem raro, mas já vi bastante em windows (não especificamente com essa funcao, mas com outras funcoes mais obscuras para trabalhar com long double). Em todo caso, é um bom exercicio voce mesma tentar implementa-la. Procure pela expansao de Taylor da funcao raiz cubica, encontre a recorrencia dos termos e implemente. No google voce provavelmente encontra a expansao e não vai precisar ficar horas calculando derivadas e fatorias para desenvolve-la a partir do zero. Kandrade, desculpe. Acabei de fazer um teste e vi que com o pow da pra calcular a raiz tambem. Acho que voce so se confundiu no expoente. Parti do seguinte principio: A raiz cubica de X é igual a X^(1/3). Portanto, o seguinte codigo calcula a raiz cubica de X: pow(x, 1.0/3.0);
  22. Jonas de Abreu

    Funções

    O Codeblocks é padrão ANSI? porque o inline faz parte da definicao desse padrão, embora varios outros compiladores tambem implementem. O ideal é voce olhar o manual do seu compilador e la voce ve as flags de otimizacao dele (acredito que todo compilador de C++ possua flags de otimizacao). Alguns voce nem precisa ativar, já vem ativas por padrão. Se voce quiser saber se ele esta fazendo o inlining das funcoes, use a ideia daquele exemplo que eu coloquei no post #2, mas faca um loop para ele usar a funcao de incremento umas 1000000 vezes. Com esse numero de incrementos, a diferenca entre uma funcao inline e uma não inline é bem visivel.
  23. Se for leitura a partir do terminal eu acho que não é possivel, pois somente quando o usuario aperta enter é que o que ele escreveu é mandado para o stdin que é de onde o seu programa le os caracteres. Voce pode tentar modificar isso no linux, mas não faco a minima ideia de como fazer isso.
  24. Jonas de Abreu

    Funções

    Ele funciona em um programa com qualquer numero de funcoes, mas voce precisa habilitar as opcoes de otimizacao do compilador (no caso do gcc/gpp/g++ -oN, sendo N 1, 2, 3, 4, 5 ou 6). A funcao dele é apenas acelerar o programa mesmo.
  25. Jonas de Abreu

    Funções

    Basicamente, inline é um modificador para otimizar o codigo. Ele funciona da seguinte forma: Para funcoes pequenas, ele ira pegar o corpo da funcao e colocar diretamente no lugar onde ela seria chamada. Para funcoes grandes, depende do compilador. alguns vao ignorar o inline, outros vao coloca-lo mesmo assim. Um exemplo: inline void incrementa(int &i){ i++; } int main(){ int i; incrementa(i); return 0; Depois de compilado, o codigo ficara como se tivesse sido escrito da seguinte forma: int main(){ int i; i++; return 0; } Na verdade, tem algumas diferencas pois ele deve abrir bloco e fazer algumas outras coisas para que funcione, mas a ideia é essa. Mais uma coisa: Se em algum lugar do codigo voce usar uma funcao inline como ponteiro de funcao, dependo do compilador ele pode descosiderar que ela é inline e usa-la como funcao normal. Se quiser mais informacoes sobre modificadores, de uma olhada nesse tutorial http://vidageek.net/2007/02/16/dia-c-modif...extensoes-gnuc/
×
×
  • Criar Novo...