Ir ao conteúdo
  • Cadastre-se

ARcode

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

2
  1. Glr, vi esse código em um github é achei a proposta muito interessante, alguem poderia me ajudar? No contexto da figura, os vértices 1, 2, 3, 4 e 5 representam, respectivamente, as cidades que a companhia rodoviária opera hoje. O trajeto é representado pelas arestas que liga (1 a 2), (1 a 3), (2 a 3), (2 a 5), e assim por diante. O custo (peso) entre cada conexão está representado por 2. Porém, de fato, o valor real do custo são os 7 primeiros dígitos do seu RA multiplicado por 100, na sequência: (1-2), (1-3), (2-3), (2-5), (3-4), (3-5), (4-5). Exemplo: RA 2025703-5 = Utilizar 2025703 RA 202570-5 = Em caso de 6 digitos, acrescentar o digito 1, neste exemplo teremos 2025701 Considerando o contexto apresentado da empresa rodoviária Blugin Tur, imagine que você é um desenvolvedor da empresa e ficou responsável por elaborar o caminho de menor custo saindo da cidade 1 e chegando na cidade 5. Para atender a esta demanda você decidiu utilizar o algoritmo de Dijkstra, para indicar os destinos que continuarão sendo operados pela companhia o seu respectivo peso. [13:22, 11/06/2021] Ariel: Passos para realizar o mapa: 1 - Desenvolva um programa em linguagem C e salve com a extensão (.c) que informe os caminhos saindo de 1 e chegando em 5. 1.1 - Neste código, você deverá informar: - o número de vértices, - depois a aresta de origem, a aresta de destino, e - o custo correspondente aos digitos de seu RA para as rotas (lembre-se que após digitar o custo, temos uma operação a ser realizada). 1.2 - Imprimir todos os destinos com os seus respectivos pesos.
  2. glr tem esse código , eu fiz algumas interpretações dele so que ainda não consegui entender algumas coisas que deixei comentado, é um codigo que criptografia include <stdlib.h> #include <string.h> #include <stdio.h> /*reconhecimento de caractere */ int charParaValor(char c) { switch(c) { case 'a': return 0; case 'j': return 9; case 's': return 18; case 'b': return 1; case 'k': return 10; case 't': return 19; case 'c': return 2; case 'l': return 11; case 'u': return 20; case 'd': return 3; case 'm': return 12; case 'v': return 21; case 'e': return 4; case 'n': return 13; case 'w': return 22; case 'f': return 5; case 'o': return 14; case 'x': return 23; case 'g': return 6; case 'p': return 15; case 'y': return 24; case 'h': return 7; case 'q': return 16; case 'z': return 25; case 'i': return 8; case 'r': return 17; case ' ': return 26; default: return -1; }}// 1 - Qual a finalidade dessa funcao? Por que ela retorna -1? /*Ela retorna um valor inteiro entre 0 e 26 para cada caractere do dicionario. Caso um caractere diferente seja utilizado ele nao reconhecera e retornara -1(erro)./ char valorParaChar(int v) { char dicionario[] = "abcdefghijklmnopqrstuvwxyz ";//ultimo caractere eh o backspace int a = dicionario[v]; printf("v = %d\n", v); return dicionario[v]; }// 2 - Qual a finalidade dessa funcao? /*Ela retorna o valor decimal de qualquer caractere do dicionario a:97 -> z:122 + " ":32 */ char criptChar(char cValor, char cChave) { int iValor = charParaValor(cValor); int iChave = charParaValor(cChave); return valorParaChar((iValor + iChave)%27); //= 117 }// 3 - Qual a finalidade dessa funcao? Por que utilizar o %27? /*Ela retorna um valor decimal de uma caractere que corresponde a posicao dada pelo resultado da soma do valor de dois caracteres. 27 é devido a quantidade de caracteres do dicionario, (mas porque pegar o resto da divisao?)* */ char decriptChar(char cValor, char cChave) { int iValor = charParaValor(cValor); int iChave = charParaValor(cChave); return valorParaChar((27 + (iValor - iChave)) % 27); }// 4 - Qual a finalidade dessa funcao? Qual o retorno dessa funcao? /*Ela retorna um valor decimal de uma caractere que corresponde a posicao dada pelo resultado da soma 27 + a diferença entre dois caracteres. 27 é devido a quantidade de caracteres do dicionario, (mas porque somar e pegar o resto da divisao ?)* */ int main(){ char frase[50], chave[10]; strcpy(frase, "string a ser criptografada ");//faz a copia da frase para o vetor frase strcpy(chave, "chave"); //faz a copia da frase para o vetor chave printf("original: %s\nchave: %s\n\n\n", frase, chave);//mostra o conteudo dos vetores char criptografado[50], descriptografado[50]; int i; for(i = 0; i < strlen(frase); i++) {//laco de repeticao ate 26 criptografado[i] = criptChar(frase[i], chave[i%strlen(chave)]);//a cada laco convoca a funcao criptChar }/* i->26 0....4 */ criptografado[strlen(frase)] = '\0';//adiciona o caractere de quebra de pagina // 5 - Qual a finalidade da linha de código acima /criptografar cada caractere do vetor frase e no fim adiciona o caractere de quebra de pagina para nao mostrar lixo/ printf("Criptografada: %s\n", criptografado);//mostra a string criptografado for(i = 0; i < strlen(criptografado); i++) { descriptografado[i] = decriptChar(criptografado[i], chave[i % strlen(chave)]); }/* i->26 0....4 */ descriptografado[strlen(criptografado)] = '\0'; // 6 - Qual a finalidade da linha de código acima /descriptografar cada caractere do vetor criptografado e no fim adiciona o caractere de quebra de pagina para nao mostrar lixo/ printf("\nDescriptografada: %s\n", descriptografado); if(strcmp(frase, descriptografado) == 0) puts("\nAs frases coincidem"); puts("\n"); system("pause"); } /* a[0]: return 97; j[9]: return 106; s[18]: return 115; b[1]: return 98; k[10]: return 107; t[19]: return 116; c[2]: return 99; l[11]: return 108; u[20]: return 117; d[3]: return 100; m[12]: return 109; v[21]: return 118; e[4]: return 101; n[13]: return 110; w[22]: return 119; f[5]: return 102; o[14]: return 111; x[23]: return 120; g[6]: return 103; p[15]: return 112; y[24]: return 121; h[7]: return 104; q[16]: return 113; z[25]: return 122; i[8]: return 105; r[17]: return 114; ' '[26]: return 32; criptografado[i] = criptChar(frase["s"], chave[i % strlen("c")]); ( s=18 + c=2 ) => u[20]: return 117 (valor decimal); ( a=0 + a=0 ) => a[0]: return 97 (valor decimal); prints auxiliares: //printf("criptchar: %d\n", criptografado[i]); //printf("chave[%d] = %d i/ strlen[chave] = %ld\n", i, chave[i % strlen(chave)], i%strlen(chave)); //printf("ivalor(%d) + ichave(%d) = %d/%c\n", iValor, iChave, res, res); //printf("a:%d\n", a); int a = strlen(frase); int b = strlen(chave); //printf("a: %d caracteres\nb: %d caracteres\n\n", a, b); */
  3. ola clã esse codigo ele reverte a frase que o usuario insere. nesse codigo a frase que é invertida ja esta nele, preciso de ajuda para que adapte o codigo para que o o usuario insira a frase #include <stdlib.h> #include <stdio.h> #include <string.h> /** * Reverses an array of characteres using a temporary variable */ void storage_reverse_string(char *str, int i, int j) { while(i < j) { char tmp = str[i]; str[i] = str[j]; str[j] = tmp; i++; j--; } } /** * Reverses an array of characteres using Bitwise operation XOR * with no storage */ void bitwise_reverse_string(char *str, int i, int j) { while(i < j) { str[i] ^= str[j]; str[j] ^= str[i]; str[i++] ^= str[j--]; } } /** * Reverses an array of characteres using sum operation * with no storage */ void sum_reverse_string(char *str, int i, int j) { while(i < j) { str[i] += str[j]; str[j] = str[i] - str[j]; str[i++] -= str[j--]; } } /** * Reverse sentence on string using the given function */ void reverse_sentence(void (*function)(char *str, int i, int j), char *str) { int i = 0; int j = strlen(str) - 1; // Reverses entire string O(n) (*function)(str, i, j); int k = i; for(; i < j; i++) { if(str[i] == ' ') { (*function)(str, k, i - 1); k = i + 1; } } (*function)(str, k, i); } int main (int argc, char* argv[]) { /* String that we will reverse sentence */ char str[] = "Eu sou irreversível"; /* Copy of the original string */ char str_copy[strlen(str)]; strncpy(str_copy, str, strlen(str)); printf("Before: \t%s\n", str); /* Reverses sentence using a function that uses storage */ reverse_sentence(storage_reverse_string, str_copy); printf("Storage: \t%s\n", str_copy); memset(str_copy, 0, strlen(str_copy)); strncpy(str_copy, str, strlen(str)); /* Reverses sentence using a function that uses sum to avoid storage */ reverse_sentence(sum_reverse_string, str_copy); printf("Sum: \t\t%s\n", str_copy); memset(str_copy, 0, strlen(str_copy)); strncpy(str_copy, str, strlen(str)); /* Reverses sentence using a function that uses bitwise to avoid storage */ reverse_sentence(bitwise_reverse_string, str_copy); printf("Bitwise: \t%s\n", str_copy); memset(str_copy, 0, strlen(str_copy)); strncpy(str_copy, str, strlen(str)); return EXIT_SUCCESS; }
  4. Amigo pelo que você falou não te haver com sua placa mão e sim com a potencia , faça testes na sua fonte pois ela é a responsável por manter o computador com energia... Eu estava com este mesmo problema eu apertava para ligar , ele acendias as luzes o cooler girava e logo dps parava, troquei a minha fonte pra uma fonte mais forte e quando fui testar a fonte antiga ela estava queimada , caso não resolva avise
  5. José e Joaquim são dois garotos que colecionam figurinhas de chiclete. Como todo colecionador de figurinhas, eles não gostam de manter figurinhas repetidas em suas coleções. Para contornar esse problema, eles costumam trocar entre si suas figurinhas repetidas. As regras são simples: uma figurinha de José vale uma figurinha de Joaquim, e eles não aceitarão receber figurinhas que já possuem em sua própria coleção. Para facilitar o controle da coleção, cada figurinha é numerada. Sua tarefa é simples: dada a coleção de figurinhas de José e Joaquim (cada coleção tem um máximo de 50 figurinhas), você deve informar qual o número máximo de figurinhas que podem ser trocadas entre os dois

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...