Ir para conteúdo
Fórum Script Brasil

Rafael Schouery (VidaGeek)

Membros
  • Total de itens

    34
  • Registro em

  • Última visita

Tudo que Rafael Schouery (VidaGeek) postou

  1. No Windows o programa é fechado porque deu Segmentation Fault, ele apenas não avisa. Note que nem sempre que dá SegFault no Linux dá no Windows, mas isso é porque o Windows é ruim. Ele não protege a memória como deveria.
  2. Evite fazer rand()%n para qualquer n. Isso é pessimo, pois pega os bits menos significativos do numero. O ideal é fazer: (rand() / (RAND_MAX + 1.0))*n onde n é o primeiro valor que não entra na parada... Ou seja, (rand() / (RAND_MAX + 1.0))*15 gera numeros double entre [0,15) como você precisa de inteiros basta guardar num int para dar o cast...
  3. Mas para isso faltou um void entre public e Seg_Licao(). E não pode ter aquele super.... Talvez o que você esteja confundindo é a questão de construtores. Construtores tem que ter obrigatóriamente o nome da classe. Portanto Seg_Licao não é um nome válido para construtor. Ou você transforma ele em um método normal ou muda o nome para Prm_Licao e passa algum argumento, criando um construtor com assinatura diferente ...
  4. Deposi que você ver a questão do listener (que o NetBeans faz direto), basta você colocar neste clique do botão o seguinte conteúdo: JPanel panel = new JPanel(); getContentPane().add(panel,BorderLayout.CENTER); Mas existe alguns comentários a serem feitos... Este BorderLayout.CENTER é usado se você está usando o BorderLayout e queira colocar no centro (meio obvio não?), se você quer colocar em outro lugar ou está usando outro layout você vai precisar mudar isto. De uma olhada no initComponents(); que o netbeans gerou. Por lá você sabe como ele adiciona os objetos e dai você pode fazer igual.
  5. Acho que tem um pacote para NetBeans que você instala junto com o j2me e ele vem com alguns exemplos (ou pelo menos um exemplo) de jogo.
  6. Valeu pela dica! Vou dar uma olhada sim!
  7. basta abrir em um terminal DOS ou do Linux que esse tipo de coisa não acontece.
  8. Procure o Algorithms in C part 5 (do Sedgewick) na sua biblioteca, ele tem uma forma muito mais simples. A questão que o seu professor deve estar encanado é que este algoritmo usa uma busca muito sofisticada, enquanto que o método de achar fluxo máximo do Ford Fulkerson pode ser feito com uma simples busca em largura.
  9. B[5] = A[4][5]; pega apenas o último valor da coluna. Você precisa de um for que vá de 0 a 4 atribuindo a B, isso se você tem os valores mesmo. Se você tem o char '1', você pode converter para 1 (inteiro, não char) subtraindo o '0' ou usando o atoi (o que é um pouco mais ineficiente, creio eu).
  10. Aqui tem um problema: int codigo; ... scanf("%d", codigo); codigo não é ponteiro e você não passou o endereço dele para o scanf. e aqui tem outro aux[0].codigo = &codigo; aux[0].codigo = nome; não seria aux[0].nome = nome; Foi o que eu achei, mas se não der certo avise.
  11. Bom, listas estão em basicamente 4 categorias: A primeira, mais geral, é onde você guarda valores e acessa, remove e insere qualquer posição. Ela útil para muita coisa, como algoritmos de ordenação e busca. A segunda, é a pilha que pemite a remoção e a inserção apenas em uma ponta e possivelmente restringe o acesso a apenas essa ponta também. Ela é útil para recursão (todo algoritmo recursivo depende da pilha do sistema), busca em profundidade em grafos e backtrack (que não deixa de ser uma busca em grafos). A terceira é a fila, onde a inserção é em uma ponta e a remoção é na outra ponta e o acesso é possivelmente limitado a ponta de saida da fila. É como uma fila do banco, quem entra por último é acessado por último. Ela é útil para busca em largura em grafos, ou seja achar o menor caminho de um vértice ao outro num grafo simples ou direcionado, mas sem pesos nas arestas. A quarta é a fila dupla que permite a inserção e remoção em ambas as pontas. Agora pra que serve eu já não sei, acho que nunca usei uma dessas. Bibliografia Recomendada: Donald E. Knuth - The Art of Computer Programming Vol I Capitulo 2.2 Linear Lists que contém algumas imagens que mostra melhor os tipos de listas. Cormen et al - Introduction to Algorithms Cap 10.1 - Stacks ans queues pg 200
  12. Aqui está o código para C: clock_t t0, tf; double tempo_gasto; t0 = clock(); ... tf = clock(); tempo_gasto = ( (double) (tf - t0) ) / CLOCKS_PER_SEC; printf("Tempo gasto: %lf s\n", tempo_gasto); Mas dá para fazer no linux também com o comando time
  13. Olá, Estude sim, eu sugiro o livro do Deitel e Deitel: Java Como Programar. Ele explica desde o começo a linguagem e ensina coisas como UML também.
  14. Olá, Bom o Visual Basic é, na minha opinião, mais limitado do que o Java. Ele não é portavel, e portanto, tudo o que você fizer rodará só no Windows. Java, por outro lado, roda em Windows, Linux, Celulares (os joguinhos são feitos em Java), Palm (VB só roda em PocketPC), entre outros. Na verdade qualquer lugar que rode uma maquina virtual java pode rodar uma aplicação java. Além disso, ela é uma linguagem muito bem extendida. Tudo o que você precisar em Java já deve existir. Por outro lado, Java pode ser bem mais dificil de aprender, não a sintaxe mas conceitos como Padrões de Projeto. Eu diria que se você não sabe nada de programação não sai perdendo em aprender VB, dá até para tentar achar um emprego depois. Mas se você quiser ser um programador mais refinado, após o curso comece a dar uma olhada em C e Java. Boa sorte com o aprendizado!
  15. Bom, o JFrame é uma janela, então ele é útil para a janela principal do seu programa e para outras janelas, como o sobre... por exemplo. Já o JPanel é um recipiente de objetos visuais. Portanto um JFrame pode ter vários JPanel em várias hierarquias diferentes. Ele é muito útil para agrupar objetos, e então podemos por exemplo dar um setVisible(false) e tudo o que tinha dentro dele some. Existem outras formas de usar os dois, mas acho que deu para exemplificar um pouco.
  16. Uma sugestão: compile usando o gcc e as opções de alerta de erros, assim: gcc aaa.c -Wall -ansi -pedantic -o aaa O Wall é de Warning All, o ANSI é para usar o padrão mais aceito do C (recomendado), e o pedantic é para ele ser chato com os erros e avisar coisas como if(a = 1) quando deveria ser if(a == 1) Sugiro que uso o gcc mesmo, ele é muito bom. O pessoal da minha facul (incluindo eu e o jonas, o moderador) não usamos IDEs para C, eu uso o Emacs e o Jonas o Gvim, ambos ótimos editores de source-code.
  17. Basta manter tres variaveis separadas e alterar o i como precisa,por exemplo dentro do for: { soma1 += i; soma2 += i*i; soma3 += i*i*i; } Não esqueça de inicializar as variaveis
  18. A forma mais simples deve ser gerar todos os primos até n. Então se n for primo, ele não pode ser decomposto. Se n não for primo, então você precisa fazer o seguinte: (em pseudo codigo) n' := n para cada primo p menor que raiz de n faça enquanto n' mod p = 0 imprima "p " n' := n' / p Falta só achar os numeros primos até raiz de n. Para isso basta criar a lista começando com dois e percorrer todos os inteiros impares vendo se eles podem ser decompostos (praticamente pelo mesmo algoritmo acima), caso não tenha fatores primos, ele próprio é primo.
  19. Olá, aqui vai alguma ajuda: BufferedReader in =new BufferedReader(f); Esta é uma classe que ajuda na leitura, para que você não tenha que ler caracter por caracter. Ela mantem um buffer, guardando blocos de itens lidos, na proxima linha você vai entender pra que. linha =in.readLine(); Aqui, você manda o BufferedReader ler uma linha inteira do arquivo (ou seja, até um caracter \n) e atribui a linha. Espero ter ajudado, Abraços
  20. Não sei se entendi direito o que você está dizendo... Você quer uma estrutura igual a do Windows Explorer, que um item tem vários sub-itens que podem ter outros sub-itens certo? Se for isso, de uma olhada no JTree que faz isso automaticamente. O que sua aplicação precisa fazer?
  21. Sim... Deve ser problema do PHP que deve remover este tipo de coisa... Que estranho... Desculpa!
  22. No livro Numerical Linear Algebra (Lloyd N. Trefethen e David Bau, III) este tipo de assunto é abordado. O Escalonamento é algo conhecido como Eliminação de Gauss (Gaussin Elimation - Lecture 20 do livro) ou fatoração LU (multiplacação de uma matriz triangular inferior esquerda e outra tringular superior direita). No final da Lecture 20 ele explica como este método pode levar a erros absurdos por causa da representação de numeros de ponto flutuante no computador. O jeito é aplicar uma pivotação (Lecture 21), o que é bem natural para resolver sistemas de equação linear. A ideia é a seguinte: * Ache qual linha tem o maior valor na primeira coluna (pivô). * Troque esta linha com a primeira (ou seja copie todos os valores) * Remova um multiplo desta nova primeira linha de todas as outras linhas (ou seja, exceto a primeira) de forma que zere a primeira entrada de cada linha * Resolva recursivamente para a matriz n-1xm-1 Cuidado com a base da recursão, se n-1 ou m-1 forem zero não há mais nada a fazer. Sugiro fortemente dar uma olhada nesse livro para ficar mais claro o que estou dizendo.
  23. Sussa! Mas de uma olhada no gcc quando tiver um tempo... Ele ajuda muito para este e outros tipos de detalhes!
  24. Uma outra opção que me ocorreu agora é ordenação por contagem: faça um vetor de tamanho 128, deixei tudo como zero (lembre-se que o C não faz isso pra você). Agora percorra a string e para cada caracter encontrado adicione um na posição relativa desse caracter no vetor. Ou seja, o a vai na posição 97, o b na posição 98 etc. A forma mais fácil de fazer isso é acessar o vetor indexado pelo caracter, algo do tipo: vetor[string[i]]++; onde i é a variável que você usa para percorrer sua string. Isto te dará um histograma dos caracteres. Agora basta percorrer o vetor, e imprimir cada caracter para o qual exista um valor diferente de zero essa n vezes, algo assim: for(i = 0; i < 128; i++) { for(j = vetor[i]; j >= 0; j--) { printf("%c",i); } } printf("\n"); Alguns detalhes: Isso não funciona para caracters acentuados, você precisaria de um unsigned char, um vetor de 256 e fazer a leitura corretamente. Se você souber que são apenas letras, você pode diminuir o tamanho do vetor, mas precisará fazer algumas contas para acessar a posição corretamente. Esta é a forma mais rápida que existe de ordenação, pois olha só uma vez para cada elemento.
  25. Se você tiver certeza que sua linha é bem formatada você pode fazer o seguinte para a leitura: #define MAXL 174 /*Numero máximo de linhas do arquivo*/ #define MAXC 20 /*Numero maximo de caracters numa string*/ . . . char w1[MAXL][MAXC], w2[MAXL][MAXC], w3[MAXL][MAXC], data[MAXC]; . . . fscanf(arquivo, "%s %s %s %s",w1[i], w2[i], w3[i], data). fprintf(s1, "%s\n",w1[i]); fprintf(s2, "%s\n",w2[i]); fprintf(s3, "%s\n",w3[i]); . . . Não esqueça de colocar o bloco de código dentro de um loop que le cada linha, lembrando que i indica a sua linha atual.
×
×
  • Criar Novo...