Bismark
Erfahrenes Mitglied
Hi Leuts,
ich weis nicht ob ich "Betriebsblind" bin oder "unfähig" zu programmieren.
Ich soll etwas programmieren, wo man zwei Dezimalzahlen und ein Operator (&, |, ^, <<, >>) eingibt. Es soll den Ergebnis berechnen und Alle eingegebenen Zahlen und das Ergebnis in sowohl Dezimaler, hexadezimaler, Oktaler als auch Binärer-Form gleichzeitig ausgeben. Die Sachen sollen in Funktionen ausgelagert werden.
Das Problem ist bei der Definition von char getOperator() bei der Eingabeüberprüfung.
Hier die fehlermeldungen:
91:58 C:\Users\...\ueb08.c [Warning] multi-character character constant
c:\Users\...\ueb08.c In function `getOperator':
91 C:\Users\...\ueb08.c [Warning] comparison is always true due to limited range of data type
91:72 C:\Users\...\ueb08\ueb08.c [Warning] multi-character character constant
91 C:\Users\...\ueb08.c [Warning] comparison is always true due to limited range of data type
[Linker error] undefined reference to `clearBuffer'
[Linker error] undefined reference to `clearBuffer'
91 C:\Users\...\ueb08.c ld returned 1 exit status
Hier die "escapesequenzen.h"
Lg Bismark
ich weis nicht ob ich "Betriebsblind" bin oder "unfähig" zu programmieren.
Ich soll etwas programmieren, wo man zwei Dezimalzahlen und ein Operator (&, |, ^, <<, >>) eingibt. Es soll den Ergebnis berechnen und Alle eingegebenen Zahlen und das Ergebnis in sowohl Dezimaler, hexadezimaler, Oktaler als auch Binärer-Form gleichzeitig ausgeben. Die Sachen sollen in Funktionen ausgelagert werden.
Das Problem ist bei der Definition von char getOperator() bei der Eingabeüberprüfung.
C:
#include <stdio.h>
#include "escapesequenzen.h"
void printFrame();
short getNumber();
char getOperator();
char askAgain();
short getNumber();
int main()
{
short Op1, Op2;// Erg;
char Op;
//do
//{
//Eingabemaske ausgeben
printFrame();
//1. Operator Eingeben
Op1 = getNumber(5);
// printInputNumber(5, Op1);
//Operator Eingeben
Op = getOperator();
//2.Operator eingeben
Op2= getNumber(7);
//printInputNumber(7, Op2); //Berechnet nur in Dezimal
//Ergebnis Berechnen
//Erg = calcResult(Op1, Op2, Op);
//1. Operanden ausgeben (in 4 versch. zahlensystemen)
//printResultNumber(12, Op1); // Gibt das Ergebnis aus
//Operator Ausgeben
//printResultNumber(Op);
//2.Operanden Ausgeben
//printResultNumber(14, Op2);
//Ergebnis Ausgeben
//printResultNumber(16, Erg);
//} while(askAgain);
return 0;
}
/*
* Gibt den Ein- und Ausgaberahmen aus
* Parameter: keine
* Ergebis: Der Ausgegebene Rahmen
*/
void printFrame()
{
CLEAR;
HOME;
printf("|-------------------------------------------------------------------------|\n");
printf("| |\n");
printf("| Bitoperator-Rechner |\n");
printf("| |\n");
printf("| Eingabe Zahl 1: |\n");
printf("| Operator: |\n");
printf("| Eingabe Zahl 2: |\n");
printf("| |\n");
printf("|-------------------------------------------------------------------------|\n");
printf("| |\n");
printf("| | dez | okt. | hex. | Binaerdarstellung |\n");
printf("| Zahl 1 | | | | |\n");
printf("| Operator | | | | |\n");
printf("| Zahl 2 | | | | |\n");
printf("|-------------------------------------------------------------------------|\n");
printf("| Ergebnis | | | | |\n");
printf("| |\n");
printf("|-------------------------------------------------------------------------|\n");
}
/*******************************************************
* Liest ein operator Ein und prüft, ob dieser gültig ist.
* Parameter: keine
* Ergebis: der Eingelesene Operator
********************************************************/
char getOperator()
{
char op;
POSITION(6, 13);
do
{
scanf("%c", op);
while(op != '&' && op != '|' && op != '^' && op != '<<' && op != '>>')
{
printf("Kein richtiger Operator! Bitte Geben Sie &, |, ^, << oder >> ein");
}
} while(!op);
if(op != '\n')
{
clearBuffer();
}
return op;
}
/*******************************************************
* Liest eine Zahl ein und prüft, ob dieser gültig ist.
* Parameter: keine
* Ergebis: der eingelesene Zahl
********************************************************/
short getNumber()
{
//Definition
short zahl, ScanErg; //Eingabe und Eingabeüberprüfung
do
{
ScanErg = scanf("%i", zahl);
if(!ScanErg)
{
printf("Falsche Eingabe! Bitte Geben Sie eine ganze Zahl ein!");
}
} while(!ScanErg);
if(zahl != '\n')
{
clearBuffer();
}
return zahl;
}
/*******************************************************
*Löscht den Tastaturpuffer nach der Eingabe
*Parameter: keine
*Ergebis: der gelöschte Tastaturpuffer
********************************************************/
void clearPuffer()
{
char Dummy; //Definition für das löschen des Tastaturpuffers
do
{
Dummy = getc(stdin);
} while (Dummy != '\n');
}
Hier die fehlermeldungen:
91:58 C:\Users\...\ueb08.c [Warning] multi-character character constant
c:\Users\...\ueb08.c In function `getOperator':
91 C:\Users\...\ueb08.c [Warning] comparison is always true due to limited range of data type
91:72 C:\Users\...\ueb08\ueb08.c [Warning] multi-character character constant
91 C:\Users\...\ueb08.c [Warning] comparison is always true due to limited range of data type
[Linker error] undefined reference to `clearBuffer'
[Linker error] undefined reference to `clearBuffer'
91 C:\Users\...\ueb08.c ld returned 1 exit status
Hier die "escapesequenzen.h"
C:
#ifndef escapesequenzen_h
#define escapesequenzen_h escapesequenzen_h
#define POSITION(Ze, Sp) printf("\033[%d;%dH",Ze,Sp)
#define HOME printf("\033[H")
#define UP(Anz) printf("\033[%dA",Anz)
#define UP_LINE printf("\033[A")
#define DOWN(Anz) printf("\033[%dB",Anz)
#define DOWN_LINE printf("\033[B")
#define RIGHT(Anz) printf("\033[%dC",Anz)
#define ONE_POS_RIGHT printf("\033[C")
#define LEFT(Anz) printf("\033[%dD",Anz)
#define ONE_POS_LEFT printf("\033[D")
#define STORE_POS printf("\033[s")
#define RESTORE_POS printf("\033[u")
#define ACT_POS printf("\033[6n")
#define CLEAR printf("\033[2J")
#define CLEAR_LINE printf("\033[K")
#define ATTRIBUTE_OFF printf("\033[0m")
#define BOLD printf("\033[1m")
#define UNDERSCORE printf("\033[4m")
#define BLINK printf("\033[5m")
#define INVERSE printf("\033[7m")
#define INVISIBLE printf("\033[8m")
#define FORECOLOR_BLACK printf("\033[30m")
#define FORECOLOR_RED printf("\033[31m")
#define FORECOLOR_GREEN printf("\033[32m")
#define FORECOLOR_YELLOW printf("\033[33m")
#define FORECOLOR_BLUE printf("\033[34m")
#define FORECOLOR_VIOLETT printf("\033[35m")
#define FORECOLOR_KOBALT printf("\033[36m")
#define FORECOLOR_WHITE printf("\033[37m")
#define BACKCOLOR_BLACK printf("\033[40m")
#define BACKCOLOR_RED printf("\033[41m")
#define BACKCOLOR_GREEN printf("\033[42m")
#define BACKCOLOR_YELLOW printf("\033[43m")
#define BACKCOLOR_BLUE printf("\033[44m")
#define BACKCOLOR_VIOLETT printf("\033[45m")
#define BACKCOLOR_KOBALT printf("\033[46m")
#define BACKCOLOR_WHITE printf("\033[47m")
#define TEXT_BW_25_40 printf("\033[=0h")
#define TEXT_COLOR_25_40 printf("\033[=1h")
#define TEXT_BW_25_80 printf("\033[=2h")
#define TEXT_COLOR_25_80 printf("\033[=3h")
#define GRAFIC_COLOR_320_200 printf("\033[=4h")
#define GRAFIC_BW_320_200 printf("\033[=5h")
#define GRAFIC_BW_640_200 printf("\033[=6h")
#define WRAP_MODE_ON printf("\033[=7h")
#define WRAP_MODE_OFF printf("\033[=7l")
#endif
Zuletzt bearbeitet: