Alle Beiträge von Klotzkopp
-
Excel und Automatisierungsschnittstelle
Beim Import der Type Library gibst du doch an, welchen Namen die erstellte Headerdatei bekommen soll. Hast du sie excel.h genannt, oder woher hast du diesen Namen? Hast du es schon ohne #include "excel.h" versucht?
-
Wie formatiere ich ein Laufwerk (als C++ Code im Quellcode)???
Das Formatieren sollte doch das Windows-Setup erledigen. :confused: Wenn das Programm vor der Windows-Installation laufen soll, welches Betriebssystem ist dann jetzt drauf? Du kannst Programm nur für ein bestimmtes Betriebssystem kompilieren. Zudem ist das Formatieren von Datenträgern nicht Bestandteil des C++-Standards. Du wirst also eine betriebssystemspezifische Funktion nutzen müssen. Dazu müssen wir aber wissen, welches Betriebssystem gerade drauf ist. Befehle gibt's in C++ nicht.
-
[FAQ-Vorschlag] C++ Bücher/Tutorials
Hast du einen Link? Den könnte ich dann auch noch hinzufügen.
-
[FAQ-Vorschlag] C++ Bücher/Tutorials
Sieht gut aus. Möchte jemand noch etwas hinzufügen?
-
Wie formatiere ich ein Laufwerk (soll ein C++ Befehl sein im Quellcode)???
Ein Thread reicht, danke.
-
C++ FAQ: Death & Rebirth
Hallo, Wir haben wieder eine FAQ: http://cfaq.fachinformatiker.de/ Kommentare, Beschwerden, sowie Vorschläge, was rein soll, seien es bestehende oder neue Beiträge, bitte jetzt loswerden. Als Referenz: Den alten FAQ-Thread findet ihr hier.
-
MSVC6 Bug beim Überschreiben virtueller Funkionen: C2555 (war: c2555)
Würde es da nicht reichen, wenn allocateToken auch in den abgeleiteten Klassen ein _tBaseToken<_CT>* zurückgibt?
-
MSVC6 Bug beim Überschreiben virtueller Funkionen: C2555 (war: c2555)
Was man da tun kann, hängt vom Code ab. Ohne den zu sehen, kann man da nicht viel sagen. Es geht bei dem Bug um die fehlende Unterstützung für kovariante Rückgabetypen bei virtuellen Funktionen. Wenn es dir also gelingt, den Rückgabewert woanders unterzubringen oder den Typ einheitlich zu machen, war's das schon. Aber wie gesagt, was man da tun kann, hängt vom Code ab. Mit Templates hat der Bug nichts zu tun. P.S.: Wieso bezeichnest du VS.NET2003 als Monster? P.P.S.: Den C++-Compiler von VS.NET2003 gibt's kostenlos.
-
C++ Memberfunktionen
Memberfunktionen gehören im Gegensatz zu sog. freien Funktionen zu einer bestimmten Klasse oder Struktur. Sie sind nur über die Klasse selbst (statisch) oder über eine bestimmte Instanz der Klasse (nicht statisch) aufzurufen. Man spricht auch von Klassen- bzw. Instanzmethoden.
-
Letztes Zeichen im String löschen!
Was für ein "String"? std::string? std::string s = "Hallo*"; s = s.substr(0, s.length()-1);[/CODE] char-Array? [CODE]char s[] = "Hallo*"; s[strlen(s)-1] = '\0'; Noch was anderes?
-
Suche Hilfe bei einer Primzahlberechnung in C++
cout << "\nGefundener Teiler: " << zaehler << "\n"; Und bitte if(!teilergefunden) statt if(teilergefunden == false)
-
Suche Hilfe bei einer Primzahlberechnung in C++
Das, oder den Text ändern. Ein Tipp: if(teilergefunden == true) entspricht if(teilergefunden) if(teilergefunden == false) entspricht if(!teilergefunden)
-
Suche Hilfe bei einer Primzahlberechnung in C++
Vorsicht, das ist eine Zuweisung, kein Vergleich. Probier's aus.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Genau. Ich geb mal "Starthilfe". Ich habe meine Textbeschreibung von eben in Code umgesetzt. Versuch mal, das nachzuvollziehen. #include <iostream> using namespace std; int main () { int eingabe; cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe; // Wir setzen die Variable zu Beginn auf false bool teilergefunden = false; for(int zaehler=2; zaehler<=eingabe-1; zaehler++) { // und wenn wir einen Teiler finden, if(eingabe % zaehler == 0) { // setzen wir sie auf true. teilergefunden = true; } else { // Ansonsten machen wir gar nichts. } } // Jetzt müssen wir nur noch die Variable auswerten... return 0; }[/CODE] Beim letzten Kommentar bist du jetzt wieder am Zug.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Das ist reiner Eigennutz. Wenn du selber denken kannst, brauchst du später weniger Hilfe, und kannst dafür anderen helfen -> weniger Arbeit für mich. Das ist überhaupt keine Schande. Ob eingabe eine Primzahl ist, hängt davon ab, ob wir einen Zähler finden, durch den eingabe teilbar ist. Finden wir keinen, ist es eine Primzahl. Finden wir einen (oder mehrere), ist es keine. Soweit klar? Wir könnten uns in einer weiteren Variablen merken, ob wir einen Teiler gefunden haben. Wir setzen die Variable zu Beginn auf false, und wenn wir einen Teiler finden, setzen wir sie auf true. Ansonsten machen wir gar nichts. Setz das bitte mal um.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Wenn du das wirklich komisch findest, hast du nicht verstanden, was du da selbst geschrieben hast. Schau dir den Algorithmus nochmal an. Simuliere den Ablauf deines Programms Schritt für Schritt mit Papier und Bleistift. Nachdenken, nicht Rumprobieren. Wenn du einen Zähler gefunden hast, durch den eingabe teilbar ist (if), ist eingabe keine Primzahl. Aber nur weil du einen Zähler gefunden hast, durch den eingabe nicht teilbar ist (else), ist eingabe noch lange keine Primzahl. 25 ist nicht durch 3 teilbar. Ist 25 deswegen eine Primzahl? Dass eingabe eine Primzahl ist, kannst du erst feststellen, wenn die Schleife durchgelaufen ist. Die Ausgabe "Die Zahl ist eine Primzahl" kann also nicht in der Schleife stehen.
-
Suche Hilfe bei einer Primzahlberechnung in C++
BINGO!
-
Suche Hilfe bei einer Primzahlberechnung in C++
Nur für den ersten Schleifendurchlauf. Für den nächsten muss da 3 stehen, dann 4 usw. Der Zähler ändert sich doch bei jedem Durchlauf der Schleife. Und welcher Teil ändert sich in den Beispielen von Zeile zu Zeile?
-
Suche Hilfe bei einer Primzahlberechnung in C++
Und was ist mit ausgabe und zahl1? Benutzt du die irgendwo? Nein. Also raus damit. Wir brauchen die Schleife, weil wir die eingegebene Zahl durch eine Reihe anderer Zahlen teilen müssen. Ein Beispiel: Der Benutzer gibt 35 ein. Schleife von 2 bis 34 Wir prüfen: 35 % 2 ist nicht 0 -> weiter Wir prüfen: 35 % 3 ist nicht 0 -> weiter Wir prüfen: 35 % 4 ist nicht 0 -> weiter Wir prüfen: 35 % 5 ist 0 -> 35 ist keine Primzahl. Anderes Beispiel: Der Benutzer gibt 7 ein. Schleife von 2 bis 6 Wir prüfen: 7 % 2 ist nicht 0 -> weiter Wir prüfen: 7 % 3 ist nicht 0 -> weiter Wir prüfen: 7 % 4 ist nicht 0 -> weiter Wir prüfen: 7 % 5 ist nicht 0 -> weiter Wir prüfen: 7 % 6 ist nicht 0 -> weiter Schleife durchgelaufen, kein Teiler gefunden, 7 ist eine Primzahl. Erkennst du, wo der Zähler der Schleife zum Einsatz kommt? Nur nicht aufgeben. Und ganz wichtig: Denken ist besser als Rumprobieren. :mod: Vielleicht wäre ein PAP oder Struktogramm doch nicht so verkehrt.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Du bist schon ein ganzes Stück weiter gekommen. Das sieht doch schon fast gut aus. Wirf da mal alles raus, was du nicht brauchst. Hier prüfst du, ob eingabe ohne Rest durch 1 teilbar ist. Abgesehen davon, dass das für jede ganze Zahl gilt, machst du bei jedem Schleifendurchlauf dasselbe. Denk noch mal nach, wofür wir die Schleife und ihren Zähler haben. Andersrum. Wenn der Rest nicht null ist, ist eingabe ja nicht teilbar. Bei Primzahlen ist der Rest immer von Null verschieden. Schau dir nochmal den Algorithmus an. Das geht erst dann, wenn du weißt, wie du prüfst, ob eine Zahl eine Primzahl ist. Und da sitzen wir gerade dran.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Was heißt "noch"? Sicher brauchst du einen Zähler. Bei for-Schleifen brauchst du immer einen Zähler. Oder erwartest du wirklich, dass eingabe<=eingabe-1 jemals wahr wird?
-
Suche Hilfe bei einer Primzahlberechnung in C++
So, jetzt mal mit Nachdenken. Es soll doch nur eine Zahl eingegeben werden, oder? Also darf cout & cin nicht in der Schleife stehen. Die Schleife soll von 2 bis eingabe-1 laufen. Das solltest du aber hinbekommen.
-
Suche Hilfe bei einer Primzahlberechnung in C++
Kannst du. Ist aber sinnlos. eingabe % eingabe ist der Rest der Division einer Zahl durch sich selbst. Das ist immer 0. Das ist letztlich egal. Eine for-Schleife bietet sich an, wenn du in festen Schritten von einem Startwert zu einem vorher bekannten Endwert laufen musst. So wie hier. Mach doch erst die Schleife, lass den Modulo-Teil weg, und zeig, was du hast.
-
Nichtaufgelöste externe Symbole (war: Ich brauch da ma hilfäää :))
Implementieren heißt, dass du in den Code schreibst, was eine Funktion macht. Bisher steht in deinem Code nur, dass es die Funktionen Auswahl und Berechnung gibt, nicht, was sie tun. Wenn du das Programm aus einem Buch abgeschrieben hast, wird in dem Buch wahrscheinlich auch irgendwo eine Implementierung dieser beiden Funktionen stehen. Die musst du deinem Code hinzufügen. Wenn dir das zu kompliziert wird, solltest du ein paar Gänge zurückschalten, und dich mit einfacheren Programmen beschäftigen. Das ist doch sicher nicht das erste Beispiel in dem Buch, oder?
-
Auslesen von Systemvairablen - getenv() verkürzt Pfade :(
Die #include-Direktive für <windows.h> darf nicht in der Headerdatei stehen. Alternativ könntest du auch auf eine Headerdatei komplett verzichten, und dort, wo du sie brauchst, eine Deklaration deiner Funktion einfügen.