Ir ao conteúdo

Jvsierra

Membro Pleno
  • Posts

    23
  • Cadastrado em

  • Última visita

  1. O código completo ficou assim: package projects; import java.util.Scanner; public class Projects { public static void main(String[] args) { char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray(); Scanner scanner = new Scanner(System.in); String palavraLida = ""; System.out.println("Digite a palavra que você quer criptografar:"); palavraLida = scanner.nextLine(); System.out.println("Digite a chave para o processo (0 - 25)"); int chaveString = scanner.nextInt(); char[] palavraGerada = new char[palavraLida.length()]; int index = 0; if(chaveString <= 25 && chaveString >=0){ for (int i = 0; i < palavraLida.length(); i++) { if (palavraLida.toCharArray()[i] == ' ') { palavraGerada[i] = '#'; // Se for um espaco, cria uma hashtag na string de saída }else{ //Se não for, checa de acordo com o alfabeto for (int j = 0; j < palavraLida.length(); j++) { if (palavraLida.toCharArray()[i] == alphabet[j]) { if (j + chaveString > 25) { palavraGerada[i] = alphabet[(j + chaveString) - 26]; } else { palavraGerada[i] = alphabet[j + chaveString]; } } } } } }else{ System.out.println("Chave inválida.\n"); } System.out.println(palavraGerada); } }
  2. Eu troquei e acontece um erro semelhante: for (int j = 0; j < palavraLida.length(); j++) { if (palavraLida.toCharArray()[i] == alphabet[j]) { index = j + chaveString; if(index >= 26){ index = index - 26; } palavraGerada[i] = alphabet[index];//Grava na array de saída de acordo com a variável correspondente } } Algumas letras criptografam, outras não...
  3. Eu estou fazendo um programa para criptografar de acordo com a Cifra de César, em Java. Eu me deparei com o seguinte problema no código: package projects; import java.util.Scanner; public class Projects { public static void main(String[] args) { char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray(); Scanner scanner = new Scanner(System.in); String palavraLida = ""; System.out.println("Digite a palavra que você quer criptografar:"); palavraLida = scanner.nextLine(); System.out.println("Digite a chave para o processo (0 - 25)"); int chaveString = scanner.nextInt(); char[] palavraGerada = new char[palavraLida.length()]; int index = 0; if(chaveString <= 25 && chaveString >=0){ for (int i = 0; i < palavraLida.length(); i++) { if (palavraLida.toCharArray()[i] == ' ') { palavraGerada[i] = '#'; // Se for um espaco, cria uma hashtag na string de saída }else{ //Se não for, checa de acordo com o alfabeto for (int j = 0; j < palavraLida.length(); j++) { if (palavraGerada[i] == alphabet[j]) { index = j + chaveString; if(index >= 26){ index = index - 26; } palavraGerada[i] = alphabet[index];//Grava na array de saída de acordo com a variável correspondente } } } } }else{ System.out.println("Chave inválida.\n"); } System.out.println(palavraGerada); } } A primeira checagem do loop FOR (que checa se o caractere é um espaço), funciona corretamente). Já, no else, para caracteres que não são um espaço, não funciona corretamente, já que no array de saída não fica gravado o caractere correspondente Exemplo de execução do programa:
  4. Eu mudei o código para: case 3: media = (float) 1 / ((1 / numA) + (1 / numB) + (1 / numC)); printf("A media harmonica desses numeros e: %f\n", media); break; Daí, ele não dá mais o erro. Só que ele retorna um valor estranho:
  5. Olá a todos. Eu fiz um exercício em C que pede para calcular alguns tipos de média, entre elas a média harmônica. Só que, ao executar o programa e selecionar a opção da média harmônica, o programa se fecha automaticamente. Usei o Code::Blocks e o GNU GCC para compilar o código. #include <stdio.h> #include <math.h> int main() { int numA, numB, numC = 0; printf("Digite o primeiro numero inteiro positivo: \n"); scanf("%d", &numA); printf("Digite o segundo numero inteiro positivo: \n"); scanf("%d", &numB); printf("Digite o terceiro numero inteiro positivo: \n"); scanf("%d", &numC); if (numA < 0 || numB < 0 || numC < 0) { printf("voce digitou algum numero invalido. \n"); }else{ int escolha, media = 0; printf("Digite o tipo de media que voce quer calcular: \n"); printf("1 - Geometrica\n"); printf("2 - Ponderada\n"); printf("3 - Harmonica\n"); printf("4 - Aritmetica\n"); scanf("%d", &escolha); switch (escolha) { case 1: media = cbrt(numA * numB * numC); printf("A media geometrica desses numeros e: %d\n", media); break; case 2: media = (numA + (numB * 2) + (numC * 3)) / 6; printf("A media ponderada desses numeros e: %d\n", media); break; case 3: media = 1 / ((1 / numA) + (1 / numB) + (1 / numC)); printf("A media harmonica desses numeros e: %d\n", media); break; case 4: media = (numA + numB + numC) / 3; printf("A media aritmetica desses numeros e: %d\n", media); break; default: printf("Opção invalida.\n"); } } return 0; } Alguém sabe por que o programa fecha ao selecionar a terceira opção? Desde já, obrigado.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!