• 20.07.2025, 01:13
  • Register
  • Login
  • You are not logged in.

 

Mastercooling

God

C++ Fragen

Tuesday, January 4th 2005, 7:08pm

Hi
Ich bin hier gerade fleißig am C++ üben blicke nur nicht mehr so richtig durch. Bin übrigens im ausbildungsjahr also wundert euch nicht falls euch das zu leicht erscheint.

1.
Dass Überwachungsprogramm einer Anlagensteuerung soll 16 verschiedene Schaltausgänge kontrollieren können. Dazu ist es nitwendig, digitale Ausgänge ein, bzw ausschalten zu können. Um nicht für jeden Schaltausgang eine extra Varaiable verwenden zu müssen, sollen die Ausgänge über eine einzige 16 Bit cVariable gesteuert werden.

Zu beachtn. niederwertigstes bit = 2 hoch 0 bzw ausgang 0
höchstewertigstes Bit = 2 hoch 15 Ausgang 15

1= eingeschaltet
0= ausgeschalttet

Wenn die Anlage hochfährt, sollen folgende Ausgänge eingeschaltet sein
1,3,4,5,10,11


-1Schaltsequenz: 7 und 9 einschalten(restbeibehalten)
-2Schaltsequenz: 1 und 3 abschalten (Rest beibehalten)
-3 schaltsequenz: alle ein auf aus, alle aus auf ein(invertieren sozusagen)


ALSO MEIN LÖSUNGSVORSCHLAG wäre, das cihe ine short integer Variable(2Byte = 16 Bit) mit der Zahl 1549 deklariere. Das ist nämlich die Zahl die man kriegt, wenn man eben über die Binärte darstellung mit den am anfang eingeschalteten Ausgängen die Numern schreibt(0,1,2,4,8,16,32,...)

Dann würde ich (schaltsequenz 1) Die Zahl mit den Asugängen ganz normal beibehalten und mit dem Bit ODEr mit der zahl 320(bit 7 und 9 ein) verknüpfen.

Jetzt stellt sich mir nur die frage, wie aich aus einer Dezimalzahl den Binärcode ausgeben lassen kann. Das ging irgendwie ich weiß nur nicht mehr wie



2. Wie gebe ich den ASCII Code eines Zeichens aus


3. was ist nochmal der unterschied zwischen bspweise
zahl1++ und ++zahl1

bluedragon_italy

Full Member

Re: C++ Fragen

Tuesday, January 4th 2005, 7:42pm

Hi,
ich würde dir ja auch gerne Helfen, habe aber gerade sert mit c++ begonnen.....

1) ich glaube das würde eher in Software passen ;)
2) Cooles board für programmierer: Streichel mich sanft

so long
bluedragon_italy

NikoMo

NikoMod

Re: C++ Fragen

Tuesday, January 4th 2005, 7:43pm

die wichtigste frage hier ist:

warum postest du im Off-topic? ;D
von all den dingen die mir sind verloren gegangen,
habe ich am meisten an meinem Verstand gehangen

Draco

God

Re: C++ Fragen

Tuesday, January 4th 2005, 7:59pm

zu 2)

%c imho

Bsp: printf("%c", 115)  gibt das Ascizeichen 115 aus (is ein kleines 's')

zu 3)

++x = Präfixoperator (erhöhung vor gebrauch der Variable)
x++ = Postfixoperator (erhöhung nach gebrauch der variable)

Bsp:
int a,b,c;
c=0;
a=++c;  --> ergibt: a=1, c=1 (vor gebrauch erhöht)
b=c++;  --> ergibt: b=1, c=2 (nach gebrauch erhöht. hätte dort auch ++c gestanden, wäre der variable "b" eine 2 zugewiesen worden, da "c" zuerst eins hoch gesetzt worden wär. So aber wurde "b" erst der alte Wert von "c" zugewiesen, in dem Fall also noch der Wert "1" und nach der Zuweisung erst wurde c um eins erhöht)




sebastian

Administrator

Re: C++ Fragen

Tuesday, January 4th 2005, 8:16pm

einfach würe es so gehen. um ein array aus chars mit mit '1' oder '0' zu füllen.
int Bits;
int temp;
char Text[16];
int i;

i=15;
temp= 0x8000; //bit15
while(temp !=0){
if(Bits & temp)
Array = '0';
else
Array[i] ='1';

temp= temp/2;
i--;

}

jetzt sollten in text die ascii zeichen mit 0 und 1 stehen.
ich hoffe das hilt ein wenig weiter

MfG
Sebastian

Mastercooling

God

Re: C++ Fragen

Tuesday, January 4th 2005, 8:33pm

OK Ascii Zeichen kann man auch so ausgeben habe ich inzwischen rausgefunden

char zeichen1='d';
cout<<int(zeichen1);


