Jump to content

Resolução De Exercicio


Fixe
 Share

Recommended Posts

Boas.

Estou aqui com um problema na resolução de um problema, em C, já fiz algum Código contudo não sei se estou a raciocionar bem ou se estou a ir pelo caminho correcto e faltame código ainda para que o exercicio ser executado correctamente, veijam-lá se me podem ajudar.

O exercicio é este, Dadas n sequências de pelo menos n números inteiros positivos não-nulos calcular a soma dos números pares de cada sequência.Uma dada sequência está terminada se n valores foram introduzidos, ou caso ocorra a introdução de um zero.Notar que n é fornecido pelo utilizador não pode ser superior 5.

O Código que fiz é este:

#include <stdio.h>

main(){

int n,x;
printf("Introduza Um N Valido""\n");
scanf("%d",&n);

if (n>5 || n=0){
printf("Erro");
}
else {
scanf(

Veijam-lá se me podem ajudar na resolução deste exercicio.

Link to comment
Share on other sites

  • Replies 95
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Pensa que precisas de dois ciclos:

- Um para pedir cada uma das sequências

- Outro, interno, que pede casa um dos valores da sequência até n (ou até encontrar 0)

Não precisas exactamente de manter os números todos num array. Recebes o número, verificas a paridade, somas a uma variável (se for par) e mostras (não esquecendo de voltar a colocar a variável a zero no final da sequência). Se quiseres mostrar tudo apenas no fim, precisas apenas de um array de tamanho n onde guardas a soma final de cada sequência.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

Exacto, eu penso que estou a perceber o que vocês estão a dizer, contudo o exercicio com array não posso fazer porque ainda não dei arrays, eu penso que tem qeu ser com ciclos for, etc, mas não sei é como é que heide fazer, veijam-lá no código que fiz o que é que falta e sera que o codigo que fiz está correcto.

Um Abraço e obrigado pela ajuda que me estão a dár. 

Link to comment
Share on other sites

#include <stdio.h>

int main(void)
{
  unsigned a, i, j, n, s;
  printf("n: ");
  scanf("%u", &n);
  if (n <= 5)
    for (i = 0; i < n; i = i + 1) {
      s = 0;
      for (j = 0; j < n; j = j + 1) {
        printf("a[%u][%u]: ", i, j);
        scanf("%u", &a);
        if (a == 0)
          break;
        if (a % 2 == 0)
          s = s + a;
      }
      printf("%u\n", s);
    }
  return 0;
}
Link to comment
Share on other sites

Exacto tou a perceber, e tem toda razão, mas então no código que me deu segundo tou a entender o código que aqui esta falta fazer a soma dos numeros n, pares, e quando eu coloco o numero 6,7, ele não dá erro, portanto já identifiquei o que falta no código, agora tenho que tentar fazer o que disse em codigo c correcto.

Digame se estou a rciocionar correctamente?

Link to comment
Share on other sites

epa ... ponho aqui o código somente porque andas à volta dele desde ontem ...

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv) {
    int nseq = 0, sum = 0, val = 0, iter = 0, count = 0;

    while (nseq <= 0 || nseq > 5) {
        fprintf(stdout, "Introduza o numero de sequencias a contabilizar (1-5) : ");
        fscanf(stdin, "%d", &nseq);
        if (nseq <= 0 || nseq > 5)
            fprintf(stderr, "O numero inserido e invalido (1-5)");
    }

    for (; iter < nseq; iter++) {
        sum = 0;
        val = 1;
        count = 0;
        while (val != 0 && count != nseq) {
            do {
                fprintf(stdout, "Qual o valor numero %d da sequencia %d : ", count, iter);
                fscanf(stdin, "%d", &val);
                if (val <= 0 || val > 5)
                    fprintf(stderr, "O numero inserido e invalido (1-inf)");
            } while (val <= 0);
            if (val % 2 == 0)
                sum += val;
            count++;
        }
        fprintf(stdout, "A soma dos valores pares da sequencia %d e %d\n\n", iter, sum);
    }

    return EXIT_SUCCESS;
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Amigos obrigado pela ajuda, mas defacto o código anterior resolveme o exercicio contudo é um código muito avançádo com expressôes que ainda não dei, por isso não posso apresentar este código ao professor, portanto tentei eu fazer o exercicio por fases mas ainda me falta muita coisa mas é aqui que vou precissar da vossa ajuda, eu vou mostrarvos o código que fiz, e vocês dizem-me o que está mal e o que ainda falta fazer:

#include <stdio.h>

main(){

int x,y,n,i;                                                                                  /* declaração de variáveis

printf("Introduza Um N Valido""\n");                    /* peço ao utilizador que introduza um N valido

scanf("%d",&n);

for(n=0; j< n; n+){  /* agora pensei e tenho que ter dois ciclos for,um ciclo que corra N vezes (para cada                                                      sequencia),   

  for(i=0; i < n; n++){ /* e dentro desse ciclo tenho outro que pergunte n  vezes o número. Se o número for par adicionas a  uma variavel

  /* "soma".

printf("A soma é" n+n); /* e tambem tenho que fazer uns if para ver se o                                                                                              é    par ou impar e fazer a soma dos n pares da sequência.

}

printf("\n");

}

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.