# Funktionstabelle



## Josef (22 August 2005)

Hallo liebe Mitglieder!

Weiss jemand einen besseren Algorithumus um die Zeilen einer 
Funktionstabelle zu erzeugen. Mein Programm erzeugt nur die
Zeilen von 3 Eingangsvariablen (e1-e3).

#include <stdio.h>
main()
{
  int x,e1,e2,e3,a1,a2;
  x=e1=e2=e3=a1=a2=0;
  printf("\nE3    E2    E1    A1    A2\n");
  printf("---------------------------\n");
  for (x=0;x<=7;x++) {
    /*printf(" %d     %d     %d\n",e3,e2,e1);*/
    if(x==0||x==2||x==4||x==6)
      e1=0;
    else
      e1=1;
    if(x==2||x==3||x==6||x==7)
      e2=1;
    else
      e2=0;
    if(x==0||x==1||x==2||x==3)
      e3=0;
    else
      e3=1;
    a1=e1&&e2&&e3;
    a2=e1||e2||e3;
    printf(" %d     %d     %d     %d     %d\n",e3,e2,e1,a1,a2);

  }
  printf("\n");
}


cu
Josef


----------



## Zottel (22 August 2005)

#include <stdio.h>
main()
{
  int x,e1,e2,e3,a1,a2;
  x=e1=e2=e3=a1=a2=0;
  printf("\nE3    E2    E1    A1    A2\n");
  printf("---------------------------\n");
  for (x=0;x<=7;x++) {
    /*printf(" %d     %d     %d\n",e3,e2,e1);*/
//    if(x==0||x==2||x==4||x==6)
if ((x & 0x01==0) // ale geraden Zahlen
      e1=0;
    else
      e1=1;
//    if(x==2||x==3||x==6||x==7)
if ((x & 0x02==1) // alle Zahlen, bei denen bit 2 gesetzt ist
      e2=1;
    else
      e2=0;
//    if(x==0||x==1||x==2||x==3)
if ((x & 0x04==0) // alle Zahlen, bei denen bit 3 0 ist
      e3=0;
    else
      e3=1;
    a1=e1&&e2&&e3;
    a2=e1||e2||e3;
    printf(" %d     %d     %d     %d     %d\n",e3,e2,e1,a1,a2);

  }
  printf("\n");
}

oder in einer Schleife mit Array:
 for (x=0;x<=7;x++) {
 int mask=0x1;
 for (bit=0;bit<=2;bit++) { 
  if ((x & mask)!=0) e[bit]=1; else e[bit]=0;
 mask<<=1;
 }
// Logik und Druck
}


----------



## Josef (7 September 2005)

Hurra! jetzt klapt es endlich wie ich es will!
Danke fuer die Hilfe mit den bitwise operatoren.

So hab ich es gemacht:

#include <stdio.h>

int main(void)

{
  int x,e1,e2,e3;
  x=e1=e2=e3=0;
  printf("\nE3 E2 E1\n");
  printf("---------\n");
  for (x=0;x<=7;x++) {
    if ((x & 0x01)==0) /*alle geraden Zahlen */
        e1=0;
        else
        e1=1;
    if ((x & 0x02)==0) /* alle Zahlen, bei denen bit 2 0 ist */
        e2=0;
        else
        e2=1;
    if ((x & 0x04)==0) /* // alle Zahlen, bei denen bit 3 0 ist */
        e3=0;
        else
        e3=1;
    printf(" %d  %d  %d \n",e3,e2,e1);
   }
   printf("\n");
}

Jetzt kann ich endlich weitermachen mit dem Buch "Steuerungstechnik mit
SPS" von Guenther Wellenreuther und Dieter Zastrow.

cu
Josef


----------

