Info. Prüfung

Hallo,

ich habe demnächst eine Info. Prüfung. Und zur Vorbereitung habe ich alle alte Prüfungen durchgemacht die ich finden konnte.
Jedoch habe ich zwei Aufgaben, wo ich nicht weiss wie ich am besten Anfange.

Aufgabe 1)
Das Programm soll vervollständigt werden. Es soll überprüft werden, ob in einem übergebenem int-Array eine Zahl mehrfach vorkommt. Ist das der Fall soll -1 zurückgeliefert werden und die Meldung „Zahl mehrfach Vorhanden“ ausgegeben werden, ansonst soll 0 zurückgeliefert werden und die Meldung
„Kein Zahl mehrfach vorhanden“ ausgegeben werden.

Es dürfen keine Funktionen aus Standartbibliothek verwendet werden!

#include
#define ASIZE 7

/* weitere Deklarationen? */

int main (void)
{
int s[ASIZE] = { 7, 66, 3, 9, 33, 24, 81 }

Danke im Voraus!

(2 Aufgabe, nächster Artikel)

Aufgabe 2
Aufgabe 2)

Es soll eine Funktion geschrieben werden, die eine gewisse Anzahl anz von Buchstaben von einem String s in einen anderen String t kopiert und Länge von t zurückliefern. Wenn das kopieren nicht möglich ist, soll 0 zurückgeliefert werden.

int startstr (char *s, char*t, int anz)

Also ich denke das mein Problem im Verstehen der Aufgabestellung liegt, aber vieleicht versteht es irgend jemand von euch.

Danke!!!

#include
#define ASIZE 7

/* weitere Deklarationen? */

int main (void)
{
int s[ASIZE] = { 7, 66, 3, 9, 33, 24, 81 }

Ungefähr so:

for (int i = 0; i

Es soll eine Funktion geschrieben werden, die eine gewisse
Anzahl anz von Buchstaben von einem String s in einen anderen
String t kopiert und Länge von t zurückliefern. Wenn das
kopieren nicht möglich ist, soll 0 zurückgeliefert werden.

int startstr (char *s, char*t, int anz)

Also ich denke das mein Problem im Verstehen der
Aufgabestellung liegt, aber vieleicht versteht es irgend
jemand von euch.

Danke!!!

Ich verstehe in der Tat auch nicht wie das gemeint ist… Steht in t schon ein String drin dessen erste Zeichen überschrieben werden? Und was soll heissen „wenn ds kopieren nicht möglich ist“!?

Grüße
Bruno

Hallo Bruno.

Vielen Dank für dein Lösungsvorschlag!

Grüss,
Alexander

Ich verstehe in der Tat auch nicht wie das gemeint ist…
Steht in t schon ein String drin dessen erste Zeichen
überschrieben werden? Und was soll heissen „wenn ds kopieren
nicht möglich ist“!?

Nun, ich weiss es auch nicht. Die Aufgabe habe ich einfach aus der Aufgabensammlung abgeschrieben.
???

Grüss,
Alexander

Hallo!

Also ich denke, daß diese Aufgabenstellung ein klassisches Beispiel ist, wie man sowas nicht machen sollte: da die Funktion ins einen String s schreiben soll, von dem nicht bekannt ist, wieviel Platz dafür alloziert wurde provoziert das Ding ja geradezu Buffer overflows…
Wie ich die Aufgabe verstehe: s soll mit t[0…anz-1] überschrieben werden, allerdings nur bis zur aktuellen Länge von s (also bis zum ersten \0). Andere Informationen über s hab’ ich ja nicht, also weiß ich auch nicht, wieviel Platz für s überhaupt reserviert ist. Auch der ‚\0‘-check bringt mir eigentlich nichts (vielleicht ist ja s gar nie initialisiert worden, etc.) aber es ist der einzige Anhaltspunkt…

Bei einer Prüfung würde ich obengenanntes übrigens auch tatsächlich anführen und die Funktion anders als im vorgegebenen Prototypen definieren. Fragt sich nur, ob der Prüfer das verträgt…

Gruß,
TheBeast

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]