Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hausaufgabe Informatik C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.06.2008, 16:27 Uhr
~Dan Gerous
Gast


Hi Leute,
ich muss eine Hausaufgabe in Informatik bis Freitag erstellen, hab jedoch von C++ wegen Zeitmangel soviel Plan wie ein Fisch vom Fahrradfahren.

Folgende Aufgabe:


Gegeben sei folgende Datenstruktur:

struct digit {
float f;
digit * pNext;
};

Aus Elementen der Datenstrukur digit soll eine einfach verkettete Liste aufgebaut werden, deren f-Instanzen jeweils Messwerte einer Testreihe repräsentieren sollen. Die Messwerte sollen vom Nutzer eingegeben werden.
Beispiel: Der Messwertreihe -2 -3.4 8.1 0.4 10.7 soll aus 5 Elementen vom Typ digit bestehen:
anchor → -2 → -3.4 → 8.1 → 0.4 → 10.7 → NULL

Entwerfen Sie über eine solche Datenstruktur ein C++-Programm mit folgendem Aufbau:

int generate(digit *&pA);

Die Funktion generate soll eine Liste aufbauen. Der Inhalt der f-Instanzen (Strukturelemente f eines Listenelements) ist vom Nutzer festzulegen. Dabei ist vom Programmierer festzulegen, ob eine bestimmte Anzahl von Messwerten einzulesen ist oder ob eine bestimmte Eingabe zum Abbruch der Eingabe führt. Die Funktion generate gibt den Wert 1 zurück, wenn der Aufbau vollständig geglückt ist, den Wert 0 sonst.
Wenn der Parameter pA gleich NULL ist, so soll eine neue Liste aufgebaut werden, sonst sollen Elemente an eine existierende Zeichenliste angehängt werden. Die korrekte Parameterübergabe ist geeignet in der Funktion main zu realisieren.

float get_mean(digit * pA);

Die Funktion get_mean soll den arithmetischen Mittelwert der f-Instanzen der Elemente der einfach verketteten Liste bestimmen, die durch den Zeiger pA adressiert wird. Der ermittelte Mittelwert ist der rufenden Funktion zu übergeben.

int delete_elements(digit * & pA, float mean, float divergency);

Die Funktion delete_elements soll alle Elemente aus der einfach verketteten Liste löschen, die durch den Zeiger pA adressiert wird, deren f-Instanz um mehr als divergency (Angabe in Prozent) vom Mittelwert mean abweichen. Zurückgegeben werden soll die Anzahl der gelöschten Elemente.
Hinweis: Beachten Sie, dass auch das Element gelöscht werden kann, welches am Anfang der einfach verketteten Liste steht

void print_elements(digit * & pA);

Die Funktion print_elements soll die f-Instanzen aller Elemente der einfach verketteten Liste, die durch den Zeiger pA adressiert wird, auf dem Bildschirm durch Tabultoren voneinander getrennt ausgeben. Dabei sollen, wenn möglich 5 Werte auf einer Bildschirmzeile stehen.
In der Funktion int main() sollen die beschriebenen Funktionen menuegesteuert (auch mehrfach) aufgerufen werden. Als Mittelwert für die Funktion delete_elements ist das Ergebnis der Funktion get_mean zu nutzen, die prozentuale Abweichung divergency ist von Nutzer des Programmes einzugeben.

Hinweis: Die Anzahl der in der dynamischen Datenstruktur verwalteten Elemente sei generell nicht bekannt.


Hab mich schon selbst versucht, aber ich bekomme lauter Fehler vom Compiler und weiß nich wo ich anfangen soll. Da ich dann keine Ahnung hatte wo ich anfangen soll, hab ichs erstmal aufgegeben. Kann mir jemand helfen dabei? Sollte an und für sich für C++ Erfahrene ein Kinderspiel sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.06.2008, 17:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Und das Rätsel darin soll nun sein was das ganze in der Rätselecke zu suchen hat?

Ansonsten: Wir sind kein Hausaufgabenservice, zeig uns deinen Ansatz und wir helfen dir bei konkreten Problemen weiter.

(Mal davon abgesehen sieht das wieder nach einer Aufgabe aus wo der Prof/Lehrer wiedermal den Unterschied zwischen C und C++ nicht kennt ...)
--
class God : public ChuckNorris { };

Dieser Post wurde am 10.06.2008 um 17:48 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.06.2008, 18:16 Uhr
0xdeadbeef
Gott
(Operator)


Das ist doch wohl...


Zitat:

Da ich dann keine Ahnung hatte wo ich anfangen soll, hab ichs erstmal aufgegeben.


...Buch in die Hand und lernen?! Dreister geht's ja wohl nicht mehr; nicht mal angefangen, schon aufgegeben, und jetzt sollen wir das hier schön säuberlich durchkauen?

