Ir ao conteúdo

C Programa em linguagem C


Ir à solução Resolvido por De Los Santos,

Posts recomendados

Postado

Boa tarde, eu tenho uma dúvida num programa em C com o seguinte enunciado:

Permitir ao utilizador digitar n números inteiros, terminando ao digitar um número menor ou igual a zero.

Depois apresenta a soma de todos os números pares digitados. Para a realização de cálculos, apenas são considerados os números de 1 a 50, ambos inclusive.

 

O meu código é o seguinte:

#include<stdio.h>
#include<stdlib.h>
main()
{
int n, soma_par=0;
do {
printf("Indique um numero inteiro: \n");
scanf(" %d",&n);
if (n<1 && n>50) {
    printf("Digitou um numero invalido\n");}
else (n%2==0);{
soma_par= soma_par + n;}
}
while (n>0);
printf("A soma de todos os numeros pares digitados e = %d \n",soma_par);
system("pause");
}

O meu código em vez de parar de aceitar valores quando se coloca valores superiores a 50 continua, ignorando a condição.

Agradeço a ajuda.

  • Obrigado 1
  • Solução
Postado

O erro está nesta linha:

 

if (n<1 && n>50)

 

Para que o script pare de aceitar valores maiores que 50, você tem que substituir o "e" pelo "ou", assim:

 

if (n<1 || n>50)

 

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, De Los Santos disse:

O erro está nesta linha:

 



if (n<1 && n>50)

 

Para que o script pare de aceitar valores maiores que 50, você tem que substituir o "e" pelo "ou", assim:

 



if (n<1 || n>50)

 

Já alterei mas agora não executa a soma só dos pares mas sim dos números todos, ou seja, soma tudo.

Não está a ler a condição (n%2 ==0).

#include<stdio.h>
#include<stdlib.h>
main()
{
int n, soma_par=0;
do {
printf("Indique um numero inteiro: \n");
scanf(" %d",&n);
if (n<1 || n>50) {
    printf("Digitou um numero invalido \n");
    break;}
else (n%2 ==0);{
soma_par += n; // soma_par = soma_par + n
}
}
while (n>0);
printf("A soma de todos os numeros pares digitados e = %d \n",soma_par);
system("pause");
}

  • Obrigado 1
Postado
1 hora atrás, De Los Santos disse:

Tenta o seguinte. Muda a linha:

 



else (n%2 ==0);{

 

Por:

 



else if(n%2 ==0){

 

Já deu, o problema era o ponto e vírgula antes da chaveta, não deixava ler a condição.

Obrigado!

Só por curiosidade, se eu quisesse efectuar a soma dos pares existentes numa matriz, podia usar o mesmo código?

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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