Ir ao conteúdo
  • Cadastre-se

GR Carvalho

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

6
  1. Caros, boa noite. Estou aprendendo a desenvolver Java e num determinado exercício ocorreu um looping infinito e eu não entendi exatamente o motivo. @SuppressWarnings("empty-statement") public static void main(String[] args) { // TODO code application logic here Scanner teclado = new Scanner (System.in); int opc = 0; int compv = 0; int userv = 0; int emp = 0; int usuario; System.out.println("*****Jokey Poh!*****" + "\n"); do{ System.out.println("Informe um número de acordo com a opção desejada" + "\n"); System.out.println("Pedra = 0, papel = 1, tesoura = 2" + "\n"); try{ double aleatorio = Math.random(); int computador = (int) ( 0 + aleatorio * (3 - 0)); if (computador == 3){ computador -= 1; } usuario = teclado.nextInt(); switch (usuario){ case 0: case 1: case 2: System.out.println("*****Resultado*****" + "\n"); System.out.println("Ecolha do Computador: " + computador); System.out.println("Escolha do Usuário: " + usuario); if (usuario == 0 && computador == 1){ System.out.println("O Computador é o vencedor." + "\n"); compv += 1;} if (computador == 0 && usuario == 1){ System.out.println("Parabens ! Você venceu! " + "\n"); userv += 1;} if (computador == 0 && usuario == 2){ System.out.println("O Computador é o vencedor. "+ "\n"); compv += 1;} if (usuario == 0 && computador == 2){ System.out.println("Parabens ! Você venceu! " + "\n"); userv += 1;} if (usuario == 1 && computador == 2){ System.out.println("O Computador é o vencedor. " + "\n"); compv += 1;} if (computador == 1 && usuario == 2){ System.out.println("Parabens ! Você venceu! " + "\n"); userv += 1;} if (computador == 1 && usuario == 1){ System.out.println("Empatou!" + "\n"); emp += 1;} if (computador == 2 && usuario == 2){ System.out.println("Empatou!" + "\n"); emp += 1;} if (computador == 0 && usuario == 0){ System.out.println("Empatou!" + "\n" ); emp ++;} break; default: System.out.println("Informe uma opção Valida" + "\n"); break; } System.out.println("*****PLACAR*****"); System.out.println("Computador: " + compv); System.out.println("Você: " + userv); System.out.println("Empates: " + emp); System.out.println("\n"); System.out.println("Deseja Jogar mais uma vez ? Então Digite '1' !"); opc = teclado.nextInt(); } catch (java.util.InputMismatchException e){ System.out.println("Informe um valor numérico"); } }while (opc == 1); } } Como podem ver, eu criei um "joguinho" para treinar looping, try cath, if, etc.É mais para praticar mesmo, mas o lopping não para sempre que executo e ocorre a captura de uma exceção. Exemplo: Onde pede para eu digitar uma dos três números, caso eu digite uma letra ocorre um lopping, mas caso eu aperte um número invalido o looping não ocorre. Poderiam me ajudar ?
  2. Caros, boa tarde. Desenvolvi um código para criptografia utilizando cifra de Vegenere e deu tudo certo. Mas eu gostaria de tirar os espaços e caracteres especiais do texto, pois sempre que coloco esse tipo de dado a criptografia da errado. Por favor me ajudem . Eu ainda sou novo nessas coisas de programação e estou estudando para um trabalho na universidade. Segue o código desenvolvido até o momento. static void Main(string[] args) { char[] criptografia = new char[100]; int i = 0, j = 0, opc; Console.WriteLine("######Codificação em Cifra de Vegenere######"); Console.WriteLine("Digite 0 para começar a incrpitar o código ou pressione qual quer tecla para sair"); opc = int.Parse(Console.ReadLine()); while (opc == 0) { Console.WriteLine("Informe o texto que deseja criptografar"); String s = Console.ReadLine(); char[] texto = s.ToCharArray(); Console.WriteLine("Informe a chave da criptografia"); string chave = Console.ReadLine(); char[] key = chave.ToCharArray(); Console.WriteLine("Texto Cri:"); for (i = 0; i < texto.Length; i++) { if (j == key.Length) j = 0; if ((texto[i] + (key[j] - 97)) > 122) { criptografia[i] = Convert.ToChar(texto[i] + ((key[j] - 97) - 26)); j++; } else { criptografia[i] = Convert.ToChar(texto[i] + (key[j] - 97)); j++; } } for (i = 0; i < texto.Length; i++) Console.Write(criptografia[i]); Console.Write("\n"); Console.ReadKey(); } } } }
  3. Caros, bom dia. Eu realizei um código que realiza a criptografia de vener em C. Mas, agora me pediram em C# e eu não manjo muito e toda vez que eu tento da erro, etc. Alguém conseguiria converter o código de C para C# ou pelo menos me explicar algum modo de fazer isso de uma maneira mais fácil ? Segue o código. char crip[128]; void maiusculas(char *texto){ int i; for(i=0;i<strlen(texto);i++) // Pega todos os caracteres do vetor string(texto ou chave) { texto[i] = toupper(texto[i]); // Transforma todas as letras minusculas em maiusculas } } void somente_letras(char *texto){ // Remove numeros e caracteres especiais int i,j=0; char texto_novo[128]; for(i=0;i<strlen(texto);i++){ // Pega todos os caracteres do vetor string(texto ou chave) if(texto[i]>='A' && texto[i]<='Z'){ // Se o caractere atual não estiver intervalo A-Z texto_novo[j] = texto[i]; // Adiciona a letra maiuscula a um novo vetor j++; } } for(i=0;i<j;i++){ // Substitue o texto antigo pelo novo(que contem somente letras) texto[i] = texto_novo[i]; } texto[i] = '\0'; // Adiciona um valor nulo ao final do texto } void cifrar(char *texto, char *chave, int op_cifra){ int i; maiusculas(texto); maiusculas(chave); somente_letras(texto); somente_letras(chave); for(i=0;i<strlen(texto);i++){ // Pega todos os caracteres do vetor string(texto ou chave) if(op_cifra == 1){ crip[i] = ((texto[i] - 'A') + (chave[i % strlen(chave)] - 'A')) % 26 + 'A'; // Criptografa o caractere } else{ crip[i] = (texto[i] - chave[i % strlen(chave)] + 26) % 26 + 'A'; // Descriptografa o caractere } } } int main(int argc, char *argv[]) { char texto[128],chave[128],m1[128],m2[128]; int op,e,op_cifra; printf("PROGRAMA DE CRIPTOGRAFIA QUE UTILIZA A CIFRA DE VIGENERE \n"); printf("\n\nObservacoes, tanto para o texto quanto para a cifra:"); printf("\n1 - no maximo 128 caracteres;"); printf("\n2 - somente e permitida a utilizacao de letras;"); printf("\n3 - os acentos e a letra 'c cedilha' nao sao aceitos;"); printf("\n\n\nOpcoes: "); printf("\n1 - Criptografar"); printf("\n2 - Descriptografar"); printf("\n0 - Sair do programa"); do{ printf("\n\nDigite o numero da opcao escolhida: "); scanf("%d",&op); fflush(stdin); //__fpurge(stdin); //somente no linux e = 1; if(op!=1 && op!=2 && op!=0){ printf("\nOpcao invalida!\n"); e = 0; } } while(e == 0); // Verifica se foi digitado algum texto switch(op){ case 0: return 0; case 1: printf("\n\nOPCAO ESCOLHIDA: CRIPTOGRAFAR\n\n"); op_cifra = 1; strcpy(m1, "Texto original"); strcpy(m2, "Texto criptografado"); break; case 2: printf("\n\nOPCAO ESCOLHIDA: DESCRIPTOGRAFAR\n\n"); op_cifra = 2; strcpy(m1, "Texto criptografado"); strcpy(m2, "Texto original"); break; } do{ printf("\nDigite o texto: "); fgets(texto,128,stdin); fflush(stdin); //__fpurge(stdin); //somente no linux if(texto[strlen(texto)-1]=='\n'){ texto[strlen(texto)-1]='\0'; } e = 1; if(!strlen(texto)){ printf("\nNao foi digitado nenhum texto!\n"); e = 0; } else if(strlen(texto) < 4){ printf("\nO texto deve ter no minimo 4 caracteres!\n"); e = 0; } } while(e == 0); do{ printf("\nDigite a chave: "); fgets(chave,128,stdin); fflush(stdin); //__fpurge(stdin); //somente no linux if(chave[strlen(chave)-1]=='\n'){ chave[strlen(chave)-1]='\0'; } e = 1; if(!strlen(chave)){ printf("\nNao foi digitada nenhuma chave!\n"); e = 0; } else if(strlen(chave) < 4){ printf("\nA chave deve ter no minimo 4 caracteres!\n"); e = 0; } } while(e == 0); cifrar(texto,chave,op_cifra); printf("\n\n\n%s: \t%s \n",m1,texto); printf("\nChave: \t\t\t%s \n",chave); printf("\n%s: \t%s \n",m2,crip); printf("\n\n\n"); getchar(); getchar(); return 0; }
  4. Caros, boa noite. Estou desenvolvendo um algorítimo e tenho um problema que não consigo resolver. Pois bem ... Eu criei um vetor para armazenar inteiros e mais dois vetores para armazenar aqueles que são impares e outro para armazenar os que são pares desse primeiro vetor. Mas sempre que inicializo o código fica uns 0 sobre os índices que não estão sendo utilizados, exemplo tem somente 4 pares ai o vetor é de 10 índices e fica aparecendo 6 dígitos 0 sobre o vetor além dos números pares. Segue o código para vocês assimilarem melhor: algoritmo "tira0" var par: vetor [1..10] de inteiro impar: vetor [1..10] de inteiro num: vetor [1..10] de inteiro i: inteiro inicio para i de 1 ate 10 faca Leia (num ) se num %2 = 0 entao par <- num senao se num %2 <> 0 entao impar <- num fimse fimse fimpara para i de 1 ate 10 faca Escreval ("Par:", par ) fimpara Escreval () para i de 1 ate 10 faca Escreval ("Impar:", impar ) fimpara fimalgoritmo Eu acho que teria que mudar o índice do meu vetor para a quantidade de pares e impares, mas não sei como fazer isso. Me ajudem, por favor sou novato !
  5. @devair1010, valeu cara ! Seu código deu super certo com a proposta. Eu não estava iniciando as variável de números pares e impares dificultando o meu raciocínio. Mas me ajudou muito e agora me fez entender onde eu estava errando. Obrigado !
  6. Segue o código: algoritmo "semnome" //Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números //impares e nas posições impares inserir somente números pares. Ao final os números inseridos //no vetor devem ser apresentados. //Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par. var num: vetor [0..7] de inteiro i: inteiro aux: inteiro num2: vetor [0..7] de inteiro inicio para i de 0 ate 7 faca Escreva ("Informe um número:") Leia (num ) fimpara para i de 0 ate 7 passo 2 faca se (num %2 ) <> 0 entao num2 <- num fimse fimpara para i de 0 ate 7 passo 2 faca se (num %2 ) = 0 entao num2 <- num fimse fimpara para i de 0 ate 7 faca Escreval (num2 ) fimpara fimalgoritmo Foi esse meu raciocínio, mas sempre quando eu rodo esses códigos alguns valores do meu índice sai com valor zerado. Eu não sei mais o que faço.
  7. Boa tarde, pessoal. Estou com um exercício da faculdade sobre visualg e não consigo resolver, por favor, não me julguem estou no primeiro semestre. Sem mais, vamos para a questão. "Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números impares e nas posições impares inserir somente números pares. Ao final os números inseridos no vetor devem ser apresentados. Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par." Eu realizei toda a contagem dos vetores utilizando a função para e depois a estrutura SE para verificar os valores verdadeiros eram diferentes de 0. Só que sempre da erro e eu tento utilizar o MOD (%) para isso e mesmo assim não consigo fica aparecendo um erro na estrutura SE. Por gentileza, alguém poderia me ajudar ? Desde já agradeço.

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...