Zum Inhalt springen

Orffi

Mitglieder
  • Gesamte Inhalte

    252
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Orffi

  1. Das, was Du möchtest, geht nicht in Standard-C++. Da das nicht zum Standard gehört müßtest Du angeben, welche Entwicklungsumgebung Du verwendest. Mit Borland wäre es zum Beispiel gotoxy aus conio.h um den Cursor zu bewegen. Die Farben kann man bestimmt auch ändern, da müßte ich jetzt aber nachschlagen... HTH Jan
  2. Natürlich ist 60% - 60% gemeint und natürlich wissen die Studenten, die 60% - 60% sagten, daß das 120% ergibt. Es soll halt ausdrücken, daß man als Wirtschaftinformatiker sehr viel zu tun hat. Ob man sich dieser Meinung anschließt oder nicht ist jedem selbst überlassen. Ich denke, mit jedem Informatikstudium hat man gut zu tun. Einmal fehlt halt die wirtschaftliche Seite, der andere hat auf der informatischen Seite Defizite. Man sollte halt schauen, was für Informatik man am liebsten mag. Ob man auch BWL gut findet oder in der Schule in Bio/Chmie gut war und die Gebiete spannend findet. Vielleicht ist man aber auch ein Theoretiker und beschäftigt sich lieber mit der "reinen" Informatik. Vielleicht kommt aber auch eine Fachhoschule in Frage, die näher an der Praxis ist. HTH Jan
  3. Nicht böse sein, aber es klingt fast so, als ob Deine Freundin nur studieren will, um zu studieren. Sie hat aber doch bestimmt Vorlieben. Sie arbeitet gerne mit Menschen, ist an Technik interessiert, an Kunst jeglicher Art oder sonstiges. In diese Richtung sollte sie sich dann auch im Studium richten. Auf jeden Fall muß man 100%ig hinter seinem Studium stehen, sonst wird das nichts. Gab es in der Schule keine keine Uni-Tage? An der Uni selbst gibt es eine Studienberatung. Normalerweise ist sie für Studenten da, wenn das Kind in den Brunnen gefallen ist und man zum dritten (und letzten Mal) eine Prüfung machen muß, oder die Regelstudienzeit kräftig überzieht. Aber vielleicht können die ja Deiner Freundin weiterhelfen. HTH Jan
  4. Ich sehe nicht, was diese Aussage mit dem Thema zu tun hat. Die Diskussion über Module und Klassen ist ein Thema der Softwaretechnik und hat nichts mit einem konkreten Programm zu tun. Ich weiß auch nicht, wie Du mit Deinen Kollegen in der Firma kommunizierst. Dürfen Deine Kollegen raten, was Du gerade meinst, weil es Dir gerade in den Sinn gekommen ist, irgendetwas selbst zu definieren, was leider völlig an der akzeptierten Meinung vorbeigeht? Natürlich darfst Du alles umdefinieren weder ich noch irgendjemand sonst wird Dich daran hindern. Nur solltest Du Dich dann nicht wundern, wenn Dich keiner versteht. Und erkläre bitte einem Softwaretechniker, daß Du mit Modulen Klassen meinst. Ich wünsche Dir viel Spaß dabei! Abgesehen davon muß und kann MSVC++ gar nicht ANSI (besser ISO) konform sein. Jan
  5. Das ist so nicht richtig! wenn man die main-Funktion mit int definiere (eine andere Möglichkeit läßt der Standard ga nicht), dann bedeutet dies, daß ein int Wert zurückgeliefert wird. int main(int nArg, char *pszArgs[]) int nArg und char *pszArgs[] bemächtigt die main-Funktion (und damit das Programm) Parameter von der Kommandozeile zu übernehmen. # include <iostream> # include <cstdlib> int main(int nArg, char *pszArgs[]) { using namespace std; cout << "Argumente von " << pszArgs[0] << "\n"; for (int i = 1; i < nArg; i++) { cout << i << ":" << pszArgs[i] << "\n"; if ( !strcmp( pszArgs[i], "/w" ) ) { cout << "Ahaaaaaaaaaaaaaa!!!!!!!\n"; } } cout << "Das wars\n"; } strcmp ist das "Zauberwort". mit strcmp vergleicht man char-Strings. HTH Jan PS: Niemals sollte man <stdio.h> und <iostream> mixen. Du brauchst hier auch kein stdio.h, oder besser, weil wir uns hier in C++ befinden <cstdio>. PPS: Goos war einen Tick schneller, aber da ich es schon getippt hatte, habe ich es trotzdem gepostet...
  6. Nur war hier eigentlich nicht von Pascal die Rede... Weder der Threadtitel noch meine Aussagen beziehen sich in irgendeinener Form auf Pascal. Es interessiert in diesem Thread niemanden, was man mit Pascal machen kann oder nicht. Hier ist die Frage, was man mit C++ machen kann. Wenn Du es weißt, warum erzählst Du dann so einen Unfug? Man kann sich auch noch zusätzlich überlegen, ob es nicht sinnvoll ist Zeigervariablen erst bei ihrer Definition zu deklarieren, damit man nicht mit uninitialisierten Zeigern arbeitet. Hier gibt es wie so oft kein reines Weiß und Schwarz. Sicherlich kann man den Quelltext auch unübersichtlich gestalten, wenn man wild in der Gegend deklariert, aber es generell als unsauber zu bezeichnen ist falsch. Es ist nicht nur unsauber, es ist falsch! Es wäre gut, wenn man sich an Konventionen hält, damit jeder weiß, was gemeint ist. (Ich habe mir sagen lassen, daß es dafür Konventionen gibt.) Und zwar hält man sich am besten an Konventionen, die allgemein akzeptiert sind und nicht an seine selbst ausgedachten. Jan
  7. Du hast ja nur Klotzkopp um Quelltext gebeten, also brauch ich keinen zu posten . Nein, im Ernst von mir bekommst Du zwar keinen Quelltext aber einen Tip: Wenn Du die Zahlen von 1-100 als Zufallszahlen hast, dann lege Dir einfach ein zweites Array an, in dem Du vermerkst, ob die Zahl schon "gezogen" wurde. Du initilaisierst dieses Hilfsarray mit 0 (for (i = 1; i < 101;i++) help = 0; ) Du verschenkst zwar das Feld 0, aber das ist ja auch egal; heute verschleudere ich mal Speicherplatz . Wenn Du jetzt eine Zahl zufall gezogen hast, dann schaust Du in help[zufall] nach, ob es größer 0 ist. Wenn nicht, ist die Zahl noch nicht gezogen worden und Du kannst sie nehmen. (Nicht vergessen, danach help[zufall] = 1 odersonst irgendeinen Wert größer 0 setzen.) Schwuppdiwupp hast Du Deine Abfrage. Du brauchst zwar mehr Speicherplatz, dabei aber auch einen Geschwindigkeitsvorteil... HTH Jan
  8. Das Modulkonzept reicht noch nicht zur Objektorientierung. Module haben nämlich im Gegensatz zu Klassen keinen Typ! Eine oo-Sprache bietet Klassen und Vererbung an. In C++ kann ich übrigens sehr wohl Variablen "mitten im Quelltext" deklarieren und definieren. Und Variablen mitten im Quelltext zu definieren macht sehr wohl Sinn und ist nicht unsauber. Jan
  9. void main () ist kein C, gewöhn es Dir gar nicht erst an. Der Unterschied zwischen Deinen Programmen ist, daß die Variablen einmal an Ort und Stelle vertauscht werden und einmal in einer Funktion. Es ist ja ganz praktisch, eine Funktion zu haben, wenn man öfter das Gleiche (zum Beispiel zwei Werte vertauschen) machen möchte. Wenn Du nun Dein Programm folgendermaßen umschreiben würdest, dann hättest Du nicht mehr den gewünschten Effekt: #include <stdio.h> void tausch ( short, short ); int main() { short Wert1 = 1111; short Wert2 = 2222; tausch (Wert1, Wert2 ); printf("Der Wert von Wert1: %d\n",Wert1); printf("Der Wert von Wert2: %d\n",Wert2); return 0; } void tausch (short W1, short W2) { short h = W2; W2 = W1; W1 = h; } Was hast Du mit diesem Programm erreicht? Nicht viel, denn Du hast die lokalen Kopien vertauscht, aber nicht die Werte in der main-Funktion. Um das zu erreichen brauchst Du Zeiger. (siehe Dein erstes Beispiel) Mit Zeigern kannst Du nun die Adresse Deiner Variablen übergeben und so die Variablen direkt manipulieren. HTH Jan
  10. Man kann den this-Zeiger auch noch für andere Zwecke benutzen, zum Beispiel um zu Code schreiben, den man besser nicht schreiben sollte: class X { public: int i; X() { i = 0; } void wontWork ( void ) const { i++; } void willWork ( void ) const { (const_cast<X*>(this))-> i++; } void set ( int i ) { this -> i = i; } }; Eine const-Funktion sollte eigentlich keine Variablen verändern. Der Compiler achtet auch darauf, so daß die Funktion wontWork tatsächlich nicht compiliert. willWork compiliert tatsächlich und erhöht i auch um eins. const wird "weggecastet". Bei der set-Funktion wird der this-Zeiger verwendet, um zwischen dem Parameter i und dem i in der Klasse zu unterscheiden. i=i würde nicht funktionieren, oder besser gesagt, es hätte nicht Effekt, den man haben möchte. Jan
  11. Wenn Du "nur" programmieren möchtest, um Sicherheit zu gewinnen, dann kannst Du ja zum Beipiel kleine Programme schreiben, die kleine Umrechnungen durchführen (Fahrenheit->Celsius ist ein gern genommenes Beispiel). Oder irgendwas, was Dich interessiert, es muß ja kein perfektes Programm sein. Nicht falsch verstehen: das "nur" aus dem ersten Satz ist definitiv nicht abwertend gemeint. Ich finde es richtig, vor einer Klausur viel Übung zu haben, damit man in der Klausur nicht auf einmal wie ein Ochs vor'm Berge steht. Aber konkrete Ideen fallen mir auch nicht ein. Jan
  12. Ich kenne den Text nicht und kann halt nur, wie Crush schon meinte, spekulieren. \pi ist also ein Item, aber wie sind diese "Items" aufgebaut. Sie haben ja ein Länge, sind Items also Buchstabenketten? Viel Neues kann ich also nicht beisteuern. Aber jetzt zur allgemeinen Analyse: Es gibt drei Fälle: *worst case: Das ist wirklich der schlechteste Fall. Es geht hier nicht darum, wie häufig dieser auftreten kann, sondern nur wie der Baum aussieht, wenn "alles schief geht, was schief gehen kann". Wie auch immer das "Schiefgehen" aussieht. *average case: Hier geht es um die durchschnittliche Laufzeit (oder wie in diesem Fall: Baumgröße). *best case: Das Gegenteil vom worst case. Wenn also alles "zusammen paßt". Auch hier geht es nicht um Wahrscheinlichkeiten, wie oft er auftritt, sondern nur, wie beim worst case, wie er aussieht. HTH Jan
  13. Ich weiß nicht so recht, wie ich Dir helfen kann. Du schreibst selber, daß Du mit C/C++ gut zurecht kommst. Es wäre einfacher, wenn Du konkret sagen könntest, was Du nicht verstehst. Man kann nicht 1000 Übungen ausprogrammieren und dann glauben, daß man die Klausur besteht. Vielmehr geht es darum, daß man die Konzepte und Ideen hinter der Sprache versteht. Mit diesem Wissen setzt man dann die Lösung zusammen. Es klingt ein wenig so, aber da kann ich mich täuschen, daß Du "alle möglichen" Aufgaben programmieren möchtest. Auch hast Du sicherlich mehr gemacht, als das, was Du aufgezählt hast, denn das ist ja nicht sooo viel. Jan
  14. Um eine defintive Aussage zu geben, ist es zu wenig Text. Ich weiß zum Beispiel nicht was \pi nun genau ist. Es ist vom Prinzip her eine worst-case Abschätzung. Man möchte wissen, wie der Baum schlimmstenfalls aussehen kann. Die Höhe eines Baumes ist der größte Abstand von der Wurzel zu irgendeinem Knoten. Wenn ich die Elemente von \pi untereinander Schreibe, dann habe habe ich die Höhe |\pi|. Wenn ich nun alle \pi_i, i\in{1,..,n} untereinander schreibe, dann hätte ich die Summe \sum_{i=1}^n\|\pi_i\|Und höher, das leuchtet wohl ein, kann der Baum nicht sein. Wenn man sich die Breite des Baumes ansieht, dann ist bei einem binären Baum (sagt der Text was über die Baumart aus??) der Höhe n die Breite n+1. Wenn ich jetzt meinen Baum aus \pi_1 aufbaue und dann an jedes Blatt den Baum \pi_2 anhänge, dann komme ich auf die Breite des Baumes. Wenn ich zwei Bäume der Breite 3 und 4 habe, dann habe ich bei dem neuen Baum die Breite 12. Man kann das beweisen, vollständige Indunktion ist die Methode der Wahl, ist aber nicht sonderlich spannend. HTH Jan
  15. int main () oder int main (void) ist korrekt in C und C++. main() oder main (void) ist in C korrekt, allerdings nur dort (ANSI-Standard); bei C99 und C++ ist dies nicht zulässig. Richtig schön sind die beiden letzten Varianten (ohne int) sowieso nicht (schlechter Stil) und man sollte die ersten beiden Varianten verwenden, die auch in C++ und C99 zulässig sind. Zu void: void kann man sich als einen Datentyp vorstellen, dessen Wertemenge leer ist. Wie themaster schon meinte, benutzt man void, wenn eine Funktion keinen Wert zurückliefert (in Pascal wäre es eine Prozedur). Wenn Du eine Funktion schreiben würdest, die einen Text ausgibt, möchtest Du ja nicht unbedingt einen Rückgabewert haben. (Beachte: printf liefert int zurück) Zu public: public ist kein C! public bedeutet in C++, daß man auf eine Funktion "von außen" zugreifen kann. Es gibt public, private und protected. Wenn man eine Klasse programmiert, möchte man nicht, daß Variablen direkt verändert werden können, weil die Werte zum Beispiel nur einen bestimmten Wertebereich liegen sollen. Dann würde man die Variablen als private deklarieren. Man kann also nicht von außen auf die Variablen zugreifen, sondern nur das Objekt selbst kann die Werte verändern. Um sie zu verändern braucht man nun eine Funktion, die sollte public sein, damit sie auch von außen aufgerufen werden kann. In dieser Funktion kann man nun testen, ob der Wert für die Variable ein gültiger ist. Wenn dem so ist, kann man die Variable in der Funktion mit einem neuen Wert belegen. Wenn man Klassenhierachien (führt jetzt viel zu weg vom Thema) hat, dann benötigt man (wenn man dann will) protected. return: Mit return springt man aus einer Funktion zurück zur aufrufenden Funktion. Wenn man return x schreibt, wird der Wert x zurückgegeben. x muß den gleichen Datentyp haben, wie der Datentyp, der als Rückgabetyp bei der Funktion angegeben wurde. HTH Jan
  16. Natürlich war es eine rhetorische Frage von Klotzkopp, aber um keine Mißverständnisse aufkommen zu lassen: Man darf sehr wohl 0/x mit x!=0 berechnen. Das Ergebnis ist 0. Ist ja auch logisch. Wenn ich eine Tafel Schokolade an 3 Kinder (gerecht) verteilen will, bekommt jeder ein Drittel. Wenn ich aber gar keine Tafel Schokolade habe, dann kann ich auch keine Schokolade verteilen, also 0/3=0 HTH Jan
  17. Orffi

    Online C-Kurs

    So weit ich weiß gibt es bei www.pronix.de einen C Kurs. Für Qualität und Richtigkeit überneme ich natürlich keine Haftung Wenn ich es auf die Schnelle richtig gesehen habe, gibt es dort aber keine Übungen. HTH Jan
  18. ??? Wie Du kennst die Funktionen, kannst sie aber nicht anwenden? Aber egal, wenn Du eh in C++ programmierst, dann solltest Du die Typen ifstream und ofstream benutzen... Zum Beispiel: ofstream out ("test.txt"); string txt ="hallo welt"; out << txt; HTH Jan
  19. Einige haben es ja schon herausbekommen: die Funktion liefert das kleinste Element in einem Array zurück. Es stimmt, die for-Schleife ist in Wahrheit eine while-Schleife, aber sie hätte bei weitem nicht so verwirrt. Die Funktionsweise beruht darauf, daß bei einer &&-Verknüpfung der 2. Teil nicht mehr ausgeführt wird, wenn der erste Teil schon false ist, da bei && ja beide Teile true sein müssen, daß mit insgesamt true herauskommt. Wenn der erste Teil schon false ist, barucht man den 2. Teil nict mehr: es kommt auf jeden Fall false heraus. Deswegen wird auch das ganze Array durchgearbeitet. Jan
  20. Falsch... Die Funktion erfüllt schon einen Zweck nur würde man es so nie schreiben. Jan
  21. Hallo zusammen! Eigentlich könnte das folgende Rätsel auch in das Java-Forum passen, aber da es nicht ernst gemeint ist, habe ich es hier gepostet. Was macht folgende Funktion: protected static int function ( int v[] ) { int I = 0, l = v.length - 1; for(;!(v[I]>=v[l--]&&++l==I++); return v[l]; }[/code] Aber nicht einfach in den Compiler stopfen und schauen, was passiert... Viel Spaß Jan
  22. @Crush Du vergißt eine Kleinigkeit: In den 70er Jahren gab es noch keinen Pentium Pro. Also dauerte "damals" die Rechnung auch länger und deshalb machte es aus der Sicht von "damals" auch Sinn, auf die "Rechnung" -1 zu verzeichten. Wobei ich dabei bleibe, daß 0,00000000025 immer noch nicht 0 ist und nicht jeder hat einen 1GHz Rechner zu Hause 'rumfliegen. Jan
  23. Mit Standard C geht es überhaupt nicht. Wenn Du "Features" Deiner Entwicklungsumgebung benutzen willst, dann solltest Du sagen, was Du benutzt, zum Beispiel MSVC++ oder BCB. Dann ist dies aber das falsche Forum, es würde in das IDE-Forum gehören. HTH Jan
  24. Aha, was der Compiler nicht alles so macht. Das müßt ihr mir dann schon mal erklären, wie er Berechnungen zur Compilezeit durchführt, die er aber erst zur Laufzeit durchführen kann. Wenn ich nämlich ein dynamisches Array habe, dann kann ich doch noch nicht zur Compilezeit wissen, von welchem Wert ich 1 abziehen soll. Es fehlen die Klammern.... *(array+1) ist das 2 Element im Array, *array+1 ist das erste Element im array plus 1 (array[0]+1). Ich frage mich ja ehrlich ob Du den Unterschied zwischen 0 und nahezu gegen 0 kennst? Ich persönlcih sehe nämlich keinen Unterschied zwischen "kostet ein bißchen Zeit" und kostet Zeit die nahezu gegen 0 geht. Natürlich konnte man erst bei 0 anfangen zu zählen, als diese "entdeckt" worden ist. Aber auch heute wird nicht generell bei 0 angefangen zu Zählen. Viele definieren die natürlichen Zahlen so: N={1,2,3...} (und es liegt sicherlich nicht daran, daß sie die 0 nicht kennen). Die Diskussion geht also schon in die richtige Richtung. Jan
  25. Und was machts Du, wenn jemand mehr als 8192 Zeichen eingeben will? Dann hast Du ein Problem! Ich empfehle weiterhin string und stringstream, die in Standard-C++ enthalten sind. Jan

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...