Nur was ist mit Frage 1. Stimmt mein bisheriger Lösungsweg, die Zahlen in dezimalzahlen umzuwandeln und sie dann mit Bit Operatoren miteinander zu verknüpfen?
Kann ich von zaheln den BinärCode ausgeben z.b 00001100 = 12??

Gruß Hanni und Danke für eure bisherige Hilfe

TheJoker

God

Re: C++ Fragen

Tuesday, January 4th 2005, 8:51pm

wieso willst du die unbedingt in dezimal umwandeln?

schreibe es doch einfach in hexadezimaler darstellung, z.B. 0x800.
Das wäre dezimal 2048.

ver-und-en, ver-odern und weitere bitoperationen sind natürlich das, worauf die aufgabe abzielt.

ich würde allerdings nicht selber ausrechnen, wie die zahlen heißen.

sondern z.B. die erste stelle (ausgang 0) auf 1 wäre ja 0x1.

ausgang 2 auf 1 wäre 0x2

ausgang 4 auf 1 wäre 0x10

dafür könntest du jeweils #defines machen:

#define BIT0 0x1
#define BIT1 0x2
usw

dann kannst du alle addieren die an sein sollen:

unsigned short int ausgang = BIT1 + BIT3 + BIT4....

und verunden etc dann auch entsprechend mit den #defines


edith: es muss aber unbedingt unsigned short sein ;D
wenn nicht, dann wird eine 1 am höchsten bit als negatives vorzeichen interpretiert. das ist sicher auch was worauf die aufgabe abzielt :)
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!

Mastercooling

God

Re: C++ Fragen

Tuesday, January 4th 2005, 9:39pm

defines haben wir noch net

Draco

God

Re: C++ Fragen

Tuesday, January 4th 2005, 10:01pm

egal, dann haste den andern was voraus ;-)

TheBigTicket

Senior Member

Re: C++ Fragen

Tuesday, January 4th 2005, 11:00pm

warum nicht ein bool-array:

bool bool_array[16];

na ja und dann einfach die einzelnen feldelemente setzen bzw. eine kurze schleife die alles invertiert...
"Some men see things as they are and say why. I dream things that never were and say, why not?" John F. Kennedy

r1ppch3n

Moderator

Re: C++ Fragen

Tuesday, January 4th 2005, 11:31pm

bool...
nein, wirklich nicht
erstens gehts total an der aufgabenstellung vorbei und zweitens müsst man das dann für die ausgabe erstmal alles wieder umrechnen...

TheJoker

God

Re: C++ Fragen

Wednesday, January 5th 2005, 12:01am

außerdem sind 16 bool-werte garantiert größer als 16bit :), was ja in der aufgabe gefordert war.

aber wenn ihr keine defines habt (wie kann man ohne defines programmieren?? *schreikrampfkriegt*), dann schreib halt die hex-werte so hin... auf jeden fall machts keinen sinn dir vorher auszurechnen wie die zahl in dezimal heißt wenn die entsprechenden bits gesetzt sind.. wofür steht denn ein rechner vor dir? ;)
und bitoperationen macht man nun mal idealerweise auf hex-werte, alles andere wär höchst blödsinnig.
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!

r1ppch3n

Moderator

Re: C++ Fragen

Wednesday, January 5th 2005, 12:08am

weniger unsinnig als vielmehr verwirrend ;)
praktisch könnts evtl auch sein das direkt binär anzugeben, dann mit 0b0100000000000000 für bit 15
hmm... ja ok, wird dann doch recht lang ;D

und wenn i mi ned irre dürfte son bool doch 8bit ham? (und je nach compilereinstellung dann bis zu 64bit speicher belegen :-X ;D)

TheJoker

God

Re: C++ Fragen

Wednesday, January 5th 2005, 12:17am

Quoted from "r1ppch3n"

0b0100000000000000


dasn c++ compiler sowas frisst wär mir neu ;)

und wenn, also ob hex oder binär verwirrender ist lass ich mal im raum stehn ;D
aber meine wahl steht eindeutig.
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!

r1ppch3n

Moderator

Re: C++ Fragen

Wednesday, January 5th 2005, 12:39am

ka inwieweit das jetzt welchen standards genügt aber die compiler denen ich das bisher vorgeworfen hab hams gefressen ;)

composer

Full Member

Re: C++ Fragen

Wednesday, January 5th 2005, 1:38am

Quoted from "Santa-Hanni"

Kann ich von zaheln den BinärCode ausgeben z.b 00001100 = 12??
Jungs! Also sowas muss wirklich ein one-liner sein ;-)

for( int i = MAX_BITS - 1; i >= 0; i-- )
cout << (num >> i & 1);

Mastercooling

God

Re: C++ Fragen

Wednesday, January 5th 2005, 1:31pm

Kann ich bit operatoren auch so verwenden z.b:

01001011 << 00000011 ???


wir haben bit operatoren nämlich bis jetzt nru so angewendet 8<<3