Ir para conteúdo
Fórum Script Brasil

roccoC/C++

Membros
  • Total de itens

    496
  • Registro em

  • Última visita

Tudo que roccoC/C++ postou

  1. Comparar dois vetores de inteiros e procurar por elementos repetidos e numerar o total de ocorrências, é a finalidade deste programa, que pode ser alterado, mudando os vetores pré - definidos para vetores com entrada de dados com scanf(); O código é indicado a iniciantes em C, que com poucas modificações pode ser adaptado, foi criado no eclipse onde rodou sem nenhum warnings. Veja abaixo uma imagem do programa em execução: http://2.bp.blogspot.com/-nk8q4opPdCE/VTOaym-VZLI/AAAAAAAACNw/WpFlcOETVPg/s1600/vetcm.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/04/elementos-comuns-entre-dois-vetores.html
  2. Em algumas ocasiões um programa em C pode exigir o uso de uma variável global, que como sabemos estas variáveis podem ser usadas por todo o programa, em qualquer bloco de código. Estas variáveis estão áptas a manter seus valores enquanto o programa estiver sendo executado. Para criar uma variável global, basta declará-la fora de todas as funções do programa, de preferência no início, sendo que sua declaração pode ser feita antes da função main(); desde que não seja usada em alguma função do programa. Devemos evitar que o nome de uma variável global seja o mesmo que de uma local, evitando assim conflitos entre as duas onde a referência se dará a variável local anulando os efeitos da global. Já que variáveis globais ocupam espaços na memória durante todo tempo em que o programa está em execução, elas devem ser evitadas, isto torna um desperdício de memória inútil, procure sempre substituir por uma local se possível. Más o prograama aqui proposto traz praticamente uma novidade, inicializei um vetor de ponteiro para char na função copia_valores ( ); e fiz a cópia no vetor de ponteiro char *str [ 10 ]; que foi declarado como global, fiz o mesmo com o vetor de inteiro Vet [ 10 ]; também declarado nesta mesma função, fazendo a cópia no vetor global de inteiros, de nome Vetor [ 10 ]. Note que o procedimento normal seria passá-los como parâmetros para a função repr_matriz ( ); onde serão imprimidos por printf(); esta alternativa é bem válida principalmente quando já temos uma função com vários parâmetros e precisamos passar outros valores, vindo tornar o código mais complicado. Veja abaixo uma imagem do programa em execução: http://2.bp.blogspot.com/-ZhytnC43g3c/VTKdskEj3JI/AAAAAAAACNc/oHlrQhRLc5s/s1600/glob.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/04/variaveis-globais.html
  3. Quando precisamos agrupar elementos de um mesmo tipo numa variável, recorremos aos vetores, que em C são matrizes unidimensionais.Um vetor também é uma estrutura de dados, e é muito utilizado no C, devido sua facilidade de uso e eficiência quando usado adequadamente. Quando declaramos um vetor como no exemplo abaixo: tipo nome_da_variavel_vetor [ total de elementos ]; O C reserva a quantidade de memória suficiente para armazenar os elementos em total de elementos. Como nosso vetor é de tamanho 15, bastou multiplicar 4 x 15, pra saber que nosso vetor ocupa 60 bytes de memória de maneira contígua. No C a contagem começa sempre em zero, sendo assim, os dados serão armazenados em posições de 0 14, e que podem ser acessados independemente um dos outros. Más no programa proposto aqui, nosso vetor só pode ser preenchido dentro de limitações que coloquei, para mostrar na prática aos iniciante como proceder em situações em que sejam exigidas estas limitações. O programa recusa números abaixo de 5 e números acima de 15, recusa também caracteres e números que não sejam inteiros. Observe as duas funções que criei para agir auxiliando a entrada de dados barrando estas condições. Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-6x3i6PKx464/VTJb8SmQL0I/AAAAAAAACMc/yu-PphV1zrI/s1600/vtrv.PNG http://4.bp.blogspot.com/-Zsa2Ttte98c/VTJb9JEYr8I/AAAAAAAACMs/Lrk6YMRqTCs/s1600/vts.PNG http://3.bp.blogspot.com/-iJzK-XLFTXc/VTJb8UMf4zI/AAAAAAAACMg/YF72eCTwxAM/s1600/vtst.PNG http://1.bp.blogspot.com/-CILlh37ujKM/VTJb99prUSI/AAAAAAAACM0/Wo4UpyZheQo/s1600/vttox.PNG http://4.bp.blogspot.com/-nY5kOQnQ5VU/VTJb9lNAQII/AAAAAAAACMw/dhT0nKSiNy0/s1600/vttu.PNG http://3.bp.blogspot.com/-xF4Ga9pJ9NY/VTJb_jiWGeI/AAAAAAAACNI/eXaIGWvYx0s/s1600/vttz.PNG http://2.bp.blogspot.com/-6nRTGh8fmvQ/VTJb_EXkQ5I/AAAAAAAACNE/PBQ8uVmQKmI/s1600/vtty.PNG Veja abaixo o código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/04/vetor-sem-repeticoes.html
  4. Isto é fácil de se fazer usando vetores, más não sei se seu professor permite o uso, neste exercício.
  5. Olá! dê uma olhada se são estes os resultados que você espera do programa. http://1.bp.blogspot.com/-ceOMaepB3Xw/VSrqVin-a4I/AAAAAAAACMI/-3l7kSHUtqY/s1600/eclipse.PNG
  6. Vou te passar um link abaixo, pra você dá uma olhada e vê se isto te ajuda a entender como fazer http://codigosfontes-ccplus-plus.blogspot.com.br/2013/12/conjunto-intersecao-são-os-elementos.html
  7. Entendendo claramente o que é variável, que não passa de uma parte de memória onde se armazena valores de um determinado tipo, podemos dizer que ponteiro também é uma variável que carrega um endereço de uma posição de outra variável. Quando uma variável possui o endereço de outra, dizemos em C que a variável está apontando para outra. Para declarar um ponteiro escolhemos primeiro o tipo, adequado permitido e em seguida damos um nome precedendo de *. Ex: tipo *nome_da_variavel; Vale lembrar que podemos criar ponteiros para qualquer tipo aceito no C, e que são usados só dois operadores especiais, que são o * e o &. O operador que devolve o endereço de memória é o & que é considerado um operador unário, isto é, trabalha sobre uma variável para modificar, ou manter um determinado valor. A matriz de ponteiro static char *Mat_Mesg [ ] = {}; com a palavra reservada static declarada local, utiliza a passagem de parâmetros, observe o uso do apontador e veja que uma cópia fiel é passada para a função Sub_Titulos ( int x, char *Mat_Mesg [ ] ); De onde vem as chamadas das mensagens de interação com o usuário do programa. Em outras funções que também receberam parâmetros forcei o uso de ponteiros, onde foram obrigatoriamente usados para um bom desempenho do programa. A função Sorteia_Mega_Sena( int *A ); é a mais importante, é nela onde são gerados os números aleatórios dentro de uma faixa estreita, entre 1 e 60, fiquei muitas horas empenhados nesta função porque os valores se repetiam, não foi fácil fazer isto que parece ser tão simples. A lógica pra resolver isto foi trabalhar com estas repetições, anulando a sequência e gerando outra, isto é feito automaticamente pelo programa, e duvido que alguém perceba que houve repetições, porque tudo acontece muito rápido. Fica bem claro que é exigido um bom conhecimento de ponteiros e alocação dinâmica para entender este código, portanto não é indicado a quem está iniciando agora. Veja abaixo imagens do programa em execução: http://3.bp.blogspot.com/-Z7isn1X9Lz4/VRbRSp3_fMI/AAAAAAAACKc/SWJVBhIoDdQ/s1600/me_g.PNG http://3.bp.blogspot.com/-fQGwT6mN3rs/VRbRTuzuB3I/AAAAAAAACKo/LM2epW12mVo/s1600/meg.PNG http://3.bp.blogspot.com/-hegvJGS9K-Y/VRbRTaGCEzI/AAAAAAAACKk/3dkyLjc3ius/s1600/megs.PNG http://3.bp.blogspot.com/-09QPg2ecJ9A/VRbRUnc4hKI/AAAAAAAACK0/5lcwKx_NvKk/s1600/megsn.PNG http://3.bp.blogspot.com/-EesfgC5Nonc/VRbRV6GsQGI/AAAAAAAACLA/YCmxIzZJhoU/s1600/megso.PNG http://1.bp.blogspot.com/-mzW8VCXK_ww/VRbRVga3P5I/AAAAAAAACK8/0RoKuWE0yiU/s1600/megsp.PNG http://3.bp.blogspot.com/-vkZVAL-i394/VRbRWecWS7I/AAAAAAAACLM/vTc8FH1KwpQ/s1600/sen.PNG http://3.bp.blogspot.com/-hGAIlbB_Fm8/VRbRZS8GPzI/AAAAAAAACLY/KRydd30bgTM/s1600/sen_me.PNG http://2.bp.blogspot.com/-fxJjjmJQEK8/VRbRY_39SbI/AAAAAAAACLU/Sw4Li2wS_Lw/s1600/sen_meg.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/programa-mega-sena_28.html
  8. Assim como o comando goto, o comando return deve ser limitado, evitando complicações no programa, ou até mesmo funcionamento duvidoso, isto quando um programa possui funções mais complicadas. neste código limitei o comando return em um só na função int Comp_Caractere ( int a, int b ); O comando return provoca um interrompimento imediato da função executada retornando um valor para a função onde foi chamado e prosseguindo com a execução. O programa está ápto a comparar dois vetores de caracteres dinâmicos que são preenchidos por entradas de dados com scanf(); desde o seu tamanho até as posições de cada um. Veja abaixo imagens do programa em execução: http://1.bp.blogspot.com/-8qdT-yZYPMM/VQDHeBLzb-I/AAAAAAAACHs/OmDQvnMU4No/s1600/carcp.PNG http://1.bp.blogspot.com/-F3JbJp8OsRk/VQDHeW-h13I/AAAAAAAACH0/ocNW0q-ppio/s1600/copcr.PNG http://1.bp.blogspot.com/-GaCx-3wQgPE/VQDHeEbkLFI/AAAAAAAACHw/YU-a_ZyVyFk/s1600/copcy.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/comparando-dois-vetores-de-caracteres.html
  9. O C nos dá amplas possibilidades de criar e utilizar matrizes com mais de duas dimensões. Sinceramente não sei o limite exato das dimensões suportadas, más de uma coisa sei, matrizes de três ou mais dimensões não são recomendadas em uso estático devido à grande quantidade de memória que elas consomem. Para calcular o consumo de memória de sua matriz, basta multiplicar o número de linhas por colunas vêzes o total de bytes do tipo. Aqui no meu computador um inteiro vale 4 bytes, como a matriz apresentada é tridimensional, com tamanhos de 4, o consumo total ficou em 256 bytes. Cabe ao programador em C optar por alocar dinamicamente matrizes multidimensionais acima de duas dimensões, isto traz melhores desempenho para seus programas em C. O exemplo aqui proposto imprime uma matriz tridimensional, e ainda permite uma precisa pesquisa pelos elementos contidos. Veja abaixo imagens do programa em execução: http://3.bp.blogspot.com/-W6lKHNDLaiU/VO5lSELigaI/AAAAAAAACDA/p9QbyxZB8qM/s1600/matr.PNG http://1.bp.blogspot.com/-onvULicKJdE/VO5lUUpcS7I/AAAAAAAACDM/QYVKY9LsrbA/s1600/matt.PNG http://3.bp.blogspot.com/-AHfsvRwO5tw/VO5lUbWRQgI/AAAAAAAACDI/jB7xt7TkjIQ/s1600/mattr.PNG http://3.bp.blogspot.com/-g0c2_kZzKW0/VO5lXqlganI/AAAAAAAACDY/EaAGEF8WITY/s1600/mattt.PNG http://1.bp.blogspot.com/-WTX0kF_1GUc/VO5lmE1EjlI/AAAAAAAACDg/vQdcqhcb6vI/s1600/matttriz.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/matriz-tridimensional-estatica.html
  10. Bons programadores em C tem pleno domínio em ponteiros, e isto é o que diferencia um bom programador em linguagem C, porque o C é altamente dependente de ponteiros. O C possui um recurso complexo e avançado onde denomina-se ponteiro para função, que na realidade consiste em passar uma função como parâmetro para outra. Para criar um ponteiro para função espelhe-se no exemplo abaixo: int ( *exemplo ) ();Veja que é usado parênteses nos nomes das variáveis, e é bem parecido com a declaração de função que retorna ponteiro, só precisaria retirar os parênteses. Sabemos que função não é variável, más o C reserva uma posição plena na memória onde permite o recebimento de um ponteiro, sendo assim um uso justo do ponteiro chamando uma função específica. Poderia falar mais sobre o assunto más deixaria o tópico enfadonho e complicado, por isso nada melhor que entrarmos num ótimo exemplo para mostrar como a coisa funciona. Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-tOIhgx331FU/VPuKY_Atd2I/AAAAAAAACGs/dFGEgI2VUhY/s1600/funcp.PNG http://4.bp.blogspot.com/-Xd4tHpCoOxU/VPuKY-uRZ3I/AAAAAAAACGw/lS0wzjPb5fw/s1600/funcpt.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/ponteiro-para-funcao.html
  11. Assim como o comando goto, o comando return deve ser limitado, evitando complicações no programa, ou até mesmo funcionamento duvidoso, isto quando um programa possui funções mais complicadas. Neste código limitei o comando return em um só na função int Comp_Num ( int a, int b ); O comando return provoca um interrompimento imediato da função executada retornando um valor para a função onde foi chamado e prosseguindo com a execução. O programa está ápto a comparar dois vetores dinâmicos que são preenchidos por entradas de dados com scanf(); desde o seu tamanho até as posições de cada um. Veja abaixo imagens do programa em execução: http://3.bp.blogspot.com/-RjpigS7aLZ4/VP4Q8jlrmAI/AAAAAAAACHM/VTnjWA7roOs/s1600/cmpv.PNG http://3.bp.blogspot.com/-PxZTRlCi-sM/VP4Q8YZm8xI/AAAAAAAACHI/87BndXDqoNI/s1600/cmpvt.PNG http://2.bp.blogspot.com/-4mk3KwFo_v0/VP4Q8sULPSI/AAAAAAAACHQ/0XmaJ94YGj4/s1600/cmpvtrs.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/comparando-dois-vetores.html
  12. Da mesma forma que lemos dados formatados com scanf(); também é possível fazer o mesmo com fscanf(); fscanf( );É para o arquivo o que scanf é para o console, esta função também pertence ao arquivo de cabeçalho stdio.h. A sintaxe da função fscanf é: int fscanf ( FILE *arq, variável ); Bons programadores evitam o uso desta função em seus programas, alegando que por elas trabalharem com dados ASCII e não binários ocasiona perda de desempenho e de apresentação de caracteres indesejados na saída em alguns casos, coisa que eu ainda não contemplei. Neste código mostro como usar fscanf();para lê uma matriz quadrada de inteiros dimensionada em 10 x 10, ainda no código coloquei um bloco permitindo uma eficiente pesquisa nos elementos inteiros do arquivo. Salve os números no bloco comentado como matriz.txt, e coloque do lado do executável para testes. Veja abaixo imagens do programa em execução: http://3.bp.blogspot.com/-d5rn602ZEAc/VPM-n13QgWI/AAAAAAAACFU/Cq9EhsX8JUM/s1600/arqatp.PNG http://1.bp.blogspot.com/-tx8NFbs3fjk/VPM-niHPhPI/AAAAAAAACFQ/d51yLJiRhxE/s1600/arqmat.PNG http://1.bp.blogspot.com/-k0E0OlZSUbw/VPM-oKPs1TI/AAAAAAAACFY/xM1j83GfBaU/s1600/arqmatp.PNG http://4.bp.blogspot.com/-LixBhohBj_0/VPM-oYQWpEI/AAAAAAAACFc/gA63wH4CATU/s1600/arqmtp.PNG http://3.bp.blogspot.com/-ZMnnVrPcvCQ/VPM-vMEP14I/AAAAAAAACFw/30ykk4mbC-4/s1600/armatx.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/arquivo-pesquisa-em-matriz-quadrada.html
  13. É válido lembrar que ponteiro é uma variável que contém um endereço de memória. Também quero lembrar que funções em algumas vêzes podem retornar um valor para a função main(); fica bem claro que o valor retornado é do tipo declarado no protótipo da função. Programas mais complexos em C algumas vêzes nessecitam de funções que retornam um ponteiro, isto é, um endereço de memória. Criar uma função que retorna um ponteiro em C é muito fácil, basta colocar um asterisco antes do nome da função. No exemplo mostrado aqui, temos a função *primo_Nprimo(); que como você ver retorna um ponteiro que será usado para uma alteração numa posição específica do vetor original. Esta função é capaz de mostrar números primos e não primos contidos no vetor. Veja abaixo uma imagem do programa em execução: http://4.bp.blogspot.com/-hQKYj0Tsp28/VPpAivZ5KlI/AAAAAAAACGY/K9rxEf5DPAU/s1600/primNprim.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/03/retornando-ponteiro.html
  14. Matriz pode ser definida como uma variável capaz de guardar diversos valores porém do mesmo tipo.Matrizes estáticas são sem dúvidas mais fácil de usar e de entender, más se você não especificar o tamanho correto, provavelmente haverá desperdício de memória, e isto num computador de pouca memória pode ser um problema. Quando não sabemos o tamanho de que precisamos recorremos a uma alocação dinâmica, que recebe memória do computador em tempo de execução, ao contrário de variáveis globais que são alocadas na hora da compilação, ou locais que usam a pilha. Quando alocamos memória dinamicamente usando as funções do C, ela é obtida de áreas de memórias livres que se encontra na armazenagem real do computador, e a pilha. Neste código aloquei memória usando a função malloc(); e liberei com free(); ambas da biblioteca stdlib.h, más o C possui outras funções de alocação dinâmica, porém para a demonstração deste exemplo não se fez necessárias. Veja abaixo imagens do programa em execução: http://1.bp.blogspot.com/-48qAqCQQdfk/VO-ojAnYyAI/AAAAAAAACD4/VePXPlhJQWQ/s1600/matdin.PNG http://4.bp.blogspot.com/-XNjDD0vZ1XY/VO-oistTDXI/AAAAAAAACD0/-5aDtvlbkDo/s1600/mattdin.PNG http://3.bp.blogspot.com/-FvPiUoO2RwE/VO-ojfY9wlI/AAAAAAAACEA/4T_UKfleOUI/s1600/mattdina.PNG http://1.bp.blogspot.com/-ek7w8yM6H4M/VO-olGOrVSI/AAAAAAAACEM/lwYnG-2Ac_k/s1600/mattdna.PNG http://2.bp.blogspot.com/-c78zB6rjKT0/VO-olfVWMfI/AAAAAAAACEQ/Pb2CtcgLPEU/s1600/mttdna.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/matriz-tridimensional-dinamica.html
  15. Há sem dúvidas grande relação entre matrizes e ponteiros em C, e o interessante é que o endereço da primeira posição de uma matriz é um ponteiro. Sabemos que um ponteiro é uma variável que guarda um endereço de memória, e quase não conseguimos programar em C sem usar ponteiros, a não ser que os programas sejam simples demais. Na realidade um ponteiro pode ser indexado como se fosse uma matriz, porque o C trata matrizes como ponteiros apontando para o primeiro elemento da matriz. Neste código mostro um excelente exemplo de como indexar ponteiros como se fosse matriz. Veja abaixo imagens do programa em execução: http://4.bp.blogspot.com/-HGIi5_Zl-MY/VOoCKK0uHuI/AAAAAAAACCo/-fGXcNy3t1o/s1600/indp.PNG http://4.bp.blogspot.com/-z5JST_c_L4M/VOoCKFTpOCI/AAAAAAAACCs/itNRQqF9EqM/s1600/indpt.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/indexando-ponteiros.html
  16. Informando ao compilador uma dimensão, a da direita para ser mais preciso, numa matriz não-dimensionada, a dimensão da esquerda pode ficar vazia ficando por conta do compilador indexar a matriz de forma correta. É perfeitamente possível alterar os valores da dimensão da direita sem que prejudique as dimensões da matriz. Neste exemplo trago um excelente exemplo de manipulação de matriz não dimensionada, o programa imprime a matriz e em seguida pede que se escolha uma linha e uma coluna, dentro de restrições que foram aplicadas por mim mesmo.Feito tudo certo, o programa pede que se escolha um número para introduzir na posição escolhida em linhas x colunas, más se engana o usuário que tentar repetir o mesmo número que se encontra na posição, o programa não aceita. Veja abaixo imagens do programa em execução: http://3.bp.blogspot.com/-htWdqlTzlME/VOjtm3zRDRI/AAAAAAAACCI/DxKyiypCltk/s1600/matns.PNG http://4.bp.blogspot.com/-W64N57e27C4/VOjtleTn4mI/AAAAAAAACB0/YnMjocc8qm8/s1600/mater.PNG http://1.bp.blogspot.com/-ONtUKSSidpQ/VOjtluKN4cI/AAAAAAAACB8/Qs9_lxErir4/s1600/matn.PNG http://2.bp.blogspot.com/--GOPpsilRas/VOjtl56yp3I/AAAAAAAACCA/YX6C4O1ikMA/s1600/matnda.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/matriz-não-dimensionada_21.html
  17. Podemos declarar um ponteiro como vetor ou matriz multidimensional E se quizermos armazenar ou trabalhar com endereços de memória recorremos aos ponteiros. O símbolo * é uma referência ao compilador para que ele armazene numa variável um endereço de memória. Este programa foi criado para a demonstração do funcionamento de uma matriz de ponteiro. O usuário pode escolher uma das linhas da matriz respeitando as limitações pois o programa está preparado para rejeitar que se escolha por exemplo um número de linha acima do limite ou inferior a zero, e o que chama mais a atenção é na escolha de uma posição dentro da linha escolhida, o programa avisa se o usuáruio escolher um espaço dentro da linha ou se for escolhido a última posição que é o '\0'. http://3.bp.blogspot.com/-e3dim18_MKw/VOOpAAxYZyI/AAAAAAAACA8/ufskRWbcDno/s1600/mate.PNG http://2.bp.blogspot.com/-MhLWTnMRFi4/VOOpKJGJg7I/AAAAAAAACBE/IKLO0af1jzk/s1600/maptr.PNG http://3.bp.blogspot.com/-S_zcduBntFc/VOOpQKDPRKI/AAAAAAAACBU/ymBGLGPQitE/s1600/matpt.PNG http://4.bp.blogspot.com/-MqV3kSBcL8Q/VOOpNtenvWI/AAAAAAAACBM/6MsjI6z8YEs/s1600/matptri.PNG http://1.bp.blogspot.com/-evq9_l1wZBk/VOOpQeevQ3I/AAAAAAAACBY/AbypKPFjEQc/s1600/matptrio.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/matriz-de-ponteiro.html
  18. Matriz transposta é uma matriz invertida, as linhas da matriz original, passarão a ser as colunas da matriz transposta, e as colunas da matriz original passarão a ser as linhas da matriz transposta. Se você já domina matrizes não terá dificuldades em entender o que é matriz transposta. Na verdade, aproveitei o último código que postei e fiz poucas alterações para chegar nestes ótimos resutados. Veja abaixo imagens do programa em execução: http://4.bp.blogspot.com/-5UYzdgaMnS0/VN0hmA4lLEI/AAAAAAAACAg/4Xzw-r6X8rg/s1600/mattr.PNG http://2.bp.blogspot.com/-kcJ7T9dekTI/VN0hmBM5uII/AAAAAAAACAk/H7AxTQ2-8mo/s1600/mattrs.PNG http://3.bp.blogspot.com/-bHSJbpBP21U/VN0hmRl8cGI/AAAAAAAACAo/bCp_-5kg7LA/s1600/mattrsta.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/matriz-transposta.html
  19. Se você tentou gerar uma sequência de números inteiros aleatórios e se decepcionou por causa das repetições que surgiram, seu problema acaba com este exemplo que trago agora. Três pequenos blocos de códigos foram suficientes pra fazer nosso programa, onde no primeiro bloco geramos e adicionamos os números nas linhas e colunas de uma matriz, já no segundo bloco de código, com os números já gerados, usamos a famosa função rand(); que atua como embaralhador dos números gerados no primeiro bloco. Já no terceiro, que é o último bloco, imprimimos nossa matriz, onde previamente, colhemos o total de linhas e de colunas por uma entrada de dados com scanf(); e finalmente o total de elementos gerados são contados e o programa encerra sua execução agradecendo o uso. Veja abaixo imagens do programa em execução: Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/numeros-aleatorios-em-matriz-sem.html
  20. Em eletrônica Os filtros passa-faixa ou passa-banda,filtros passa-baixas e passa-altas são largamente usados em circuitos onde determinadas frequências devem ser rejeitadas, passando apenas só mesmo a frequência ideal. Fórmulas matemáticas eram usadas para se obter um cálculo exato das frequências exigidas, onde envolvia a bitola do fio esmaltado, o número de espiras num bastão de ferrite, onde o tamanho e o diâmetro também fazia parte dos cálculos. Saudades deste tempo dos transmissores e receptores didáticos que agente montava e via funcionar. O código aqui proposto atua como um filtro impedindo que caracteres que não seja "f" ou "m" possam passar, existe várias formas de fazer isto, e este é um método fácil e seguro. Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-ysRZwbkiyPE/VNX1xWzwp2I/AAAAAAAAB_E/2bdtmnVZw9Q/s1600/fitc.PNG http://2.bp.blogspot.com/-UkjPTpJp4_A/VNX1wIKYjhI/AAAAAAAAB-4/bXAoJYBuPPc/s1600/fitcr.PNG http://1.bp.blogspot.com/-tngZWkev3jA/VNX1w-lc22I/AAAAAAAAB_A/5ujKSwIgWk8/s1600/fitcrt.PNG http://1.bp.blogspot.com/-lGkwdi__5yc/VNX1x1ajtuI/AAAAAAAAB_M/rx6jxTvgOPg/s1600/fitcrtr.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/em-eletronica-os-filtros-passa-faixa-ou.html
  21. Na biblioteca stdilb.h que é uma das bibliotecas padrão do C, encontramos a função rand(); para aplicações onde um valor randômico é exigido, e isto é um procedimento muito normal em programação. Esta função geralmente trabalha com valores pré-definidos limitados por uma constante que se encontra também na mesma biblioteca. Más o que ocorreu, foi que os valores declarados nas matrizes de string sempre se repetiam, eram sempre iguais.Notei então depois de algumas pesquisa que a função rand(); assume um valor real, forçando sempre a mesma sequência serem apresentadas. Com muita paciência recorri a função srand(); que trabalha dando um ponta-pé na função rand(); injetando um determinado valor diferente a cada execução do programa. Este valor foi obtido usando o comando time da biblioteca time.h. Para usar a função srand(); a seguinte declaração se fez necessária: srand ( time ( NULL ) ); Este programa forma nomes com sobrenomes, em um giro automático comandado por um do while, com os tempos determinados pela função Sleep(); Quando o nome "Sandro" é encontrado, a função strcmp(); barra a execução e imprime a mensagem "fim do programa!!". Neste código passei os valores das matrizes de string como parâmetros na função Nome_sobrenome ( char *No_me, char *Sobre_Nomes ); e esta por sua vez retorna os endereços para a função main(); Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-dD9vMic1uEw/VNOZBX7SElI/AAAAAAAAB-I/M9qG8tPuxIA/s1600/aaa.PNG http://3.bp.blogspot.com/-AGPMUJSCU74/VNOZCG_OPaI/AAAAAAAAB-Q/GRXt9CZr7x8/s1600/sran.PNG http://1.bp.blogspot.com/-JSzstVWA5sg/VNOZCHsEVTI/AAAAAAAAB-U/tlMGhSRq3Gg/s1600/srand.PNG http://2.bp.blogspot.com/-nVBnV81V7DE/VNOZCgssNHI/AAAAAAAAB-c/0RQj7M9H8H8/s1600/srn.PNG http://4.bp.blogspot.com/-bhwBvkaT8KU/VNOZDFDuWQI/AAAAAAAAB-k/lK9WtrZtW6A/s1600/srnd.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/02/funcao-rand-e-srand.html
  22. roccoC/C++

    FATORIAL EM STRUCT

    Instale a biblioteca conio2.h, que funciona normalmente. Abraço
  23. Declarei uma variável ponteiro para ponteiro do tipo char de nome char **p_t; como membro da estrutura "ssss". Também declarei na função principal duas estruturas xxxx e yyyy. Colhemos do teclado uma frase e guardamos na variável char *str; Note que scanf(); trabalha com a entrada formatada impedindo que passe acima de 11 caracteres contando com o espaço. O membro ponteiro para ponteiro **p_t; de ssss está recebendo o endereço de memória da vaviável que aponta para ela. Quando copiamos a estrutura xxxx em yyyy, o valor do membro ponteiro para ponteiro em xxxx também é copiado para o membro de yyyy. Sendo assim, os membros apontarão para o mesmo endereço de memória, e para a mesma variável. A prova disto é que se alterarmos o valor que aponta pelo membro de uma das duas estruturas. elas passarão a receber o mesmo valor, o que foi alterado. Veja abaixo imagens do programa em execução: http://1.bp.blogspot.com/-mgtjwTrRwZw/VM0GzJ44b5I/AAAAAAAAB9Y/F1NcLQc0QjA/s1600/stalt.PNG http://4.bp.blogspot.com/-ktElbnWYjZA/VM0GzqDPPGI/AAAAAAAAB9g/b7vNwZYZgVA/s1600/staltv.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/01/struct-atribuindo-e-alterando-valor.html
  24. Em linguagem C somos obrigados a usar apontadores para passagem de parâmetros por valor.Neste exemplo, Os valores que estão guardados no endereço da estrutura são copiados e passados por parâmetros para função. A função Vetor_struct ( Imp_Par *a ); recebe as cópias dos valores que foram declarados no vetor de struct e imprime com printf(); Já a função Epar_Impar ( Imp_Par *a ); está encarregada de separar os números ímpares dos pares, porque também recebe uma cópia fiel dos mesmos valores do vetor de struct. Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-mmqyA8xILI8/VMv7KjhIU-I/AAAAAAAAB9A/8gzaiNnz3o0/s1600/strp.PNG http://3.bp.blogspot.com/-Wm_slVjFKOQ/VMv7KlXjd-I/AAAAAAAAB9E/GIqp0ERzc2I/s1600/strps.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/01/struct-copiando-e-passando-valores-de.html
  25. À prática de se multiplicar um número por todos os seus antecessores, denomina-se "fatorial". Definindo o fatorial de 3 representa-se por 3! e lê-se 3 fatorial. Veja abaixo o fatorial de alguns números: 3! = 3 * 2 * 1 = 6 4! = 4 * 3 * 2 * 1 = 24 5! = 5 * 4 * 3 * 2 * 1 = 120 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720 7! = 7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040 8! = 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 40 320 9! = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362 880 10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3 628 800 Más estamos em linguagem c, que é nossa paixão, portanto já aviso que o propósito deste código e mostrar passagem por cópia de valor da estrutura, na verdade estamos passando a struct inteira como parâmetros para função. Veja abaixo algumas imagens do programa em execução: http://1.bp.blogspot.com/-tqzLCshWqe8/VM1pYpMpe6I/AAAAAAAAB90/reEWFUMSWqA/s1600/strfat.PNG http://3.bp.blogspot.com/-5WocxSgJfPU/VM1pZgdFikI/AAAAAAAAB94/QmX3tiDalRU/s1600/strfa.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/01/fatorial-em-struct.html
×
×
  • Criar Novo...