Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dramos21

[Resolvido] Estruturas

Mensagens Recomendadas

dramos21

Boas pessoal, Tou com uma dúvida nesta função horas, esta é uma função que me vai dar em horas o tempo que uma actividade do dia a dia de uma pessoa demora . Eu tenho uma estrutura definida Actividade que contem informação para o nome da actividade("titulo") e para a duração em minutos ( " minutos ");

Este exercício estava resolvido da seguinte maneira, e eu não consigo entender o que ele faz no ultimo if. Porque eu faria, if( encontrouAct == 0) e faria o printf. qual é o valor que encontrouAct fica apos o while se para a primeira vez que correr o ciclo corra tudo bem? Fica com o valor de 1? Se depois strcmp for != 0 ele fica com esse mesmo valor de 1 ou retorna a 0? Obrigado!

void horas( Actividade vActividades [], int n, char titulo[] )
{
  int i = 0;
  int encontrouAct = 0;
  int dura;
  printf( "%s ", titulo );
  while ( i < n && ! encontrouAct) {
 if ( strcmp( vActividades[ i ].titulo, titulo) == 0 ) {
 encontrouAct = 1;
 dura = vActividades[ i ].minutos;
 printf( "teve duracao %d:%d\n", dura / 60, dura % 60);
 }
  i++;
  }
  if ( ! encontrouAct )
  printf( ": Actividade inexistente\n");
  return;
}

Editado por pmg
GeSHi adicionada; formatacao removida

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

if (!intvar) /* ... */;

if (intvar == 0) /* ... */;

Os dois codigos acima sao absolutamente iguais (assim como os 2 de baixo).

if (intvar) /* ... */;

if (intvar != 0) /* ... */;


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dramos21

Mas supostamente o ! não significa o contrário? Eu tenho ali encontrouAct=0 ao inicio, apos o while, essa mesma variável pode ficar com o valor 1 , e nesse caso !encontrouAct é um valor diferente de 1 ou não? Mas ainda assim posso fazer como disse, igualar a 0 o encontrouAct que me é mais perceptível.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

se encontrouAct for zero, !encontrouAct é 1;

se encontrouAct for diferente de zero, !encontrouAct é 0;


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.