/[livstidsfanger]/trunk/livstidsfanger.c
ViewVC logotype

Diff of /trunk/livstidsfanger.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

  Revision 4 by trond, 2014-11-07T07:56:17Z
vs.
  Revision 5 by trond, 2014-11-07T08:04:18Z
*** trunk/livstidsfanger.c	2014/11/07 07:56:17	4
--- trunk/livstidsfanger.c	2014/11/07 08:04:18	5
***************
*** 6,11 ****
--- 6,12 ----
  #include <errno.h>
  #include <pthread.h>
  #include <signal.h>
+ #include <stdbool.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
***************
*** 26,32 ****
  
  static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
! static unsigned brytere[2U];
  
  noreturn void *livstidsfange(void *arg);
  void visResultater(void);
--- 27,33 ----
  
  static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
! static bool brytere[2U];
  
  noreturn void *livstidsfange(void *arg);
  void visResultater(void);
***************
*** 83,93 ****
  {
    size_t i = (size_t)arg;
  
!   unsigned harVippetBryter1 = 0U;
!   unsigned bryter1HarVartOppe = 0U;
  
!   unsigned forrigeGangErGyldig = 0U;
!   unsigned forrigeGang = 0U;
  
    // Den tellende livstidsfangen kan allerede nå telle seg selv.
    if (i == tellendeLivstidsfange) {
--- 84,94 ----
  {
    size_t i = (size_t)arg;
  
!   bool harVippetBryter1 = false;
!   bool bryter1HarVartOppe = false;
  
!   bool forrigeGangErGyldig = false;
!   bool forrigeGang = false;
  
    // Den tellende livstidsfangen kan allerede nå telle seg selv.
    if (i == tellendeLivstidsfange) {
***************
*** 109,123 ****
      printf("livstidsfange %2zu har besøkt rommet %u ganger\n", i + 1, antallBesok[i]);
  
      if (i == tellendeLivstidsfange) {
!       if (brytere[0] == 0U) {
          printf("livstidsfange %2zu ser at bryter 1 er nede og vipper opp bryter 1\n", i + 1);
!         brytere[0] = 1U;
        } // if
        else {
          brytere[0] = !brytere[0];
          printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == 1U ? "opp" : "ned");
  
!         if (forrigeGangErGyldig == 1U && forrigeGang == 0U) {
            antallLivstidsfanger++;
            printf("livstidsfange %2zu har talt opp %u livstidsfanger\n", i + 1, antallLivstidsfanger);
  
--- 110,124 ----
      printf("livstidsfange %2zu har besøkt rommet %u ganger\n", i + 1, antallBesok[i]);
  
      if (i == tellendeLivstidsfange) {
!       if (brytere[0] == false) {
          printf("livstidsfange %2zu ser at bryter 1 er nede og vipper opp bryter 1\n", i + 1);
!         brytere[0] = true;
        } // if
        else {
          brytere[0] = !brytere[0];
          printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == 1U ? "opp" : "ned");
  
!         if (forrigeGangErGyldig == true && forrigeGang == false) {
            antallLivstidsfanger++;
            printf("livstidsfange %2zu har talt opp %u livstidsfanger\n", i + 1, antallLivstidsfanger);
  
***************
*** 127,156 ****
            } // if
          } // if
  
!         forrigeGangErGyldig = 1U;
          forrigeGang = brytere[0];
        } // else
      } // if
      else { // Vanlig livstidsfange.
!       if (brytere[0] == 1U) {
!         printf("livstidsfange %2zu ser at bryter 1 er oppe, mens bryter 2 er %s\n", i + 1, brytere[1] == 1U ? "oppe" : "nede");
!         bryter1HarVartOppe = 1U;
  
          brytere[1] = !brytere[1];
!         printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == 1U ? "opp" : "ned");
        } // if
        else {
!         printf("livstidsfange %2zu ser at bryter 1 er nede, mens bryter 2 er %s\n", i + 1, brytere[1] == 1U ? "oppe" : "nede");
  
!         if (harVippetBryter1 == 0U && bryter1HarVartOppe == 1U) {
            brytere[0] = !brytere[0];
!           printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == 1U ? "opp" : "ned");
  
!           harVippetBryter1 = 1U;
          } // if
          else {
            brytere[1] = !brytere[1];
!           printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == 1U ? "opp" : "ned");
          } // else
        } // else
      } // else
--- 128,157 ----
            } // if
          } // if
  
!         forrigeGangErGyldig = true;
          forrigeGang = brytere[0];
        } // else
      } // if
      else { // Vanlig livstidsfange.
!       if (brytere[0] == true) {
!         printf("livstidsfange %2zu ser at bryter 1 er oppe, mens bryter 2 er %s\n", i + 1, brytere[1] == true ? "oppe" : "nede");
!         bryter1HarVartOppe = true;
  
          brytere[1] = !brytere[1];
!         printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == true ? "opp" : "ned");
        } // if
        else {
!         printf("livstidsfange %2zu ser at bryter 1 er nede, mens bryter 2 er %s\n", i + 1, brytere[1] == true ? "oppe" : "nede");
  
!         if (harVippetBryter1 == false && bryter1HarVartOppe == true) {
            brytere[0] = !brytere[0];
!           printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == true ? "opp" : "ned");
  
!           harVippetBryter1 = true;
          } // if
          else {
            brytere[1] = !brytere[1];
!           printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == true ? "opp" : "ned");
          } // else
        } // else
      } // else


 

svn@ximalas.info
ViewVC Help
Powered by ViewVC 1.3.0-beta1