vielleicht kann mir hier ja jemand helfen... sehe gerade nicht durch...
unsere aufgabe ist:
Erstellen Sie ein ausführlich dokumentiertes C-Programm, das folgendes leistet:
Der Benutzer soll erst eine positive ganze Zahl, die als Programmstatuswort zu interpretieren ist, einlesen.
Anschließend soll er folgende Menüpunkte angeboten bekommen
a) Statusbits setzen (Bits in einzulesendem Positionsbereich auf 1 setzen)
b) Statusbits zurücksetzen (Bits in einzulesendem Positionsbereich auf 0 setzen)
c) Statusbits umkippen (Bits in einzulesendem Positionsbereich von 0 auf 1 und von 1 auf 0 setzen.)
d) Statuswort bitweise ausgeben
e) Ende
Verwenden Sie für diese Aufgaben immer, wo es möglich ist, Bitoperationen. Es dürfen keine Vektoren verwandt werden.
mein code:
vielen dank schon mal.
gruß
satyja
unsere aufgabe ist:
Erstellen Sie ein ausführlich dokumentiertes C-Programm, das folgendes leistet:
Der Benutzer soll erst eine positive ganze Zahl, die als Programmstatuswort zu interpretieren ist, einlesen.
Anschließend soll er folgende Menüpunkte angeboten bekommen
a) Statusbits setzen (Bits in einzulesendem Positionsbereich auf 1 setzen)
b) Statusbits zurücksetzen (Bits in einzulesendem Positionsbereich auf 0 setzen)
c) Statusbits umkippen (Bits in einzulesendem Positionsbereich von 0 auf 1 und von 1 auf 0 setzen.)
d) Statuswort bitweise ausgeben
e) Ende
Verwenden Sie für diese Aufgaben immer, wo es möglich ist, Bitoperationen. Es dürfen keine Vektoren verwandt werden.
mein code:
Code:
/* Binärzahlen
Erstellungsdatum: 09.04.05 */
#include<stdio.h>
main(){
int istatuswort1=0, istatuswort2=0, itemp=0;
int ibereichanf=0, ibereichende=0;
char cmenuewahl=' ';
int iende=0, ianz, i;
printf ("Programm zur Ausgabe einer Dezimalzahl in Binaerdarstellung.\n"
"Zusaetzlich Bitoperationen ausfuerbar!\n");
fflush(stdin);
printf ("Bitte geben Sie eine ganze Zahl ein\n");
scanf("%d", &istatuswort1);
do
{
prinftf(" Menue\n"
"________\n\n\n"
"a) Statusbits setzen (auf 1)\n"
"b) Statusbits zuruecksetzen (auf 0 setzen)\n"
"c) Statusbits umkippen\n"
"d) Statuswort bitweise ausgeben\n"
"e) Ende\n\n");
fflush(stdin);
cmenuewahl=getchar();
switch (cmenuewahl)
{
case 'a':
/*Schleife zum Einlesen von dem Startwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Startwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen 1 und %d sein!\n\n",
(sizeof(int)*8-1));
fflush(stdin);
ianz=scanf("%d", &ibereichanf);
}
while ((ianz==0) || (ibereichanf < 1) || (ibereichanf > sizeof(int)*8-1));
/*Schleife zum Einlesen von dem Endwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Endwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen %d und %d sein!\n\n",
ibereichanf, sizeof (int)*8);
fflush(stdin);
ianz=scanf("%d", &ibereichende);
}
while ((ianz==0) || (ibereichende <= ibereichanf) || (ibereichende > sizeof(int)*8));
/*Statusbits auf 1 setzen*/
for (i=ibereichanf--; i <= ibereichende; i++)
{
itemp = itemp << 1;
itemp = itemp | 1;
}
itemp = itemp << ibereichanf;
istatuswort1 = istatuswort1 | itemp;
break;
case 'b':
/*Schleife zum Einlesen von dem Startwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Startwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen 1 und %d sein!\n\n",
(sizeof(int)*8-1));
fflush(stdin);
ianz=scanf("%d", &ibereichanf);
}
while ((ianz==0) || (ibereichanf < 1) || (ibereichanf > sizeof(int)*8-1));
/*Schleife zum Einlesen von dem Endwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Endwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen %d und %d sein!\n\n",
ibereichanf, sizeof (int)*8);
fflush(stdin);
ianz=scanf("%d", &ibereichende);
}
while ((ianz==0) || (ibereichende <= ibereichanf) || (ibereichende > sizeof(int)*8));
/*Statusbits zuruecksetzen /auf Null setzen*/
for (i=ibereichanf--; i<= ibereichende; i++)
{
itemp = itemp << 1;
itemp = itemp | 1;
}
itemp = ~itemp;
itemp = itemp << ibereichanf;
istatuswort1 = istatuswort1 & itemp;
case 'c':
/*Schleife zum Einlesen von dem Startwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Startwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen 1 und %d sein!\n\n",
(sizeof(int)*8-1));
fflush(stdin);
ianz=scanf("%d", &ibereichanf);
}
while ((ianz==0) || (ibereichanf < 1) || (ibereichanf > sizeof(int)*8-1));
/*Schleife zum Einlesen von dem Endwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Endwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen %d und %d sein!\n\n",
ibereichanf, sizeof (int)*8);
fflush(stdin);
ianz=scanf("%d", &ibereichende);
}
while ((ianz==0) || (ibereichende <= ibereichanf) || (ibereichende > sizeof(int)*8));
/*Statusbits umkippen*/
for(i=ibereichanf--; i<=ibereichende; i++)
{
itemp = itemp << 1;
itemp = itemp | 1;
}
itemp = itemp << ibereichanf;
istatuswort1=istatuswort1^itemp;
break;
case 'd':
/*Schleife zum Einlesen von dem Startwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Startwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen 1 und %d sein!\n\n",
(sizeof(int)*8-1));
fflush(stdin);
ianz=scanf("%d", &ibereichanf);
}
while ((ianz==0) || (ibereichanf < 1) || (ibereichanf > sizeof(int)*8-1));
/*Schleife zum Einlesen von dem Endwert des Positionsbereichs*/
do
{
printf("Bitte geben Sie einen Endwert fuer den\n"
"Positionsbereich der Statusbits an. Dieser\n"
"Wert muss zwischen %d und %d sein!\n\n",
ibereichanf, sizeof (int)*8);
fflush(stdin);
ianz=scanf("%d", &ibereichende);
}
while ((ianz==0) || (ibereichende <= ibereichanf) || (ibereichende > sizeof(int)*8));
/*Statuswort bitweise ausgeben*/
for (i=sizeof(istatuswort1)*8-1;i>=0;i--)
{
/*printf("%u, (istatuswort & ((1 << (i+1))-1))>>i);*/
printf("%n", (istatuswort1>>i)&1);
}
printf("\n\n");
break;
case 'e':
iende=1;
printf ("Das Programm wird beendet");
break;
default:
printf ("Ihre Eingabe war falsch!\n");
}
}while (iende!=1);
return 0;
}
vielen dank schon mal.
gruß
satyja