Wahrheitstabelle ausgeben in C?

Hallo zusammen,

Das ist meine Aufgabe, die ich in der Uni lösen muss, allerdings habe ich ein Problem und es werden statt 16 Zeilen bei mir nur zwei Zeilen ausgegeben.

#include <stdio.h>


int main(void)
{
    int schritte = 0;
    int a, b, c, d, e, f, g, h, i;
    a = 0;
    b = 0;
    c = 0;
    d = 0;


    printf(" | A | B | C | D || E | G | H | I | F |\n");
    printf("-+---+---+---+---++---+---+---+---+---+-\n");


    while(schritte <= 16)
    {
        while(a <= 1)
        {
            while(b <= 1)
            {
                while(c <= 1)
                {
                    while(d <= 1)
                    {
                        e = a && -b;
                        g = c || -d;
                        h = -e || g;
                        i = a || b || d;
                        f = h==i;


                        printf(" |%d |%d | %d |%d ||%d |%d |%d |%d |\n", a, b, c, d, e, g, h, i, f);
                        
                        d++;
                    }


                    c++;
                }


                b++;    
            }
                  
            a++;
        }


        schritte++;
    }
}

als Ausgabe bekomme ich dann nur das:

| A | B | C | D || E | G | H | I | F |
-+---+---+---+---++---+---+---+---+---+-
 |0 |0 | 0 |0 ||0 |0 |0 |0 |
 |0 |0 | 0 |1 ||0 |1 |1 |1 |

muss da noch bisschen mit dem Abstand rumspielen aber vom Prinzip her passt es ja, nur leider nur mit den zwei Zeilen.

Danke im Vorraus!

Bild zum Beitrag
Computer, Studium, Schule, programmieren, Informatik, C (Programmiersprache)
Taschenrechner in C: Könnt ihr mir bei der Überprüfung des Operators helfen?

Hallo Community,

ich bräuchte Hilfe bei meinem C-Code. Ich komme nicht weiter bei der Überprüfung vom Taschenrechner. Ich möchte, dass der Operator überprüft werden soll. Sprich bei allen anderen Buchstaben außer A, S, M, D soll der Benutzer eine neue Angabe machen.

Hier mein Code:

int main()
{
  // Deklarierung der Variablen
  char auswahl;
  float zahl1, zahl2;
  float ergebnis;

  // Auswahl vom Rechenoperator
  printf("Wie moechtest du Rechnen?\n");
  printf("(a) Addieren\n");
  printf("(s) Subtrahieren\n");
  printf("(m) Multiplizieren\n");
  printf("(d) Dividieren\n");
  scanf("%c", &auswahl); // %c für char Variablen

  while () {
    if (auswahl != 'a' || 's' || 'm' ||'d') {
      printf("\nFalsche Eingabe. Waehle eine neue:");
    }
  }

  // Eingabe der Zahlen
  printf("Gib deine erste Zahle ein: ");
  scanf("%f", &zahl1);
  printf("Gib deine zweite Zahle ein: ");
  scanf("%f", &zahl2);

  // Auswahl-Auswertung vom Benutzer
  switch (auswahl) {
    case 'a':
      ergebnis = zahl1 + zahl2;
      break;
    case 's':
      ergebnis = zahl1 - zahl2;
      break;
    case 'm':
      ergebnis = zahl1 * zahl2;
      break;
    case 'd':
      ergebnis = zahl1 / zahl2;
      break;
    default:
      break;
  }

  // Ergebnisasugabe
  if (auswahl == 'a') {
    printf("\nErgebnis:\n%.1f + %.1f = %.1f", zahl1, zahl2, ergebnis);
  }

  if (auswahl == 's') {
    printf("Ergebnis:\n%.1f - %.1f = %.1f", zahl1, zahl2, ergebnis);
  }

  if (auswahl == 'm') {
    printf("Ergebnis:\n%.1f * %.1f = %.1f", zahl1, zahl2, ergebnis);
  }

  if (auswahl == 'd') {
    printf("Ergebnis:\n%.1f / %.1f = %.1f", zahl1, zahl2, ergebnis);
  }

  printf("\n\n");
  return 0;
}
Computer, programmieren, Informatik, Programmiersprache, C (Programmiersprache)
C++ Der Ausdruck muss einen ganzzahligen Enumerationstyp aufweisen?

