C (Programmiersprache) – die besten Beiträge

C Programmierung: Scanf-befehl funktioniert nicht nach If- Anweisung

Guten Tag habe da ein Problem bei einem Programm an dem ich gerade arbeite: Ich soll mit Kommandos (list, pop, push und exit) einen Stack mit zeichen füllen, das letzte zeichen löschen, eine Liste des Stacks ausgeben oder das Programm verlassen. Momentan funktioniert nur das verleassen des Programms, da der Scanf-befehl hinter der if-Anweisung nach dem Kompilieren nicht ausgeführt wird, um ein Zeichen einzulesen. (fgetc() hat auch nicht funktioniert).

Vielleicht kann mir ja jemand erklären woran es liegt.

Quelltext:

include include include define NSTACK 15

int main(){ //Anfang Main

//Variablendeklaration char eingabe[6]; char stack[NSTACK]; char item; char z; //zwischenspeicher für zeichen int sp=0; //Ende Variablendeklaration

printf("\nStack auffüllen (bis 15 Zeichen)\n");
printf("Liste der Befehle:\n\n");
printf("list = Liste des Stacks anzeigen\n");
printf("push = Zeichen auf den Stack legen\n");
printf("pop = Zeichen vom Stapel nehmen\n");
printf("exit = Programm beenden\n\n");

 while(eingabe){    //Eingabeschleife

  printf("\nBitte geben Sie ihren Befehl ein: ");
  scanf("%s", &eingabe);
  printf("eingegebener Befehl: %s\n", eingabe);

  
  if (strcmp(eingabe,"exit") == 0){             //exit
printf("\n!!Das Programm wird beendet!!\n");
exit(1);
  } //ende exit
  
  else if (strcmp(eingabe,"push") == 0){            //push
scanf("%c", &z);
printf("Zeichen wird auf Stack gelegt\n");
  } //ende push
  else if (strcmp(eingabe,"pop") == 0){         //pop
printf("Das obertste Zeichen wird entfernt\n");
  } //ende pop
  else if (strcmp(eingabe,"list") == 0){            //liste ausgeben
printf("Die Liste des Stacks wird ausgegeben\n");
printf("%s\n", &stack);
  } //ende list
  
 }  //Ende eingabeschleife
 


printf("\ntest");

printf("\n\n"); return 0; } //Ende Main

programmieren, Informatik, scan, stack, C (Programmiersprache)

Taschenrechner programmieren mit C (Double und Nachkommastellen)

Ich hab angefangen einen Taschenrechner mit C zu programmieren und so sieht es bis jetzt aus


#include "stdlib.h"
#include "math.h"
#include "string.h"
#include "stdio.h"

int main(int argc, char *argv[])
{

int Zahl1;
int Zahl2;
int Gesamt;
int Merker;                                     
int Laenge;
int Stelle;


char Eingabe_Zahl1[100];                                     
char Eingabe_Zahl2[100];                                      
char Rechenzeichen[100];                              

ANFANG:                                                                                          

gets(Rechenzeichen);    

Merker = 0;

if (Rechenzeichen[0]=='+') Merker = 1;    

if (Rechenzeichen[0]=='-') Merker = 1;   

if (Rechenzeichen[0]=='*') Merker = 1;   

if (Rechenzeichen[0]=='/') Merker = 1;

if (Merker == 0) printf("Hier duerfen nur Rechenzeichen stehen!\n");                                  
if (Merker == 0) printf("\n");
if (Merker == 0) goto ANFANG;


gets(Eingabe_Zahl1);   

Laenge=strlen(Eingabe_Zahl1);

//printf("%d Zeichen\n", Laenge);

Stelle = 0 ;

PRUEF_ZAHL1:

Merker = 0 ;

if (Eingabe_Zahl1[Stelle]== '0') Merker = 1;    

if (Eingabe_Zahl1[Stelle]== '1') Merker = 1;   

if (Eingabe_Zahl1[Stelle]== '2') Merker = 1;   

if (Eingabe_Zahl1[Stelle]== '3') Merker = 1;

if (Eingabe_Zahl1[Stelle]== '4') Merker = 1; 

if (Eingabe_Zahl1[Stelle]== '5') Merker = 1; 

if (Eingabe_Zahl1[Stelle]== '6') Merker = 1; 

if (Eingabe_Zahl1[Stelle]== '7') Merker = 1; 

if (Eingabe_Zahl1[Stelle]== '8') Merker = 1; 

if (Eingabe_Zahl1[Stelle]== '9') Merker = 1; 

if (Merker == 0) printf("Hier duerfen nur Zahlen stehen!\n");
if (Merker == 0) printf("\n");
if (Merker == 0) goto ANFANG;           

Stelle=Stelle +1;
if (Laenge != Stelle) goto PRUEF_ZAHL1;

printf("Bitte geben Sie die zweite Zahl ein   : ");       
gets(Eingabe_Zahl2);                                          

Laenge=strlen(Eingabe_Zahl2);

//printf("%d Zeichen\n", Laenge);

Stelle = 0 ;

PRUEF_ZAHL2:

Merker = 0 ;

if (Eingabe_Zahl2[Stelle]== '0') Merker = 1;    

if (Eingabe_Zahl2[Stelle]== '1') Merker = 1;   

if (Eingabe_Zahl2[Stelle]== '2') Merker = 1;   

if (Eingabe_Zahl2[Stelle]== '3') Merker = 1;

if (Eingabe_Zahl2[Stelle]== '4') Merker = 1; 

if (Eingabe_Zahl2[Stelle]== '5') Merker = 1; 

if (Eingabe_Zahl2[Stelle]== '6') Merker = 1; 

if (Eingabe_Zahl2[Stelle]== '7') Merker = 1; 

if (Eingabe_Zahl2[Stelle]== '8') Merker = 1; 

if (Eingabe_Zahl2[Stelle]== '9') Merker = 1; 

if (Merker == 0) printf("Hier duerfen nur Zahlen stehen!\n");
if (Merker == 0) printf("\n");
if (Merker == 0) goto ANFANG;           

Stelle=Stelle+1;
if (Laenge != Stelle) goto PRUEF_ZAHL2;

Zahl1=atoi(Eingabe_Zahl1);                                    
Zahl2=atoi(Eingabe_Zahl2);                                    

if (Rechenzeichen[0]=='+') Gesamt = Zahl1 + Zahl2;    

if (Rechenzeichen[0]=='-') Gesamt = Zahl1 - Zahl2;   

if (Rechenzeichen[0]=='*') Gesamt = Zahl1 * Zahl2;   

if (Rechenzeichen[0]=='/') Gesamt = Zahl1 / Zahl2;

printf("Das Ergebnis lautet                   : %d\n" ,Gesamt);
printf("\n");           

goto ANFANG;                            

Ich weiß goto und atoi und sowas ist doof aber darum geht es jetzt nicht.
WEnn man bei diesem Rechner die Zahl 2147483647 eingibt und dann +1 rechnet
kommt - 2147483647 raus.
Man macht das anscheind mit double aber irgendwie verteh ich das nicht und außerdem kann dieser Rechner keine Kommazahlen berechnen.
Wäre nett wenn jemand der das versteht mir helfen könnte.
DAnke

Computer, programmieren, Taschenrechner, C (Programmiersprache), double, nachkommastellen

Meistgelesene Beiträge zum Thema C (Programmiersprache)