Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Paul_H
Anmeldungsdatum: 01.02.2006 Beiträge: 52 Wohnort: Bonn
|
Verfasst am: 17. Mai 2006 15:35 Titel: void ein Wert ausgeben? |
|
|
Hallo zusammen, ich muss folgende Aufgabe bearbeiten:
Implementieren Sie eine void Funktion DiffSum in C, die zwei double Zahlen X und Y
und eine short int Zahl n übergeben kriegt und die Differenz Y −X in X und die Summe
X + Y in Y zurückliefert. Zusätzlich soll die Funktion DiffSum den Wert von n um eins
erhöhen.
Schreiben Sie ein main Programm, das diese Funktion DiffSum mindestens dreimal aufruft,
sowie nach jedem Aufruf X, Y und n ausgibt.
So, die void-Funktion zu schreiben, die die 3 eingelesenen Werte bearbeitet, war ja kein Problem.
Nun ist die Aufgabe ja mit ziemlicher Sicherheit so gemeint, dass beim zweiten Aufruf von DiffSum in der main-Funktion diese mit den vorher bearbeiteten Werten arbeitet.
Wie kann ich das den hinkriegen? Ich meine, ich kann ja keine Werte mit aus der Funktion nehmen (return), da void.
Ich appeliere an die C-Erfahrenen, mir ein paar Tipps zu geben. Danke im Voraus. |
|
Nach oben |
|
|
|
Senior Sanchez Gast
|
Verfasst am: 17. Mai 2006 16:08 Titel: |
|
|
naja, es gibt da nen paar dirrty Lösungen
Nummer 1: Globale Variablen.
Die Variablen werden nicht lokal in der Methode implementiert, sondern stehen global zur Verfügung und sind somit von der Methode unabhängig.
Nummer 2: Zeiger (referenzen gibts ja erst ab C++)
Du übergibst der Methode die Parameter nicht per Copy-by-Value sondern by-Reference. Das bedeutet, dass beim Methodenaufruf keine Kopien der Variablenwerte auf dem Stack abgelegt werden, sondern stattdessen einfach Zeiger übergeben werden die die Speicheradresse auf X und Y enthalten.
Nun kannste in der Methode die Zeiger dereferenzieren, die Summe bzw. Differenz bilden und entsprechend den dereferenzierten Zeigern zu ordnen (ACHTUNG: Du weißt das Ergebnis nicht an die Zeiger zu, sondern du musst diese vorher dereferenzieren und dann erst zuweisen) |
|
Nach oben |
|
|
Paul_H
Anmeldungsdatum: 01.02.2006 Beiträge: 52 Wohnort: Bonn
|
Verfasst am: 17. Mai 2006 18:14 Titel: |
|
|
Jo, das mit den Zeigern hab ich grad selbst entdeckt und realisiert, jetz funktioniert alles wunderbar.
Trotzdem vielen Dank. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum nicht herunterladen
|
|