Ir ao conteúdo
  • Cadastre-se

Problema em algoritmo usando while


Pitchurau

Posts recomendados

Galera estou tendo problemas com esse codigo...por favor me ajudem.

 

obs: A questão deve ser resolvida usando while...

 

Numa estação meteorológica, foram tomadas as temperaturas médias diárias de uma cidade. Em função desses dados capturados, calcule o número de dias com temperaturas abaixo de zero. 

Seu programa vai receber os dados em duas linhas. A primeira terá a quantidade de dias cuja temperatura foi capturada. A segunda linha conterá as temperaturas obtidas para cada dia.

 

 

 

Meu codigo:

#include<stdio.h>int main(){int dias,temps,i,soma;int m[temps];scanf("%i",&dias);i=1;soma = 0;while(i < dias)        {        scanf("%i",&m[temps]);            if(m[temps] < 0)            {            soma = soma + m[temps];            printf("%i",soma);            }        i++;        }  return 0;    }
Link para o comentário
Compartilhar em outros sites

Você atribuiu a quantidade de dias, mas não atribuiu as temperaturas no vetor.

Isso não faz sentido: m[dias] = dias

A alocação deve ser assim: int m[dias], apenas após atribuir a quantidade de dias.

Feito isso, você vai usar o loop para atribuir as temperaturas.

while(i < dias){
scanf("%d", &m);
...

Isso também não faz sentido: soma = soma + m[dias].

Se quiser somar as temperaturas, teria que ser assim: soma = soma + m

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você atribuiu a quantidade de dias, mas não atribuiu as temperaturas no vetor.

Isso não faz sentido: m[dias] = dias

A alocação deve ser assim: int m[dias], apenas após atribuir a quantidade de dias.

Feito isso, você vai usar o loop para atribuir as temperaturas.

while(i < dias){

scanf("%d", &m);

...

Isso também não faz sentido: soma = soma + m[dias].

Se quiser somar as temperaturas, teria que ser assim: soma = soma + m

 

Tentei acompanhar suas instruções e deu nisso Oliver...a saída continua a mesma de antes... não ta imprimindo a soma, apenas as temperaturas < 0

#include<stdio.h>int main(){int dias,i,soma;scanf("%i",&dias);int m[dias];    i=1;soma = 0;while(i < dias)        {        scanf("%d",&m[i]);            if(m[i] < 0)            {            soma = soma + m[i];            printf("%d",soma);            }        i++;        }  return 0;    }
Link para o comentário
Compartilhar em outros sites

Você vai usar o vetor em outra parte do programa? Se não for, não vejo necessidade de usar.

 

Mas para seu programa funcionar corretamente,  atribua i = 0 (no lugar de i = 1).

 

Além disso a soma deve retornar a quantidade de dias, e não a soma dos dias, por isso deve ser: soma = soma + 1.

 

E o printf da soma deve ficar fora do while.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você vai usar o vetor em outra parte do programa? Se não for, não vejo necessidade de usar.

 

Mas para seu programa funcionar corretamente,  atribua i = 0 (no lugar de i = 1).

 

Além disso a soma deve retornar a quantidade de dias, e não a soma dos dias, por isso deve ser: soma = soma + 1.

 

E o printf da soma deve ficar fora do while.

 

Muito obrigado, Oliver!

 

Definitivamente não consigo entender a relação do i [que para mim é um contador] com o m e tambem o fato de usar soma + 1 e não soma + m

 

Se pudesse responder, ficaria mais agradecido ainda! rs

 

De qualquer forma, foi de grande juda suas respostas.

 

Codigo final:

#include<stdio.h>int main(){int dias,temps,i,soma;scanf("%i",&dias);int m[dias];    i=1;soma = 0;while(i <= dias)        {        scanf("%i",&m[i]);            if(m[i]< 0)            {                soma = soma + 1;            }        i++;        }printf("%i",soma);return 0;    }
Link para o comentário
Compartilhar em outros sites

O i é um contador e no seu programa serve para indicar o índice do vetor e limitar a quantidade de ciclos (já que o loop termina quando i <= dias).

Na instrução m, supondo que i seja 2, é o mesmo que m[2]. Logo, é o elemento de índice 2 do vetor.

soma = soma + 1 vai incrementando soma se a temperatura for < 0.

Se fosse soma = soma + m a operação seria com base no valor da posição i do vetor.

 

Esse exercício também poderia ser resolvido assim:

    int temp, dias, qtd = 0, i = 0;    printf("Dias: ");    scanf("%d", &dias);        while(i < dias){        printf("Temperatura: [%d]: ", ++i);        scanf("%d", &temp);        if(temp < 0) qtd++;    }    printf("Dias com temp. abaixo de zero = %d\n", qtd);    return 0;
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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