V
VirusDeluXe
Gast
Ich weis, dass es nun nicht unbedingt sauberes C++ ist, aber unsere Dozenten tun sich etwas schwer z.B. "cin" und "cout" zu verwenden ...
Ich habe ein ganz anderes grundsätzliches Problem. Hierbei handelt es sich um eine Konsolenanwendung. Was das Programm ausgibt, ist vermutlich nach einmaligem ausführen nahezu selbsterklärend.
Der Code macht zweimal das Gleiche. Einmal im "alten Stil", einmal eher in Richtung OOP. Dort ist in beiden Varianten ein Char-Array definiert. Wir sollen das ganze Umschreiben, so dass es ein long-Array verwendet. Ich tu mich allerdings mit dieser Umsetzung im Moment durchaus schwer und bin auch etwas mit meinem Rat am Ende.
Wenn ich die Anwendung starte, dann würde bei der Eingabe "5" im Char-Beispiel folgendes rauskommen:
A B C D
In der long-Variante müsste theoretisch rauskommen:
1 2 3 4
... Ich habe nun bewusst das Original reingepostet, weil egal wie ich den Quark ändere, ich komme immer nur auf Werte alá:
234789 234789 234789 234789 ...
Kann mir jemand evtl. einen Lösungsansatz geben bzw. es lösen, aber eine kleine Erklärung geben was er da genau geändert hat? Irgendwo habe ich gerade einen gigantischen Gedankenfehler.
Ich würde für jede Hilfe sehr danken.
Ich habe ein ganz anderes grundsätzliches Problem. Hierbei handelt es sich um eine Konsolenanwendung. Was das Programm ausgibt, ist vermutlich nach einmaligem ausführen nahezu selbsterklärend.
Der Code macht zweimal das Gleiche. Einmal im "alten Stil", einmal eher in Richtung OOP. Dort ist in beiden Varianten ein Char-Array definiert. Wir sollen das ganze Umschreiben, so dass es ein long-Array verwendet. Ich tu mich allerdings mit dieser Umsetzung im Moment durchaus schwer und bin auch etwas mit meinem Rat am Ende.
Wenn ich die Anwendung starte, dann würde bei der Eingabe "5" im Char-Beispiel folgendes rauskommen:
A B C D
In der long-Variante müsste theoretisch rauskommen:
1 2 3 4
... Ich habe nun bewusst das Original reingepostet, weil egal wie ich den Quark ändere, ich komme immer nur auf Werte alá:
234789 234789 234789 234789 ...
Kann mir jemand evtl. einen Lösungsansatz geben bzw. es lösen, aber eine kleine Erklärung geben was er da genau geändert hat? Irgendwo habe ich gerade einen gigantischen Gedankenfehler.
Ich würde für jede Hilfe sehr danken.
Code:
#include <stdio.h> // Standard-I/O-Bibliothek
#include <malloc.h> // Speichermanagement-Bibliothek
int MemoryReservationException = 100;
int main()
{
try
{
// Abfrage, wieviel Speicher reserviert werden soll.
// Exception bei negativer oder ungültiger Eingabe.
int request = 0;
printf("Wieviel Speicher soll reserviert werden? ");
scanf("%d", &request);
if (request <= 0) throw MemoryReservationException;
// Dynamische Speicherallokation mit malloc(...).
// Speicher wird mit Zeichen ab 'A' gefüllt.
char *str1 = NULL;
str1 = (char*)malloc(request);
for (int i = 0; i < request; i++) str1[i] = char('A'+i);
str1[request-1] = '\0';
// Nach der Ausgabe auf stdin wird der Speicher wieder freigegeben.
printf("\nAngelegte Zeichenkette: %s + \\0 \n", str1);
free(str1); str1 = NULL;
printf("\n\nUnd jetzt dasselbe nochmal mit new & delete ...\n\n");
// Dynamische Speicherallokation -- diesmal mit new.
// Speicher wird mit Zeichen ab 'a' gefüllt.
char *str2 = NULL;
str2 = new char[request];
for (int i = 0; i < request; i++) str2[i] = char('a'+i);
str2[request-1] = '\0';
// Nach der Ausgabe auf stdin wird der Speicher wieder freigegeben.
printf("\nAngelegte Zeichenkette: %s + \\0 \n", str2);
delete str2; str2 = NULL;
}
catch (int e)
{
printf("\nUps, da ging was schief (Exception %d)...\n", e);
}
fflush(stdin); getchar();
return 0;
}
Zuletzt bearbeitet: