Ir ao conteúdo
  • Cadastre-se

Marcelly

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

posts postados por Marcelly

  1. @arfneto Sim, vetor está fora dos limites. Eu concordo contigo, acho que todas essas restricoes acabam piorando o aprendizado. 
    voce chegou a rodar o programa? Esse trecho de codigo que voce postou por ultimo, nunca retorna que a representação não é possivel. É uma das coisas que está me deixando louca kkk 

    O next acho que faz exatamente isso que você disse de proximo primo. voce pode ver no final do codigo que existe p1 = p2, p2 = p3 e etc. 

     

    • Curtir 1
  2. @arfneto Entao, nao é permitido utilizar funcoes, nem vetores, nem breaks nem nada. Na verdade eu inseri o break após ler muito e ver alguns exemplos pelo Google pois n tinha e continuo n tendo ideia do que utilizar. Eles exigem que voce utilize apenas o que foi visto em aula até aqui: if, for e while, nada além. Unica biblioteca permitida é <stdio.h> Para quem está iniciando na linguagem, é um pouco pesado devo dizer. voce poderia me dizer mais detalhadamente como coloco em pratica suas observacoes? Muitissimo obrigada ate aqui. 

    • Curtir 1
  3. @arfneto Olá! Como vai? Obrigada pela sua resposta. Na verdade eu venho alterando o código pois estou o dia inteiro mexendo nele e cada hora chego em uma conclusão diferente. Vou postar o código abaixo, e tentar explicar mais ou menos o problema que estou enfrentando agora:

     

    1- Nao consigo enxergar uma forma de fazer isso sem True ou False;

    2- Nao posso utilizar breaks, ja tentei whiles e etc mas nada dá certo;

    3 - Era suposto fazer um loop para que o usuário só parasse de dar entradas se por acaso ele digitasse zero, e o programa deve funcionar para 0 < n < 10ˆ8;

    4 - Não consigo incluir a saída para o caso de o numero não conseguir ser representado pelo quadrado de 4 números primos consecutivos.

     

    Eis o código que tenho até agora:

    Se você notar, se eu insiro um numero qualquer, por exemplo: 2020, o programa me retorna que ele pode ser representado pela soma de 17ˆ2+19ˆ2+23ˆ2+29ˆ2, ou se eu insiro 100 por exemplo, ele deveria me retornar que é impossível, mas ele fica pensando e não retorna nada. 

    Peço desculpas pela alteração do código anterior e do enunciado. Fiz alterações omitindo o que achava que já tinha em mãos, mas me enganei. É que horas e horas mexendo com isso, cada hora que penso estar no caminho certo, acho que embaralho mais ainda o conjunto.

     

    #include <stdio.h>
    
    
    #define TRUE 1
    #define FALSE 0
    
    int main() {
    
    	int p1=2, p2=3, p3=5, p4=7, next, i, n, prime;
    
    	printf("Entrada: ");
    	scanf("%d", &n);
    
    	while (TRUE){
    		if((p1*p1) + (p2*p2) + (p3*p3) + (p4*p4) == n){
    			printf("Saida: %dˆ2 + %dˆ2 + %dˆ2 + %dˆ2\n", p1, p2, p3, p4);
    				break;
    		}
    		next = p4 + 2;
    		if (next > n) {
    				printf("Impossivel a representacao");
    				break;}
    			if(next < n) {
    			prime = FALSE;
    			while (next < n && prime == FALSE) {
    				prime = TRUE;
    				for (i=3; i < next && prime == TRUE; i+=2) {
    					if (next % i == 0)
    						prime = FALSE;		
    				}
    				if (prime == TRUE) {
    					p1 = p2;
    					p2 = p3;
    					p3 = p4;
    					p4 = next;
    			}
    				else {
    					next += 2;
    							}
    				
    						}
    					}
    				}
    
    	return 0;
    	}		

     

    adicionado 4 minutos depois


    Digite um numero (0 < n < 10^8): 100
    Nao existem 4 primos consecutivos cujos quadrados somam 100

    Digite um numero (0 < n < 10^8): 1002172
    1002172 = 491^2 + 499^2 + 503^2 + 509^2
    Digite um numero (0 < n < 10^8): 0

    Boa sorte!

     

    Essa é a saída esperada pelo programa, @arfneto. Mas estou enfrentando dificuldade em defini-la.

    • Curtir 1
  4. Estou trabalhando em um código, porém não consigo compreender o que há de errado. A sequencia só funciona para a primeira entrada, e depois simplesmente apaga. É suposto que o usuario entre com um numero qualquer (0 a 10ˆ8) e o programa retorne se aquele numero inserido pode ser representado como a soma de 4 primos , por exemplo:

    Entrada: 87

    Saída: 2ˆ2 + 3ˆ2+ 5ˆ2+7ˆ2 

    Entrada: 100

    Saída: Não é possível a representação

    Qualquer dica, agradeço imensamente.

    Obs: É proibido utilizar funções, vetores, breaks e etc. É um trabalho de faculdade sobre as funções mais básicas: ifs, fors e whiles. Obrigada!

     

    Eis o código:

     

    #include <stdio.h>
    #include <math.h>
    
    int main() {
    
        int j1, j2, j3, j4, next, i, numb, prime;
    
        printf("Entrada: ");
        scanf("%d", &n);
    
        while(1){
            if((j1 *j1) + (j2 *j2) + (j3 *j3) + (j4 *j4) == n){
                printf("Saida: %d + %d + %d + %d", j1, j2, j3, j4);
            }
            next = p4+2;
            if(next > n)
            printf("Impossivel");
            while(1)
            for(i=3; i<= sqrt(next); i=i+2){
                if(next % i == 0)
                    prime = false;
                        else{
                            prime = true;}
            }
            if(prime == true){
                    p1=p2;
                    p2=p3;
                    p3=p4;
                    p4=next;
                }
                else{
                    next = next +2;}
        }
    
            return 0;
            }

     

    • Obrigado 1

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