Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto Federal de Santa Catarina – Jaraguá do Sul - RAU Rua dos Imigrantes, 445 | Rau | Jaraguá do Sul /SC | CEP: 89254-430 Fone: (47) 3276-9600 | www.gw.ifsc.edu.br | CNPJ 11.402.887/0005-94 Aluno: Matheus Willian Sprotte | Programação de Computadores | 3º Fase – Engenharia Elétrica Trabalho Final – Cifrador e Descifrador de César 1. Desenvolver um programa que implementa o Cifrador e Descifrador de César, para uma interação via tela e teclado para um texto fornecido via teclado. O usuário deverá fornecer um texto a ser cifrado ou descifrado, chave (número do deslocamento de posições no alfabeto a direita), e opção se quer cifrar ou descifrar o texto fornecido. Após realizar a operação o resultado de saída deverá ser apresentado. 2. Com base no programa desenvolvido na Questão 1, implementar mais uma funcionalidade ao programa. Esta versão 2 do programa deve possibilitar que o usuário forneça um arquivo como entrada para ser cifrado ou descifrado, o arquivo deve ser no formato texto (txt), ou seja, um texto estará salvo no arquivo e o mesmo será fruto do cifrador com a devida opção de cifrar ou descifrar. Assim, o resultado será o conteúdo do arquivo estar cifrado ou descifrado utilizando o cifrador de César. Código fonte da resolução: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> int main () { setlocale(LC_ALL,"portuguese"); int op = 1, opt, f, cf, i, lt, ltc, ltcc; char texto [10000]; printf("\n\tCIFRADOR E DESCIFRADOR DE CÉSAR."); while (op = 1) { printf ("\n\nInsiras o dígito correspondente ao que desejas:\n\nCifrar = 1\nDescifrar = 2\nEncerrar = 3\n=> "); scanf("%d", &f); fflush(stdin); switch (f) { default: printf("\nOpção inválida! por gentileza tente novamente."); break; case 1: printf("\nDesejas digitar o texto diretemante no programa ou que ele leia um arquivo .txt?\n\nInserir diretamente = 1\nLer o arquivo de texto = 2\n=> "); scanf ("%d", &opt); fflush(stdin); if (opt == 1) { printf("\nDigite o texto a ser cifrado:\n=> "); gets (texto); fflush(stdin); printf ("\nInsira a cifra:\n=> "); Instituto Federal de Santa Catarina – Jaraguá do Sul - RAU Rua dos Imigrantes, 445 | Rau | Jaraguá do Sul /SC | CEP: 89254-430 Fone: (47) 3276-9600 | www.gw.ifsc.edu.br | CNPJ 11.402.887/0005-94 scanf ("%d", &cf); fflush(stdin); printf ("\nO texto codificado na cifra escolhida fica: "); for (i = 0; i < strlen (texto); i++) { lt = texto[i]; ltc = lt + cf; ltcc = ltc; if (lt >= 65 && lt <= 90) { while (ltcc > 90) { ltcc = ltcc - 26; } printf ("%c", (char)ltcc); } else if (lt >= 97 && lt <= 122) { while (ltcc > 122) { ltcc = ltcc - 26; } printf ("%c", (char)ltcc); } else { printf ("%c", (char)lt); } } printf("\n\n"); } else if (opt == 2) { FILE *fp; char* arquivo = "c:\\Cifrador\\Texto.txt"; fp = fopen(arquivo, "r"); if (fp == NULL) { printf("\nO arquivo de texto não foi encontrado e o programa será reiniciado.\n\nÉ necessário que exista um arquivo denominado 'Texto' em formato '.txt' contendo o texto a ser cifrado.\nAlém disso, o arquivo precisa estar na pasta 'Cifrador' na raíz do seu sistema (geralmente disco C).\n\nObs.: Seja livre para criá-los (caminho e arquivo) caso não existam.\n\n"); system ("pause"); return main (); } printf("\nO texto lido e que será cifrado é: "); while (fgets(texto,sizeof(texto), fp) != NULL) printf("%s", texto); fclose(fp); Instituto Federal de Santa Catarina – Jaraguá do Sul - RAU Rua dos Imigrantes, 445 | Rau | Jaraguá do Sul /SC | CEP: 89254-430 Fone: (47) 3276-9600 | www.gw.ifsc.edu.br | CNPJ 11.402.887/0005-94 printf ("\n\nInsira a cifra a ser usada:\n=> "); scanf ("%d", &cf); fflush(stdin); printf ("\nO texto codificado na cifra escolhida fica: "); for (i = 0; i < strlen (texto); i++) { lt = texto[i]; ltc = lt + cf; ltcc = ltc; if (lt >= 65 && lt <= 90) { while (ltcc > 90) { ltcc = ltcc - 26; } printf ("%c", (char)ltcc); } else if (lt >= 97 && lt <= 122) { while (ltcc > 122) { ltcc = ltcc - 26; } printf ("%c", (char)ltcc); } else { printf ("%c", (char)lt); } } printf("\n\n"); } else { printf("\nOpção Inválida.\n\n"); } system ("pause"); break; case 2: printf("\nDesejas digitar o texto diretemante no programa ou que ele leia um arquivo .txt?\n\nInserir diretamente = 1\nLer o arquivo de texto = 2\n=> "); scanf ("%d", &opt); fflush(stdin); if (opt == 1) { printf("\nDigite o texto a ser descifrado:\n=> "); gets (texto); fflush(stdin); printf ("\nInsira a cifra usada:\n=> "); Instituto Federal de Santa Catarina – Jaraguá do Sul - RAU Rua dos Imigrantes, 445 | Rau | Jaraguá do Sul /SC | CEP: 89254-430 Fone: (47) 3276-9600 | www.gw.ifsc.edu.br | CNPJ 11.402.887/0005-94 scanf ("%d", &cf); fflush(stdin); printf ("\nO texto decodificado pela cifra usada fica: "); for (i = 0; i < strlen (texto); i++) { lt = texto[i]; ltc = lt - cf; ltcc = ltc; if (lt >= 65 && lt <= 90) { while (ltcc < 65) { ltcc = ltcc + 26; } printf ("%c", (char)ltcc); } else if (lt >= 97 && lt <= 122) { while (ltcc < 97) { ltcc = ltcc + 26; } printf ("%c", (char)ltcc); } else { printf ("%c", (char)lt); } }printf("\n\n"); } else if (opt == 2) { FILE *fp; char* arquivo = "c:\\Decifrador\\Texto.txt"; fp = fopen(arquivo, "r"); if (fp == NULL) { printf("\n\nO arquivo de texto não foi encontrado e o programa será reiniciado.\n\nÉ necessário que exista um arquivo denominado 'Texto' em formato '.txt' contendo o texto a ser decifrado.\nAlém disso, o arquivo precisa estar na pasta 'Decifrador' na raíz do seu sistema (geralmente disco C).\n\nObs.: Seja livre para criá-los (caminho e arquivo) caso não existam.\n\n"); system ("pause"); return main (); } printf("\nO texto lido e que será descifrado é: "); while (fgets(texto,sizeof(texto), fp) != NULL) printf("%s", texto); fclose(fp); Instituto Federal de Santa Catarina – Jaraguá do Sul - RAU Rua dos Imigrantes, 445 | Rau | Jaraguá do Sul /SC | CEP: 89254-430 Fone: (47) 3276-9600 | www.gw.ifsc.edu.br | CNPJ 11.402.887/0005-94 printf ("\n\nInsira a cifra que foi usada:\n=> "); scanf ("%d", &cf); fflush(stdin); printf ("\nO texto decodificado pela cifra usada fica: "); for (i = 0; i < strlen (texto); i++) { lt = texto[i]; ltc = lt - cf; ltcc = ltc; if (lt >= 65 && lt <= 90) { while (ltcc < 65) { ltcc = ltcc + 26; } printf ("%c", (char)ltcc); } else if (lt >= 97 && lt <= 122) { while (ltcc < 97) { ltcc = ltcc + 26; } printf ("%c", (char)ltcc); } else { printf ("%c", (char)lt); } } printf("\n\n"); } else { printf("\nOpção Inválida.\n\n"); } system ("pause"); break; case 3: exit (0); } } }
Compartilhar