Ich bin mir wirklich nicht sicher, warum FloSoft den Thread überhaupt noch offen gelassen hat.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.06.2008, 21:31 Uhr
~blubb
Gast


was hat dieser satz genau zu bedeuten???

"heute code ich, morgen debug ich und übermorgen cast ich die königin nach int"!!

heute code ich - ist klar
morgen debug ich - ist klar
übermorgen cast ich die königin nach int???

mfg
blubb
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.06.2008, 21:33 Uhr
~whoop
Gast


ich hatte einen ansatz und mir hilft trotzdem keiner *sniff*

mfg
ein verzweifelter programmierer ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.06.2008, 23:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ~whoop:
ich hatte einen ansatz und mir hilft trotzdem keiner *sniff*

mfg
ein verzweifelter programmierer ...


wo ist der ansatz? bisher haben wir nur deine aufgabenstellung gesehen, keine einzige zeile eigenen code.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.06.2008, 23:20 Uhr
ao

(Operator)


Was für eine bescheuerte Aufgabenstellung!

Da programmieren sich die Studenten den Wolf, erfinden zum tausendsten Mal die verkettete Liste, und das, was da rauskommt, ist so speziell, dass man es niemals wieder verwenden kann, weil Container und Nutzdaten in einer Struktur vermengt sind. So ein Kuddelmuddel macht man eigentlich seit Erfindung der STL nicht mehr.

Allein so eine API-Funktion:


Zitat:
int delete_elements(digit * & pA, float mean, float divergency);

Die Funktion delete_elements soll alle Elemente aus der einfach verketteten Liste löschen, die durch den Zeiger pA adressiert wird, deren f-Instanz um mehr als divergency (Angabe in Prozent) vom Mittelwert mean abweichen


Eine Funktion, die das macht, berechnet den Mittelwert gefälligst selber und lässt sich nicht irgendwas als "Mittelwert" unterjubeln - das float mean hat im Interface nix verloren.

Auch dass generate den Benutzer nach Werten fragt, ist Blödsinn. Im nächsten Anwendungsfall kommen die Daten aus einer Datei, aus dem Internet oder sonstwoher, und dann? Die generate-Funktion neu schreiben?

Das ist die pure Verschwendung, in der Zeit könnten die Studenten besser was Sinnvolles machen, Software-Design lernen zum Beispiel, ein gutes Design ist nämlich mehr als die halbe Miete, das bisschen Codeschreiben ist ein Klacks.

Wie auch immer, whoop: Es ist hier so üblich, dass Leute, die mit Hausaufgaben nicht klarkommen, ihren Ansatz vorlegen, der dann gemeinsam weiterentwickelt wird. Sprich, du stellst konkrete Fragen und kriegst konkrete Antworten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.06.2008, 09:35 Uhr
stephanw
localhorst


Ich sehe das nicht so eng. Klar würde man das Ergebnis nicht in produktivem Code verwenden. Dennoch kann man als Einsteiger auch übungshalber mal eine Listenklasse schreiben. Oder einen String. Oder oder oder. Dabei lernt man doch auch. Und Erfahrungen muss man eben immer selber machen.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.06.2008, 12:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von stephanw:
Ich sehe das nicht so eng. Klar würde man das Ergebnis nicht in produktivem Code verwenden. Dennoch kann man als Einsteiger auch übungshalber mal eine Listenklasse schreiben. Oder einen String. Oder oder oder. Dabei lernt man doch auch. Und Erfahrungen muss man eben immer selber machen.

Ja natürlich, ist nicht verkehrt wenn man weiß was eine verkette liste ist und wie man sowas implementiert. Wenn, dann aber richtig und sowieso nicht so ein C und C++ Kuddelmuddel.

Das schlimme ist ja eben das viele der Professoren und Lehrer selbst so viel Ahnung von Softwaredesign und den Unterschieden zwischen C und C++ haben wie die meisten ihrer Studenten ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.06.2008, 14:27 Uhr
ao

(Operator)



Zitat von stephanw:
Dennoch kann man als Einsteiger auch übungshalber mal eine Listenklasse schreiben. Oder einen String. Oder oder oder.

Klar, gerne, aber dabei nicht vergessen, welche Design-Aspekte bei einer Liste besonders wichtig sind, z.B. Wiederverwendbarkeit.

Leider lernen viele Studenten nur das Einmal-und-nie-wieder-Prinzip: Schreiben, Übersetzen, Vergessen, jedes Projekt fängt wieder bei Null an, und der Gedanke, dass man Code auch wiederverwenden kann, liegt ihnen völlig fern. Kein Wunder bei solchen Aufgaben. Warum haben Profs und Assistenten nicht eine gewisse Durchgängigkeit in ihren Übungen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: