Aufrufparameter



  • Anstelle des Einlesens der Werte sollen diese als Aufrufparameter übergeben werden ?
    Komme da mit meinen YT-Tutorials nicht weiter ...

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    #define MAX 10
    void MinMaxMean(double*Data, int cnt, double**Max = NULL, double**Min = NULL, double*Mean = NULL)
    
    {
    	//int Datamin = Data[0], 
    	double sum = 0.0;
    	double*var = Data;
    	double *Datamax = Data;
    	double *Datamin = Data;
    	/*double*var2 = Max;
    	double*var3 = Min;
    	double*var4 = Mean;*/
    
    	for (var = Data; var < cnt + Data; var++)
    	{
    		if (*var > *Datamax)                    //Data[i]
    			Datamax = var;
    		if (*var < *Datamin)								//Data[i]
    			Datamin = var;
    
    		sum += *var;
    
    	}
    	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(int argc, char **argv)
    {
    	double arr[MAX];
    	int i, cnt = 0;
    
    	cout << "Geben Sie bis zu 10 Zahlen ein\n"
    		<< "(Abbruch mit Buchstaben):\n" << endl;
    
    	for (i = 0; i < MAX && cin >> arr[i]; ++i);    //arr[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;  // vorher cnt 
    	if (cnt > 0)
    	{
    		cout <<"Kleinster Wert: " << *Min << endl
    			<< "\nGroesster Wert: " << *Max << endl
    			<< "\nDurschnitt: " << Mean << endl
    			<< endl;
    	}
    	system("PAUSE");
    	return 0;
    }
    

  • Mod

    int main(int argc, char **argv)
    

    Was machen denn dir beiden Parameter der main-Funktion deiner Meinung nach? Du hast sie da hin geschrieben, also weißt du doch hoffentlich auch, wozu sie da sind?

    YT-Tutorials

    Das erklärt einiges. Brich das Tutorial ab! Vergiss alles, was du dort gelernt hast, hol dir ein vernünftiges Buch (siehe Tipps hier im Forum), und fang noch einmal von vorne an. Was du bisher gelernt hast, ist schlimmster Mist, den du dir mühsam wirst abgewöhnen müssen. Je früher du damit anfängst, desto besser für dich.



  • Ich denke mal Sie müssen irgendetwas in meiner main() ersetzen nur was ist die Frage.





  • Der einfachste Fall wäre erstmal:

    int main(int argc, char **argv)
    {
        for(int i = 0;i < argc; ++i)
          cout << i << " " << argv[i] << "\n";
    
        return 0;
    }
    

    Dazu musst du aber das Programm mit Paramtern aufrufen.
    Am einfachsten geht das in der Konsole.

    Man kann die Paramter auch in der IDE einstellen. Wie das geht hängt aber von der IDE ab.



  • Das Programm will trotzdem nicht funktionieren.



  • craki schrieb:

    Das Programm will trotzdem nicht funktionieren.

    Verdammt gute Fehlerbeschreibung. 👍

    Das ist auch kein komplettes Programm.



  • Helft mir mal bitte.


  • Mod



  • Wie kann ich meine main() so verändern,dass die Aufrufparameter benutzt werden?

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


  • Helf mir mal bitte [quote="SeppJ"] wäre nett 👍


  • Mod

    Ich glaube nicht, dass du hier noch freiwillige Helfer für deine Sache begeistern wirst. Für wie dumm hältst du uns? Ich werde es jedenfalls ganz sicher nicht tun.



  • Was passiert denn gerade in deinem Programm (wie sieht die Ausgabe auf)?

    Bitte per Copy&Paste und mit Code-Tags hier posten. Kein Bild!


Anmelden zum Antworten