quitZAUMMM 18 Denunciar post Postado Dezembro 10, 2008 bom galera vamos pensar primeiro na codificacao.. algo do tipo: le o numero e joga no vetor. ai come;ca ivez = 0; aux = num[0]; i = 0; pos = 0; while(i<=strlen(num)){ cont = 0 while (aux == num[i++] && i < strlen(num)) { cont++; pos++; } if (iVez == 0) { iVez = 1; strcpy(num_codif,cont); strcat(num_codif,aux); } else { strcat(num_codif,cont); strcat(num_codif,aux); } aux = num[pos]; } tipo naum cheguei testar c vai dar erro de falha de segmentacao e tal.. pensei nessa logica.. []s Compartilhar este post Link para o post Compartilhar em outros sites
Tisilva 0 Denunciar post Postado Dezembro 10, 2008 tenho ate 6º feira.... chega-s a um ponto q da pra estas coisas.. brigada Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 10, 2008 olha cara fiz algo assim, to meio sem tempo pois to no servico, e num to usando muita logica na coisa.. at[e agora esta assim: #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> int main(){ int ivez, i, pos, cont, tam; char num[256]; char char1[1], char2[1]; char aux[2]; char num_codif[256]; ivez = 0; i = 0; pos = 0; printf("Digite o numero a ser codificado: "); fgets(num , 256,stdin); aux[0] = num[0]; aux[1] = '\0'; tam = strlen(num); while(i < tam){ cont = 0; while (aux[0] == num[i++]) { if (i < tam){ if (cont < 9) cont++; else break; pos++; } } if (ivez == 0) { ivez = 1; itoa (cont, char1,10); strcpy(num_codif,char1); strcat(num_codif,aux); } else { if (cont != 0){ itoa (cont, char1,10); strcat(num_codif,char1); strcat(num_codif,aux); } } aux[0] = num[pos]; aux[1] = '\0'; --i; } printf("Numero codificado: %s", num_codif); getch(); return 0; }} tente ver aeeee.. qnd eu tiver + tempo analizo melhor.. []s Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 10, 2008 atualizei o codigo acima da uma olhada.. []s Compartilhar este post Link para o post Compartilhar em outros sites
Tisilva 0 Denunciar post Postado Dezembro 10, 2008 esta bem melhor q o meu, umas 20 ou 30vezes, brigado nem sei como te agradeçer.. como consegues entender tanto de programaçao, da ai umas dicas Compartilhar este post Link para o post Compartilhar em outros sites
Tisilva 0 Denunciar post Postado Dezembro 10, 2008 explique-me o q faz: itoa (cont, char1,10); o "itoa" nao precisa de estar declarado? Compartilhar este post Link para o post Compartilhar em outros sites
rop12770 0 Denunciar post Postado Dezembro 10, 2008 Bem, realmente tá fantástico. Sabes mesmo disto. O problema é que nós é que deveriamos saber como fazer isto e eu não sei (muito sinceramente http://forum.imasters.com.br/public/style_emoticons/default/cry.gif/> http://forum.imasters.com.br/public/style_emoticons/default/cry.gif/> ....) Assim, não custa nada vir aqui, sakar o codigo e apresentar. A ideia não era essa.. O que eu queria, se possivel para o quitZAUMMM, era que desse umas dicas de como aprender a fazer, qual a melhor forma, quais os melhores manuais. Obrigado desde já, pelo teu esforço. http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif/> Compartilhar este post Link para o post Compartilhar em outros sites
rop12770 0 Denunciar post Postado Dezembro 10, 2008 Tisilva O itoa serve para converter uma string num int. Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Dezembro 10, 2008 explique-me o q faz: itoa (cont, char1,10); o "itao" nao precisa de estar declarado? itoa converte uma string para um inteiro. Veja: http://www.mkssoftware.com/docs/man3/itoa.3.asp Vou tentar criar um aqui pelo jeito que o quit passou a diferença do método dele é que o dele pega o que o usuario digitar o meu pega de um arquivo .txt mas segue a mesma lógica. Compartilhar este post Link para o post Compartilhar em outros sites
Tisilva 0 Denunciar post Postado Dezembro 10, 2008 brigado... por onde lhe pagas pra fazer a descodificaçao? Compartilhar este post Link para o post Compartilhar em outros sites
rop12770 0 Denunciar post Postado Dezembro 10, 2008 Para quitZAUMMM: Estive a compilar o teu codigo e para já há 2 problemas: 1º - Se introduzirmos um valor negativo (por exe. -234-3334), deveria dar erro. 2º - Também nos pedem para decodificar novamente o mesmo nº... Como se faz isso (todos os procedimentos ao contrário???). Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Dezembro 10, 2008 Atualizei o topico la com o metodo runlengt vejam abaixo que coloquei os testes que fiz agora aqui com o código veja se se encaixa no que vcs precisam: http://forum.imasters.com.br/index.php...p;#entry1183172 Edit: o codigo do quit faz somente a codificação, para fazer o contrario vcs tem que fazer a logica inversa pelo que eu vi não foi incluso nada para dizer se o numero esta codificado ou não, por isso utilizei caracteres especiais no meu exemplo. Compartilhar este post Link para o post Compartilhar em outros sites
Tisilva 0 Denunciar post Postado Dezembro 10, 2008 nos pra fazermos o inverso (descodificaçao) so temos q alterar as condiçoes do "if" Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 10, 2008 olha o mew codifica, c vier um numero negativo, é soh você tratar o char, e realizar o deslocamento dos numeros a direita.. para descodificar é muito simples.. ta vendo galera naum desistam o algoritmo é simples.. []s Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 11, 2008 cara, eu naum tenho a logica muito boa, fui desenvolvendo usando printf's para ver oq tava passando nos loops, nunca desista cara.. a descodificação é simples.. ve pega os numeros pares q seram a quantidade de vzs q um numero sera repedito, e as impares os numeros q serao repetidos, tentem expressar a logica q eu ajudo.. qro ver vcs passando de ano.. go Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Dezembro 11, 2008 O codigo do quit é bem compacto, tem que fazer o inverso pra descodificar, ele servirá para um numero que o usuario acabou de digitar, tipo se o professor quiser apenas algo para o momento mostrar o arquivo como ele fica criptografado e depois descriptografado é a melhor escolha. é só utilizar primeiro numero como contador e depois repetilo armazenando em um vetor ou mostrando na tela, o problema é se o numero ultrapassar 10 repetições, não será somente o numero posterior pois o valor terá duas casas decimais, estou fazendo algo aqui utilizando uma junção dos dois programas. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 11, 2008 gente, é algo simples assim: for (int i=0;i<tam;i+=2) imps[i] = num[i]; for (int j=1;j<tam;j+=2) pars[j] = num[j];pronto agora, é soh dar os printf's. []s Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Dezembro 11, 2008 É bem isso pessoal, do jeito que o quit falou, bem acho melhor deixar o pessoal pensar um pouco se eles tiverem duvidas o pessoal ajuda aqui. Inté pessoal. Compartilhar este post Link para o post Compartilhar em outros sites
rop12770 0 Denunciar post Postado Dezembro 11, 2008 Olá Obrigado pelas dicas. Vamos ver se o prof. alarga o prazo de entrega para se poder completar o programa.... Mais uma vez, obrigado. PS: mandem lá as vossas dicas de como aprender programação.... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 11, 2008 naum gosto muito de postar coisas prontas, + sei q num [e um algoritmo muito simples de vcs fazerem, os testes q fiz aki deram corretos, caso alguem veja algum erro, fique a vontade para falar. #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> void deslocaEsq(char sPalavra[]){ for(int i = 0; i < strlen(sPalavra); i++){ sPalavra[i] = sPalavra[i+1]; } } void desenvolvedor(){ system("cls"); printf("quitZAUMMM"); getch(); } int menu(){ int iOpc; system("cls"); printf(" Sistema de Codificacao e Descodificacao"); printf("\n 1 - Codificar\n 2 - Descodificar\n 3 - Desenvolvedor\n 4 - Sair"); printf("\n Digite a sua opcao: "); scanf("%d", &iOpc); return(iOpc); } void codifica(){ system("cls"); int ivez, i, pos, cont, tam, iNegativo; char num[256], char1[1], aux[2], num_codif[256]; ivez = i = pos = iNegativo = 0; getchar(); printf(" CODIFICACAO\n\n"); printf(" Digite o numero a ser codificado: "); fgets(num , 255,stdin); if (num[0] == '-') { deslocaEsq(num); iNegativo = 1; } aux[0] = num[0]; aux[1] = '\0'; tam = strlen(num); while(i < tam){ cont = 0; while (aux[0] == num[i++]) { if (i < tam){ if (cont < 9) cont++; else break; pos++; } } if (ivez == 0) { ivez = 1; itoa (cont, char1,10); strcpy(num_codif,char1); strcat(num_codif,aux); } else { if (cont != 0){ itoa (cont, char1,10); strcat(num_codif,char1); strcat(num_codif,aux); } } aux[0] = num[pos]; aux[1] = '\0'; --i; } if (iNegativo == 1) printf(" Numero codificado: -%s", num_codif); else printf(" Numero codificado: %s", num_codif); getch(); } void descodifica(){ system("cls"); char sNum[256], sPars[128], sImps[128]; int j = 0, h = 0, k =0, iNegativo = 0;; char cChar[2]; getchar(); printf(" DESCODIFICACAO\n\n"); printf(" Digite o numero a ser descodificado: "); fgets(sNum , 255, stdin); if (sNum[0] == '-') { deslocaEsq(sNum); iNegativo = 1; } for (int i = 0; i < strlen(sNum) - 1; i += 2) sPars[j++] = sNum[i]; j = 0; for (int i = 1; i < strlen(sNum); i += 2) sImps[j++] = sNum[i]; printf(" Numero Descodificado: "); if (iNegativo == 1) printf("-"); for (int i = 0; i < strlen(sPars); i++) { cChar[0] = sPars[k++]; cChar[1] = '\0'; int n = atoi(cChar); for (int j = 0; j < n; j++) printf("%c", sImps[h]); h++; } getch(); } int main(){ int iMenu; while(1){ iMenu = menu(); if (iMenu == 4) break; switch(iMenu){ case 1: codifica(); break; case 2: descodifica(); break; case 3: desenvolvedor(); break; default : printf("Opcao Invalida"); } } return 0; } http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif/> Compartilhar este post Link para o post Compartilhar em outros sites