000
16.02.2017, 15:29 Uhr
cppanfaenger1
|
Hallo zusammen,
ich habe eine Frage zum Folgenden Programm. Warum muss bei der ersten Funktion ( void anzahlEinlesen ) vor dem n das "&"-Zeichen gesetzt werden. Ich weiß, dass damit die Adresse des Parameters übergeben wird, allerdings verstehe ich den Sinn noch nicht ganz bzw. warum es ohne nicht funktioniert.
C++: |
#include <iostream> using namespace std;
// Funktionsdeklarationen -- zu vervollständigen void anzahlEinlesen(int &n); void werteEinlesen(double *arr, int n); void werteAusgeben(double *arr); void werteKopieren(double *quellArray, double *zielArray, int n); void werteMultiplizieren(double *arr, int n, double faktor); bool istAufsteigendSortiert(int n, double *arr);
// Funktionsdefinitionen -- zu vervollstädigen void anzahlEinlesen(int &n) { cout << "Anzahl Werte? "; cin >> n; }
void werteEinlesen(double *arr, int n) { for (int i=0; i<n; i++) { cout << "Wert " << i << "?" ; cin >> arr[i]; } }
void werteAusgeben(double *arr, int n) { cout << arr[0]; for (int i = 1; i < n; ++i) cout << ", " << arr[i]; }
void werteKopieren(double *quellArray, double *zielArray, int n) { for ( int i=0; i<n; i++) { zielArray[i] = quellArray[i]; } }
void werteMultiplizieren(double *arr, int n, double faktor) { for ( int i=0; i<n; i++) { arr[i] = arr[i]*faktor; } }
bool istAufsteigendSortiert(int n, double *arr ) { double letzterWert = arr[0]; for (int i = 1; i < n; ++i) { if (arr[i] < letzterWert) return false; letzterWert = arr[i]; } return true; }
// main-funktion -- bereits komplett int main() { int anzahl; anzahlEinlesen(anzahl); double *werte = new double[anzahl]; // Zahlen einlesen und in werte-Array speichern werteEinlesen(werte, anzahl);
// werte-Array ausgeben cout << "Eingegebene Werte: "; werteAusgeben(werte, anzahl); cout << endl;
// zweites Array anlegen double *doppelteWerte = new double[anzahl]; // werte-Array in doppelteWerte-Array kopieren werteKopieren(werte, doppelteWerte, anzahl);
// alle Zahlen in doppelteWerte-Array mit 2.0 multiplizieren werteMultiplizieren(doppelteWerte, anzahl, 2.0);
cout << "Verdoppelte Werte: "; werteAusgeben(doppelteWerte, anzahl); cout << endl;
delete[] doppelteWerte; // doppelteWerte-Array freigeben
// pruefe ob die Werte sortiert sind if (istAufsteigendSortiert(anzahl, werte)) { cout << "Werte sind aufsteigend sortiert." << endl; } else { cout << "Werte sind nicht aufsteigend sortiert." << endl; } delete[] werte;// werte-Array freigeben return 0; }
|
Ich hoffe es nimmt sicher jemand die Zeit, um mir zu helfen Dieser Post wurde am 16.02.2017 um 15:31 Uhr von cppanfaenger1 editiert. |