roccoC/C++ Postado Março 1, 2013 Denunciar Share Postado Março 1, 2013 (editado) Meu tempo está muito curto, más como vi um tópico noutro forum, sobre isto, gostei da idéia e resolvi fazer o exercício.Tudo começa com a declaração do vetor dinâmico int *vet; onde temos a função mallocque reserva memória para este vetor,veja como cai bem este tipo de vetor aqui nestecódigo, onde a variável tam recebe o tamanho máximo do vetor, e a sequência digitada é finalizado por -1previamente declarei um ponteiro de char e inicializei com -1.A variável num colhe os números da sequência, e quando -1 é digitado ele é comparado com a variável ponteiroe sendo igual a função atoi da biblioteca stdlib.h, converte este -1 para inteiro, e a sequência é interrompidapelo comando break;Já no próximo bloco bem otimizado por um laço for, temos a variável aux que auxilia a variável num, onde a finalidade é a separação dos dígitos digitado na sequência.Então o vetor *vet; entra em ação recebendo da variável aux, os dígitos já separados e entrega a printf que imprime esta sequência separada.os números da sequência são outra vez imprimido, agora pelo vetor vet ; Não há nenhuma necessidade de imprimir isto,más fiz só para provar que os valores já estão armazenados no vetor. No bloco seguinte, a sequência digitadaentra no processo de ordenação, onde usei o método da bolha, que é fácil de imprementar, e a sequência é imprimida em ordem. Também não havia necessidade de fazer isto, más fiz.O último bloco que é a razão deste código finaliza mostrando os números digitados com todos os seus repetentes. Eis as saídas deste programa no cmd:http://4.bp.blogspot.com/-SEuOwTsue1o/UTIO...1600/Img+01.JPGhttp://4.bp.blogspot.com/-uF6_1pPAV0U/UTIO...1600/Img+02.JPGhttp://4.bp.blogspot.com/-B1Fz_X4JeOY/UTIO...1600/Img+03.JPGhttp://3.bp.blogspot.com/-XOU1hW8tIts/UTIO...1600/Img+04.JPGEis o link deste código:http://codigosfontes-ccplus-plus.blogspot....tidos-numa.html Editado Março 2, 2013 por roccoC/C++ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Achei um erro, então editei. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Veja as saídas deste programa no cmd do windows Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vega Postado Março 2, 2013 Denunciar Share Postado Março 2, 2013 (editado) Vou postar o programa que eu postei em outro fórum com algumas alterações e o acréscimo do bubble sort.#include <stdio.h> #include <stdlib.h> int **tabela_matriz(unsigned int, unsigned int); void deleta_matriz(int**, unsigned int); void ordena(int*, int); int main(void){ unsigned int i, n, max, tamanho, colunas = 2, aux = 0; int **matriz, *vetor, repete = 0; printf("Quantos numeros deseja processar: "); scanf("%d", &max); vetor = (int*)malloc(max * sizeof(int)); for(i = 0; i < max; ++i){ printf("Entre com o numero (-1 para sair) #%d ", i + 1); scanf("%d", &vetor[i]); if (vetor[i] == -1) break; } tamanho = (i + 1) != max ? i : max; ordena(vetor, tamanho); matriz = tabela_matriz(tamanho, colunas); for(i = 0; i < tamanho; ++i){ for(n = 0; n <= i; ++n) if(matriz[n][0] == vetor[i]){ ++matriz[n][1]; repete = 1; } if(!repete){ matriz[aux][0] = vetor[i]; ++matriz[aux][1]; ++aux; } repete = 0; } for(i = 0; i < aux; ++i) printf("Numero: %3d | Repete: %2d\n", matriz[i][0], matriz[i][1]); free(vetor); deleta_matriz(matriz, tamanho); return 0; } void ordena(int *v, int tamanho){ int i, continua, aux; do{ continua = 0; for(i = 0; i < tamanho - 1; ++i) if(*(v + i) > *(v + i + 1)){ continua = 1; aux = *(v + i); *(v + i) = *(v + i + 1); *(v + i + 1) = aux; } }while(continua); } int **tabela_matriz(unsigned int nlinhas, unsigned int ncolunas){ unsigned int i; int **m; m = (int**)malloc(nlinhas * sizeof(int*)); for(i = 0; i < nlinhas; ++i){ m[i] = (int*)malloc(ncolunas * sizeof(int)); m[i][0] = m[i][1] = 0; } return m; } void deleta_matriz(int **matriz, unsigned int nlinhas){ unsigned int i; for(i = 0; i < nlinhas; ++i) free(matriz[i]); free(matriz); } Editado Março 2, 2013 por vega Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Funcionou bem, más não é por sequência como o que eu postei, pode ver nas imagens.No seu programa tem que dá enter em cada número digitado, más tá valendo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vega Postado Março 2, 2013 Denunciar Share Postado Março 2, 2013 Meu programa imprime em sequencia também, removendo os números repetidos.Segue o screenAchei melhor não usar getch( )e deixar o input com enter, para o usuário entrar com números inteiros. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Você compilou ele no windows?só uso o windows por aqui. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vega Postado Março 2, 2013 Denunciar Share Postado Março 2, 2013 Testei no windows também com o Turbo C e o resultado foi o mesmo. Deu tudo certo.Quando você roda o que acontece? Não ordena? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Espere um pouco, vou rodar ele e pegar as imagens.Pronto, veja que eu digitei uma sequência igual a digitada em meu programa, pode ver nas imagens.Depois disto quando clico em enter o programa fecha.http://1.bp.blogspot.com/-O77H6oMQ_Ig/UTI9...1600/Img+05.JPG Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vega Postado Março 2, 2013 Denunciar Share Postado Março 2, 2013 (editado) É porque você não está digitando enter para cada númeroQuando o programa pedir o número, você deve digitar e teclar enter para informar o próximo. Editado Março 2, 2013 por vega Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 Foi o que escrevi lá em cima:"Funcionou bem, más não é por sequência como o que eu postei, pode ver nas imagens.No seu programa tem que dá enter em cada número digitado, más tá valendo."A sequência é interrompida com a tecla enter, funciona diferente do meu programa, que mostra os resultados numa sequência única. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Março 2, 2013 Autor Denunciar Share Postado Março 2, 2013 (editado) Certo Editado Março 3, 2013 por roccoC/C++ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
roccoC/C++
Meu tempo está muito curto, más como vi um tópico noutro forum, sobre isto, gostei da idéia e resolvi fazer o exercício.
Tudo começa com a declaração do vetor dinâmico int *vet; onde temos a função malloc
que reserva memória para este vetor,veja como cai bem este tipo de vetor aqui neste
código, onde a variável tam recebe o tamanho máximo do vetor, e a sequência digitada é finalizado por -1
previamente declarei um ponteiro de char e inicializei com -1.
A variável num colhe os números da sequência, e quando -1 é digitado ele é comparado com a variável ponteiro
e sendo igual a função atoi da biblioteca stdlib.h, converte este -1 para inteiro, e a sequência é interrompida
pelo comando break;
Já no próximo bloco bem otimizado por um laço for, temos a variável aux que auxilia a variável num,
onde a finalidade é a separação dos dígitos digitado na sequência.
Então o vetor *vet; entra em ação recebendo da variável aux, os dígitos já separados e entrega a printf que imprime esta sequência separada.
os números da sequência são outra vez imprimido, agora pelo vetor vet ; Não há nenhuma necessidade de imprimir isto,
más fiz só para provar que os valores já estão armazenados no vetor. No bloco seguinte, a sequência digitada
entra no processo de ordenação, onde usei o método da bolha, que é fácil de imprementar, e a sequência é imprimida em ordem.
Também não havia necessidade de fazer isto, más fiz.
O último bloco que é a razão deste código finaliza mostrando os números digitados com todos os seus repetentes.
Eis as saídas deste programa no cmd:
http://4.bp.blogspot.com/-SEuOwTsue1o/UTIO...1600/Img+01.JPG
http://4.bp.blogspot.com/-uF6_1pPAV0U/UTIO...1600/Img+02.JPG
http://4.bp.blogspot.com/-B1Fz_X4JeOY/UTIO...1600/Img+03.JPG
http://3.bp.blogspot.com/-XOU1hW8tIts/UTIO...1600/Img+04.JPG
Eis o link deste código:
http://codigosfontes-ccplus-plus.blogspot....tidos-numa.html
Editado por roccoC/C++Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.