Pointer Arithmetik



  • Meine Frage ist wie kann ich hier eine "Pointer-Arithmetik einführen ? Habe ehrlich gesagt keine Ahnung...

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    #define MAX 10
    void MinMaxMean(const double*Data,int cnt,double*Max = NULL, double*Min = NULL, double*Mean = NULL)
    
    {
    	int i, Datamin = Data[0], Datamax = 0;// Data[0];
    	double sum = 0.0;
    
    	for (i = 0; i < cnt; i++)
    	{
    		if (Data[i] > Datamax || i == 0)
    			Datamax = Data[i];
    		if (Data[i] < Datamin)
    			Datamin = Data[i];
    
    		sum += Data[i];
    
    	}
    	if (Max != 0)
    	*Max = Datamax;
    	if (Min != 0)
    	*Min = Datamin;
    	if (Mean != 0)
    	*Mean = sum / cnt;
    
    	//if (Max!= 0)
    	//{
    	//	for (i = 1; i < cnt; ++i)
    	//	{
    	//		if (Data[i] > Data[iMax])
    	//			iMax = i;
    	//	}
    	//	*Max = Data[iMax];
    	//}
    	//if (Min != 0)
    	//{
    	//	for (i = 1; i < cnt; ++i)
    	//	{
    	//		if (Data[i] < Data[iMin])
    	//			iMin = i;
    	//	}
    	//	*Min = Data[iMin];
    	//}
    	//if (Mean != 0)
    	//{
    	//	for (i = 0; i < cnt; ++i)
    	//	{
    	//		sum += Data[i];
    	//		//if (sum / cnt);
    
    	//	}
    	//	*Mean = sum / cnt;
    
    	//}
    }
    int main()
    {
    	double arr[MAX];
    	int i,cnt = 0;
    	int*Max = NULL;
    	int*Min = NULL;
    	int*Mean = NULL;
    
    	cout << "Geben Sie bis zu 10 Zahlen ein\n"
    		<< "(Abbruch mit Buchstaben):\n" << endl;
    
    	for (i = 0; i < MAX && cin >> arr[i]; ++i);
    
    	cnt = i;
    	double Min, Max, Mean;
    	MinMaxMean(arr,cnt,&Max, &Min);
    	MinMaxMean(arr,cnt, NULL, &Min, NULL);
    	MinMaxMean(arr,cnt, NULL, NULL, &Mean);
    
    	cout << "\nAnzahl: " << cnt << endl;
    	if (cnt > 0)
    	{
    		cout << "Kleinster Wert: " << Min << endl
    			<< "\nGroesster Wert: " << Max << endl
    			<< "\nDurschnitt: " << Mean << endl
    			<< endl;
    	} 
    	system("PAUSE");
    	return 0;
    }
    


  • Wie lautet denn die konkrete Formulierung in deinen Hausaufgaben?



  • Kopieren Sie das Programm aus Aufgabe 1 Kapitel 7. Nutzen Sie in der Schleife die Pointer-Arithmetik.



  • Arithmetik: +

    Überlege dir, wie du das

    Data[i]
    

    mit + umschreiben kannst.



  • Hätte ich in irgendeiner Weise Ahnung, hätte ich gar nicht erst gefragt also bitte hilf mir.
    Ich weiß mit deinem Tipp leider nichts anzufangen.


  • Mod

    X[Y] ist das gleiche wie *(X+Y) .

    Wahrscheinlich ist aber gemeint, gar keine externe Zählvariable zu benutzen, sondern den Pointer direkt zu inkrementieren.

    Außerdem solltest du den Lehrer/Kurs/Buch wechseln. Der Code hat mit C++ ungefähr so viel zu tun wie C. Also so gut wie gar nichts, außer dass es technisch gesehen ausführbares C++ ist.



  • habs geschafft danke


Anmelden zum Antworten