wo ist der fehler?
-
Dein struct nimmt char[] auf, Sachen die zwischen doppelten Anführungszeichen stehen sind aber vom Typ const char[]. Das kann man logischerweise nicht konvertieren, denn sonst könnte man ja hinterher die konstanten chars über das struct ändern!
Aber warum um alles in der Welt benutzt du überhaupt char[] und nicht std::string?
Und warum printf?
Und warum stdlib.h?
Und warum math.h? Du benutzt es noch nicht einmal.
Und die conio.h benutzt du auch gar nicht.
Und warum ein Array mit 100 Einträgen von denen du 12 benutzt?
Und warum überhaupt ein Array und nicht std::vector?Fragen über Fragen...
-
SeppJ schrieb:
Fragen über Fragen...
Und warum wählt man so einen nichtssagenden Thread Titel?
-
struct BWV { int nr; char* name; char* instrument; char* tonart; void ausgabe(struct BWV x) { printf("Nummer: %d\nName:%s\nInstrument:%s\nTonart:%s\n\n", x.nr,x.name,x.instrument,x.tonart); /*if(instrument[0] < 91 && instrument[0] > 64) { strcmp("-Dur",name); }*/ }; }; int main() { struct BWV x; struct BWV liste[100] = { 48, "Ich elender Mensch, wer wird mich erloesen","Chor, Orchester", " " , 186, "Aergere dich, o Seele, nicht", "Chor, Orchester", " " , 211, "Schweigt stille, plaudert nicht [Kaffee-Kantate]", "Chor , Orch.", " " , 454, "Ermuntere dich, mein schwacher Geist", "Chor, Orchester", " " , 529, "Trio-Sonate" , "Orgel", "C" , 552, "Praeludium und Fuge", "Orgel", "Es", 582, "Passacaglia and Fugue", "Orgel", "c", 775, "Zweistimmige Invention", "Cembalo", "d" , 996, "Suite", "Laute" , "e" , 1001, "Sonate", "Violine", "g" , 1032, "Sonate", "Floete , Cembalo", "A" , 1041, "Violin-Konzert", "Violine, Streicher, Continuo", "a" , 1068, "Orchester-Suite No. 3", "Orchester", "D" }; x.ausgabe(liste[10]); system("pause"); return 0; }
-
@Helfer:
Super! Jetzt hat er anstatt einer "invalid conversion" eineg++ schrieb:
warning: deprecated conversion from string constant to ‘char*’
Das ist natürlich viel besser
.
-
hadamar schrieb:
Wo ist der Fehler?
[..snipp..]#include <iostream> #include <vector> class BWV { public: explicit BWV() : nr(-1), name(""), instrument(""), tonart("") {}; explicit BWV(int Nr, std::string Name, std::string Inst="", std::string Ton="") : nr(Nr), name(Name), instrument(Inst), tonart(Ton) {}; std::string ausgabe() const { std::string out; out.append("Nummer: \t ") .append(nummerToString(nr)).append("\n") .append("Name: \t") .append(name).append("\n") .append("Instrument: \t") .append(instrument).append("\n") .append("Tonart: \t") .append(tonart).append("\n"); std::cout << out; return out; } private: int nr; std::string name; std::string instrument; std::string tonart; std::string numberToString(int n) { // schau mal hier: http://www.c-plusplus.net/forum/viewforum-var-f-is-25.html ... zweiter Eintrag ... und schau dir die anderen ruhig auch an ;) } }; int main() { std::vector<BWV*> liste; liste.push_back(new BWV(48, "Ich elender Mensch, wer wird mich erloesen","Chor, Orchester")); liste.push_back(new BWV(186, "Aergere dich, o Seele, nicht", "Chor, Orchester")); liste.push_back(new BWV(211, "Schweigt stille, plaudert nicht [Kaffee-Kantate]", "Chor , Orch.")); liste.push_back(new BWV(454, "Ermuntere dich, mein schwacher Geist", "Chor, Orchester")); liste.push_back(new BWV(529, "Trio-Sonate" , "Orgel", "C" )); liste.push_back(new BWV(552, "Praeludium und Fuge", "Orgel", "Es")); liste.push_back(new BWV(582, "Passacaglia and Fugue", "Orgel", "c")); liste.push_back(new BWV(775, "Zweistimmige Invention", "Cembalo", "d")); liste.push_back(new BWV(996, "Suite", "Laute" , "e" )); liste.push_back(new BWV(1001, "Sonate", "Violine", "g" )); liste.push_back(new BWV(1032, "Sonate", "Floete , Cembalo", "A" )); liste.push_back(new BWV(1041, "Violin-Konzert", "Violine, Streicher, Continuo", "a" )); liste.push_back(new BWV(1068, "Orchester-Suite No. 3", "Orchester", "D")); liste.at(10)->ausgabe(); while (liste.size()) { BWV * tmp = liste.back(); liste.pop_back(); delete tmp; } system("pause"); return 0; }
-
@ padreigh
Warum zerstörst du die Objekte nicht mehr?
-
Das geht aber auch ein bisschen hübscher, allgemeiner und ohne Speicherlöcher. Außerdem kann man die Standardbibliothek benutzen, um praktisch alles für einen erledigen zu lassen. Die einzigen Zeilen wo hier tatsächlich programmiert werden musste sind die Interna der Ausgabefunktion. Der Rest sind Aufrufe an die Standardbibliothek.
#include <algorithm> #include <cctype> #include <iostream> #include <iterator> #include <string> #include <vector> class BWV { public: BWV(int Nr=-1, std::string Name="", std::string Inst="", std::string Ton="") : nr(Nr), name(Name), instrument(Inst), tonart(Ton) {} std::ostream& ausgabe(std::ostream &out) const { out<<"Nummer: \t" << nr << '\n' <<"Name: \t\t" << name << '\n' // Unschick, da doppeltes Trennzeichen. Dafür sieht es auf Konsolen mit der üblichen Tabbreite viel besser aus <<"Instrument: \t" << instrument << '\n' <<"Tonart: \t" << tonart; if (tonart.size() && std::isupper(tonart[0])) out << "-Dur"; if (tonart.size() && std::islower(tonart[0])) out << "-Mol"; out << '\n'; return out; } private: int nr; std::string name; std::string instrument; std::string tonart; }; std::ostream& operator<<(std::ostream &out, const BWV &bwv) { return bwv.ausgabe(out); } int main() { std::vector<BWV> BWV_Liste; BWV_Liste.push_back(BWV( 48, "Ich elender Mensch, wer wird mich erloesen" , "Chor, Orchester" )); BWV_Liste.push_back(BWV( 186, "Aergere dich, o Seele, nicht" , "Chor, Orchester" )); BWV_Liste.push_back(BWV( 211, "Schweigt stille, plaudert nicht [Kaffee-Kantate]" , "Chor , Orch." )); BWV_Liste.push_back(BWV( 454, "Ermuntere dich, mein schwacher Geist" , "Chor, Orchester" )); BWV_Liste.push_back(BWV( 529, "Trio-Sonate" , "Orgel" , "C" )); BWV_Liste.push_back(BWV( 552, "Praeludium und Fuge" , "Orgel" , "Es" )); BWV_Liste.push_back(BWV( 582, "Passacaglia and Fugue" , "Orgel" , "c" )); BWV_Liste.push_back(BWV( 775, "Zweistimmige Invention" , "Cembalo" , "d" )); BWV_Liste.push_back(BWV( 996, "Suite" , "Laute" , "e" )); BWV_Liste.push_back(BWV( 1001, "Sonate" , "Violine" , "g" )); BWV_Liste.push_back(BWV( 1032, "Sonate" , "Floete , Cembalo" , "A" )); BWV_Liste.push_back(BWV( 1041, "Violin-Konzert" , "Violine, Streicher, Continuo" , "a" )); BWV_Liste.push_back(BWV( 1068, "Orchester-Suite No. 3" , "Orchester" , "D" )); { std::ostream_iterator<BWV> out_it (std::cout,"\n"); std::copy ( BWV_Liste.begin(), BWV_Liste.end(), out_it ); } }
-
Teilpr¨ufung Informatik I, 11.7.2005 Blatt 4/4 Aufgabe 4) Zur datenm¨aßigen Erfassung der Werke von Johann Sebastian Bach dient hier in dem abge- druckten Programmst¨uck ein Feld mit Variablen einer geeigneten Struktur: int main() { struct BWV liste[1100] = { 48, "Ich elender Mensch, wer wird mich erloesen","Chor, Orchester", " " , 186, "Aergre dich, o Seele, nicht", "Chor, Orchester", " " , 211, "Schweigt stille, plaudert nicht [Kaffee-Kantate]", "Chor, Orch.", " " , 454, "Ermuntre dich, mein schwacher Geist", "Chor, Orchester", " " , 529, "Trio-Sonate" , "Orgel", "C", 552, "Praeludium und Fuge", "Orgel", "Es", 582, "Passacaglia and Fugue", "Orgel", "c", 775, "Zweistimmige Invention", "Cembalo" , "d" , 996, "Suite", "Laute" , "e" , 1001, "Sonate", "Violine" , "g" , 1032, "Sonate", "Floete, Cembalo", "A" , 1041, "Violin-Konzert", "Violine, Streicher, Continuo", "a" , 1068, "Orchester-Suite No. 3", "Orchester" , "D" } ; ausgabe( liste [10]); // Beispiel − Ausgabe ... return 0; } Es fehlen einige Teile, die von Ihnen erg¨anzt werden sollen: 1. Schreiben Sie die Definition der Struktur BWV. Sie enth¨alt folgende Komponenten: • Ganzzahl nr • Zeichenfeld name mit 50 Elementen. • Zeichenfeld instrument mit 50 Elementen. • Zeichenfeld tonart mit 5 Elementen. 2. Schreiben Sie eine geeignete Ausgabefunktion. Sie bekommt eine Strukturvariable ¨ubergeben und gibt alle Strukturkomponenten aus. Falls der erste Buchstabe der Tonart ein Grossbuchstabe ist, wird -Dur dahinterge- setzt, hinter einen Kleinbuchstaben wird -moll erg¨anzt. 3. Erg¨anzen Sie die Funktion main() : In einer Schleife ¨uber alle Elemente des Feldes sollen alle Werke in A (-Dur) aufgelistet werden
ich danke euch wirklich sehr, für die guten lösungsvorschläge, jedoch kann ich nur das wissen anwenden, welches mir in meinen vorlesungen vermittelt wurde. wir sollen dort mit strukturen arbeiten und der aufbau entspricht genau dem, was unser professor von uns erwartet. die von euch einbezogenen bibliotheken sind mit vollkommen fremd, bis auf string und iostream. insgesamt wüsste ich nur gerne, wo mein fehler ist. also ohne den ganzen quelltext zu ändern. irgendwo da muss ein kleiner fehler versteckt sein, da andere aufgaben dieser art, genau so zu lösen waren. jedoch finde ich den fehler nicht so recht
-
Aus deinem org. Posting:
775, "Zweistimmige Invention" "Cembalo", "d" ,
Hier fehlt ein Komma zwischen "Zweistimmige Invention" und "Cembalo"
-
Mögliche Antworten auf dein eigentliches Problem wurde dir am Anfang des Threads schon genannt. Sie sind nicht gut, aber besser geht es nicht, wenn man C mit C++ mischt. Der Rest des Threads danach war nur um dir zu zeigen, wie man das auch in gut machen kann.
Immerhin sind die Aufgaben in guter Absicht gestellt, auch wenn du absolut schrecklichen Stil beigebracht bekommst, den du nach der Prüfung besser sofort vergisst. Oder handelt es sich um einen C und nicht um einen C++ Kurs? Denn die einzigen C++ Sprachelemente die ich sehe sind dein
include<iostream>
(woraus du nichts benutzt), dasusing namespace std
(ebenfalls nicht benutzt) und deine Implementierung vonausgabe
als Member von BWV (was falsch ist, denn es soll laut Aufgabenstellung eine freie Funktion sein). In der Aufgabenstellung selbst ist jedenfalls alles reines C.
-
Hilfe zur Selbsthilfe:
1. Minimalbeispiel erstellen:
Streiche solange unnötiges bis nix mehr überbleibt (wenn wirlich nix mehr da ist, haste was falsch gemacht).
struct BWV { int nr; char name[50]; char instrument[50]; char tonart[5]; // [snipp irrelevantes] //void ausgabe(struct BWV x) {} }; int main() { struct BWV liste[1] = { // [snipp irrelevantes] 1068, "Orchester-Suite No. 3", "Orchester", "D" // FEHLER: invalid conversion from const char to char }; // [snipp alles nach dem Fehler == irrelevantes] }
2. Volle Fehlermeldung haste ja
invalid conversion from const char to char3. Selber interpretieren und probieren .. das ist meist schneller als Forum
Meldung: invalid conversion from const char to charFrage: Wo könnte da ein const char sein?
Gucken:1068, "Orchester-Suite No. 3", "Orchester", "D"
Ergebnis: alles ausser 1068 könnte das seinFrage: wieso will der das überhaupt nach char konvertieren?
Gucken: struct BBMV ( int, char[], char[], char[] )Frage: Ist das mein Code oder steht das eisern fest?
Antwort: Jupp.Nö. (vermeide solche Fragen wenns verwirrt)
Also ändern wer mal:
struct BWV { int nr; const char name[50]; const char instrument[50]; const char tonart[5]; // [snipp irrelevantes] //void ausgabe(struct BWV x) {} // irrelevant für Fehler };
Testen ...
Alternativ: Antworten von Postern mit ~5000 Einträgen besser lesen UND nachdenken:
SeppJ schrieb:
Dein struct nimmt char[] auf, Sachen die zwischen doppelten Anführungszeichen stehen sind aber vom Typ const char[].
Damit kein Fehler kommt musste also entweder dein struct abändern ODER dem compiler beibringen das dein Text zwischen "" nicht const ist:
-
drakon schrieb:
(23:07:46 13.09.2010) @ padreigh: Warum zerstörst du die Objekte nicht mehr?
Schneller
(meins zuletzt bearbeitet von padreigh am 23:04:29 13.09.2010, insgesamt 6-mal bearbeitet)
SeppJ schrieb:
Das geht aber auch ein bisschen hübscher, allgemeiner und ohne Speicherlöcher. [snipp]
[viel ge-snipp-el] // member std::ostream& ausgabe(std::ostream &out) const { out<<"Nummer: \t" << nr << '\n' <<"Name: \t\t" << name << '\n' // Unschick, da doppeltes Trennzeichen. Dafür sieht es auf Konsolen mit der üblichen Tabbreite viel besser aus <<"Instrument: \t" << instrument << '\n' <<"Tonart: \t" << tonart; if (tonart.size() && std::isupper(tonart[0])) out << "-Dur"; if (tonart.size() && std::islower(tonart[0])) out << "-Mol"; out << '\n'; return out; } // free std::ostream& operator<<(std::ostream &out, const BWV &bwv) { return bwv.ausgabe(out); } int main() { std::vector<BWV> BWV_Liste; BWV_Liste.push_back(BWV( 48, "Ich elender Mensch, wer wird mich erloesen" , "Chor, Orchester" )); BWV_Liste.push_back(BWV( 186, "Aergere dich, o Seele, nicht" , "Chor, Orchester" )); { std::ostream_iterator<BWV> out_it (std::cout,"\n"); std::copy ( BWV_Liste.begin(), BWV_Liste.end(), out_it ); } }
Stimmt.
Ich könnte jetzt behaupten ich wollte den Threadsteller nicht überfordern.
Die Wahrheit ist eher das ich zwar mit stream's klar komme, dazu aber meist 1-2 ( dutzend
) mal die Referenz bemühen muss und es daher für so hingeklatschten Code vermeide. Vor allem die Member/Free Signaturen kann ich mir irgendwie nicht merken. Ich bewundere jedoch die Eleganz deines Codes, vor allem der gescopte Ausgabekonstrukt (habe glaube ich noch nie stream_iterator's bemüht
). Hat das scopen eine besondere Bewandnis oder Angewohnheit aus mehrzeiligeren Funktionen?). Mir fehlt bei der std::API ein wenig das interne Inhaltsverzeichnis um zu wissen wie man etwas elegant löst.
Aber dafür hätte ich
"Moll" statt
"Mol" drangehängt.
-
hadamar schrieb:
...jedoch kann ich nur das wissen anwenden, welches mir in meinen vorlesungen vermittelt wurde. wir sollen dort mit strukturen arbeiten und der aufbau entspricht genau dem, was unser professor von uns erwartet. die von euch einbezogenen bibliotheken sind mit vollkommen fremd, bis auf string und iostream....
Ich sehe nicht, wo die o.g. Implementierung deinen Vorgaben widerspräche.
Hier im Forum versammeln sich Leute, die in erster Linie guten Code produzieren wollen ... "mach irgendwie laufen" wird hier sehr selten bedient.Und vielleicht ist "guter Code" ja auch für einen Informatikstudenten auch gar kein soooo unerstrebenswertes Ziel.
Gruß,
Simon2.
-
padreigh schrieb:
Hat das scopen eine besondere Bewandnis oder Angewohnheit aus mehrzeiligeren Funktionen?).
Das ist, damit der Iterator den ich nach der Aktion nicht mehr brauche nach der Aktion auch zerstört wird. Ist hier zwar ziemlich sinnlos, da danach sowieso nichts mehr kommt, aber aus Gewohnheit schränke ich den Scope von Variablen immer so weit wie möglich ein. Streamiteratoren sind aber schon ziemlich unnormal. Ich benutze die jedenfalls sehr selten, da gewöhnliche Ausgabeaktionen genauso lang zu schreiben sind und keine wesentlichen Vorteile oder Nachteile haben. Ich wollte dem Threadersteller nur mal zeigen was so geht.
Mir fehlt bei der std::API ein wenig das interne Inhaltsverzeichnis um zu wissen wie man etwas elegant löst.
So groß ist die Standardbibliothek eigentlich gar nicht. Die Referenz auf cplusplus.com kann man recht bequem an ein paar Nachmittagen überfliegen. Anfangen kann man zum Beispiel mit den cool klingenden Headern wie "algorithm" oder "memory" und dort schon einige Schätzchen entdecken (z.B. auto_ptr). Dann weiter zu den ganzen Headern die man irgendwie schon kennt wie "iostream" und "string" und dort zum Beispiel merken, dass man string auch genauso wie vector benutzen kann, wenn man will. Danach dann exotisch klingende Header wie eben besagtes "iterator" oder "numeric", wo man dann wirklich gut versteckte Dinge wie accumulate findet, das man eher in "algorithm" vermutet hätte. Zum Schluss dann die C-Standardbibliothek. Das meiste davon braucht man zwar nicht mehr, aber wenn man gut hinguckt findet man ein paar Schätze die niemand anderes sonst kennt, zum Beispiel ldiv aus "cstdlib".
Guten, eleganten Stil kannst du aus fortgeschritteneren Büchern entnehmen, wie zum Beispiel die diversen "Effective XXX" Bücher von Scott Meyers. Auch ziemlich gut sind die C++ FAQ Lite, wo in recht lockerem Stil und auch für Anfänger verständlich Stilfragen und Techniken erläutert werden. Trotzdem wird dort nicht mit Hintergrundwissen und genauen Begründungen gegeizt.Dort findest du auch weitere Literaturhinweise (Eintrag 28), wenn dir das noch nicht ausreicht.
Aber dafür hätte ich
"Moll" statt
"Mol" drangehängt.
Ups, wie peinlich. Musikunterricht ist wohl schon zu lange her.
P.S.: Ich bin ja immer noch bei der Theorie, dass der Fragesteller einen C Kurs macht und nur versehentlich C++ in seinen Code aufgenommen hat, weil er versucht hat seine Hausaufgaben nach der guten alten Copy&Paste&"bloß nicht nachdenken"-Technik zu lösen. Die Aufgabenstellung ist derart C-ig (und für C gar nicht mal so schlechter Stil, wenn man ein paar Zugeständnisse an Anfänger erlaubt), das kann unmöglich ein C++ Kurs sein.
-
SeppJ schrieb:
Mögliche Antworten auf dein eigentliches Problem wurde dir am Anfang des Threads schon genannt. Sie sind nicht gut, aber besser geht es nicht, wenn man C mit C++ mischt. Der Rest des Threads danach war nur um dir zu zeigen, wie man das auch in gut machen kann.
Immerhin sind die Aufgaben in guter Absicht gestellt, auch wenn du absolut schrecklichen Stil beigebracht bekommst, den du nach der Prüfung besser sofort vergisst. Oder handelt es sich um einen C und nicht um einen C++ Kurs? Denn die einzigen C++ Sprachelemente die ich sehe sind dein
include<iostream>
(woraus du nichts benutzt), dasusing namespace std
(ebenfalls nicht benutzt) und deine Implementierung vonausgabe
als Member von BWV (was falsch ist, denn es soll laut Aufgabenstellung eine freie Funktion sein). In der Aufgabenstellung selbst ist jedenfalls alles reines C.also der erste teil der klausur, wozu diese aufgabe gehört, soll mit c und nicht mit c++ bearbeitet werden. also könnte ich im grunde das <iostream> weglassen. und nein, kein copy+paste. ich war mir nur am anfang der aufgabe noch nicht sicher, ob ich die ausgabe mit cout oder printf schreiben will. das ist uns nämlich frei überlassen. und es bringt im grunde doch auch keinen nachteil wenn man oben die ein oder andere bibliothek zu viel stehen hat oder?
also ich hab jetzt die main() funktion einfach mal aus der pdf rauskopiert und nicht selbst abgetippt und so funktioniert es jetzt auch.keine ahnung warum aber irgendwas muss ich beim abtippen falsch gemacht haben, wobei ich den fehler immernoch nicht gefunden habe. naja jedenfalls war mein programm, wenn auch kein guter c-stil ja scheinbar richtig und funktionsfähig.
Simon2 schrieb:
Und vielleicht ist "guter Code" ja auch für einen Informatikstudenten auch gar kein soooo unerstrebenswertes Ziel.
bin kein informatikstudent
eher ein halbwissender, der dort eine klausur über ein thema schreiben muss, mit dem er sich vorher noch nie wirklich beschäftigt hat.
-
hadamar schrieb:
also der erste teil der klausur, wozu diese aufgabe gehört, soll mit c und nicht mit c++ bearbeitet werden. also könnte ich im grunde das <iostream> weglassen. und nein, kein copy+paste. ich war mir nur am anfang der aufgabe noch nicht sicher, ob ich die ausgabe mit cout oder printf schreiben will. das ist uns nämlich frei überlassen. und es bringt im grunde doch auch keinen nachteil wenn man oben die ein oder andere bibliothek zu viel stehen hat oder?
Doch. Besonders wenn du dadurch die Sprache veränderst. Dein C lässt sich nämlich nicht mehr mit einem C Compiler übersetzen, dabei nutzt du gar kein C++.
also ich hab jetzt die main() funktion einfach mal aus der pdf rauskopiert und nicht selbst abgetippt und so funktioniert es jetzt auch.keine ahnung warum aber irgendwas muss ich beim abtippen falsch gemacht haben, wobei ich den fehler immernoch nicht gefunden habe.
Auch dies wurde dir schon gesagt. Lies die Antworten! Du hast ein Komma vergessen. Selber schuld, wenn du solchen Kram von Hand abtippst.
naja jedenfalls war mein programm, wenn auch kein guter c-stil ja scheinbar richtig und funktionsfähig.
Für C ist das gar nicht sooooo schlecht, bis auf fehlende innere Klammern bei der Initialisierung das Arrays. Das wichtigste ist aber, dass C entgegen landläufiger Meinung keine Untermenge von C++ ist! In C ist die Konvertierung von const char[] nach char[] legal. Soviel zum Thema, dass man ohne Bedenken weitere Bibliotheken einbinden kann.
-
hadamar schrieb:
...
bin kein informatikstudenteher ein halbwissender, der dort eine klausur über ein thema schreiben muss, mit dem er sich vorher noch nie wirklich beschäftigt hat.
Also entweder studierst du es oder nicht - im letzteren Fall brauchst du auch keine Klausur darüber zu schreiben.
Im Ersteren ist deine Aufgabe, die Wissen darüber anzueignen ... und "guter Code" ist beileibe kein Rand-, Spezial- oder Expertenthema beim Programmieren, sondern das A&O.Der Clou ist ja: Guter Code ist oftmals viel leichter (zu schreiben und zu verstehen) und gleichzeitig weniger fehleranfällig.
Ergo. Weniger Arbeit und mehr gelernt! Was will der (und sei es Nebenfach-)Student mehr?Gruß,
Simon2.
-
das stimmt.
aber ich hab jetzt die ganze zeit mit den vorlesungsunterlagen die programme geschrieben und fühle mich nicht dazu in der lage, mir bis übermorgen einen komplett neuen programmierstil anzueignen.klausur is übermorgen ;)erstes ziel:gute note!
-
Wenig Aufwand <-> gute Note funktioniert nur bei den wenigsten. Die anderen müssen sich ein wenig mehr reinhängen und früher anfangen.
Aber als kleiner Tipp: Das, was Simon2 sagt ist wahr und kann dir selbst in kurzer Zeit zu gutem Code helfen (ob das eine gute Note wird kann ich nicht sagen, weil ich die Bedingungen nicht kenne). Also benutze die Sprachmittel, auch wenn du da halt noch schnell was neues lernen musst, aber es ist es auf alle Fälle Wert 3-4 Stunden string und vector kennen zu lernen (was wirklich ausreichen sollte) und dann schreibst du dein Programm nochmal innert sehr kurzer Zeit einiges robuster neu.
@padreigh
Wenn du das erst im Nachhinein bemerkst und dann noch so implementierst, dann ist das nicht weniger fragwürdig.
-
drakon schrieb:
Aber als kleiner Tipp: Das, was Simon2 sagt ist wahr und kann dir selbst in kurzer Zeit zu gutem Code helfen (ob das eine gute Note wird kann ich nicht sagen, weil ich die Bedingungen nicht kenne). Also benutze die Sprachmittel, auch wenn du da halt noch schnell was neues lernen musst, aber es ist es auf alle Fälle Wert 3-4 Stunden string und vector kennen zu lernen (was wirklich ausreichen sollte) und dann schreibst du dein Programm nochmal innert sehr kurzer Zeit einiges robuster neu.
Die Frage ist, was der Prüfer davon hält. Insbesondere da wir ja inzwischen aus ihm rausgequetscht haben, dass hier tatsächlich nur nach C gefragt wurde. Da wären string und vector schlichtweg falsch. Das Pseudo-C++ welches der Fragesteller in seinem eigenem Ansatz benutzt hat, wäre natürlich ebenso falsch.