Was ist hier das Problem?

/   Programm:       Schiefer Wurf
* Filename:       SchieferWurf.cpp
  Autor:       Kai Lauber
* Version: 1.0
* Datum: 25-OKT-2019
  Entwicklungsablauf:
* (Version, Datum, Autor, Entwicklungsschritt)
 1.0, 25-OKT-2019, Kai Lauber, Entwicklungsbeginn 

  Verwendungszweck:
 ‐ Ausgabe der Koordinatenpunkte (x, y) eines Wurfkörpers 
* Beschreibung:     ← Kurzbeschreibung des Programms
 ‐ Das zu erstellende Modul soll die Koordinatenpunkt (x,y) des Wurfkörpers aus den gegebenen Grössen ermitteln und zurückgeben. 	– Anfangsgeschwindigkeit
 – Abschusswinkel 	– Zeit seit des Abwurfes
 
  Precondition:
* ‐ Keine
  Postcondition:
* ‐ Keine
  Folgende Funktionen werden erzeugt:
* ‐
  Copyright (c) 2019 by Kai Lauber

***/

// Bibliotheksfunktion einbinden #include "stdio.h"

// Hauptprogramm int main() {

int v;
int w;
int t;
double x;
double y;
double g = 9.81;


printf("Geben Sie bitte die Anfangsgeschwindigkeit ein: ");
scanf_s("%d", &amp;v);


printf("Geben Sie bitte die Abschusswinkel ein: ");
scanf_s("%d", &amp;w);


printf("Geben Sie bitte die Zeit seit des Abwurfes ein: ");
scanf_s("%d", &amp;t);


int sin = w - w ^ 3 / 6 + w ^ 5 / 120 - w ^ 7 / 5040;


int cos = 1 - w ^ 2 / 2 + w ^ 4 / 24 - w ^ 6 / 720 + w ^ 8 / 40320;


x = v * t * cos;
y = v * t * sin - g / 2 * t ^ 2;


printf("Die Koordinaten sind x = %f und y = %f", x, y);

}

Computer, programmieren, C (Programmiersprache)
Was ist der Tastaturpuffer?

Hallo,

Ich lerne gerade C für mein Studium und wir arbeiten mit scanf. Unser Prof hat das Thema Tastaturpuffer aber leider nicht richtig erklärt und ich stehe dementsprechend auf dem Schlauch.

Hier ist die ganze Sache ja noch sehr verständlich.

Eine Zahl wird eingelesen. Diese Eingabe wird mit \n bestätigt. Das in der letzten Zeile eingegeben \n befindet sich in diesem Tastaturpuffer und  wird jetzt automatisch im zweiten scanf eingegeben. Damit wird dieses scanf "Übersprungen" und der Variable "Dummy" das \n  zugewiesen.

EIne Zahl und ein Zeichen wird eingelesen. Wenn jetzt sowohl das Zeichen als auch das \n in dem Tastaturpuffer gespeichert ist, dann müsste ich eine 7 ein A und einen Zeilenumbruch aus Ausgabe bekommen. Das Passiert aber nicht.

Wenn nur das A in dem Tastaturpuffer gespeichert ist, dann müsste ich eine 7 ein A und die möglichkeit erhalten, ein neues Zeichen einzugeben. Das Passiert aber auch nicht.

Stattdessen erhalt ich einfach nur eine 7 und ein A und der Code wird beendet. Warum?

Hier die beiden Codes:

#include <stdio.h>

int main(){

    int Zahl;

    char Dummy;

    printf("geben Sie bitte eine ganze Zahl ein:");

    scanf("%d", &Zahl);                                         .

    scanf("%c", &Dummy);                                        

    printf("%c", Dummy);                                        

    return 0;

}

Und

#include <stdio.h>

int main(){

    int Zahl;

    char Dummy2;

    char Dummy;

    printf("\ngeben Sie bitte eine ganze Zahl und ein Zeichen ein:");

    scanf("%d", &Zahl);                                                 

    printf("%d", Zahl);

    scanf("%c", &Dummy);                                               

    printf("%c", Dummy);                                             

    scanf("%c", &Dummy2);                                                

    printf("%c", Dummy2);

    return 0;

}

Bild zum Beitrag
Computer, Schule, programmieren, C (Programmiersprache)