Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

void ein Wert ausgeben?

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> C/C++
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Paul_H



Anmeldungsdatum: 01.02.2006
Beiträge: 52
Wohnort: Bonn

BeitragVerfasst am: 17. Mai 2006 15:35    Titel: void ein Wert ausgeben? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Gast





BeitragVerfasst am: 17. Mai 2006 16:08    Titel: Antworten mit Zitat

naja, es gibt da nen paar dirrty Lösungen Augenzwinkern

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

BeitragVerfasst am: 17. Mai 2006 18:14    Titel: Antworten mit Zitat

Jo, das mit den Zeigern hab ich grad selbst entdeckt und realisiert, jetz funktioniert alles wunderbar.

Trotzdem vielen Dank.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> C/C++ Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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