Compilierfehler im programm, wer kann helfen???



  • ///////////////////////////////////////////////////////////////////
    //	Onoma	:	jklhi hjkk								 //
    //	A.M.	:	018200200179									 //
    //																 //
    //	Skopos	:	Ferni thn taxi sto xaos enos sunolou ari8mon	 //									 //
    //	H\nia	:	28.12.2003										 //
    //																 //
    ///////////////////////////////////////////////////////////////////
    
    #include<stdio.h>
    
    //
    //Dilosh sunartisewn
    //
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter);
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter);
    int Max1(int *Ar1,int *Ar2,int *IfCounter);
    int Max0(int *Ar1,int *IfCounter);
    void Swap(int *Num1,int *Num2);	//Skopos alagi duon Metablhton
    //
    //
    
    //Kuria sunarthsh
    int main(void)
    {
    //Dhlosh metablhton
    	int a;				//Protos Ari8mos
    	int b;				//Deuteros Ari8mos
    	int c;				//Tritos Ari8mos
    	int d;				//Tetartos arithmos
    	int Max;			//Metalhth
    	int SwapCounter;	//Metriths ton Alagon
    	int IfCounter;		//Metriths ton sungrisewn
    //
    	a=0;
    	b=0;
    	c=0;
    	d=0;
    	Max=0;
    	SwapCounter=0;
    	IfCounter=0;
    
    			//Kurio programma
    
    //Eisagwgh dedomenon apo to plhktrologio
    	printf("Dwse 4 arithmous:\n");
    	scanf("%d %d %d %d", &a, &b, &c, &d);
    
    //Psaxnei kai ektiponh to megalhtero apo tous tesseris ari8mous
    	Max=Max3(&a, &b, &c, &d, &IfCounter);
    	printf("\n\b\t%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponh to megalhtero apo tous hpolipous treis ari8mous
    	Max=Max2(&b, &c, &d, &IfCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponei to megalhtero apo tous ypolipous duo api8mous
    	Max=Max1(&c, &d, &IfCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponi to megalhtero apo tous ena ari8mous
    	Max=Max0(&d, &IfCounter);
    	printf("%d\n",Max);
    	Max=0;
    
    	return 0;
    }
    //-----------------------------------------------------------------\\
    ////////////////////////Sunarthshseis\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    //-----------------------------------------------------------------\\
    
    /////////////////////////////////////////////////////////////////////
    //Syngrienei tessereis arithmous kai bgazei to megalhtero		   //
    /////////////////////////////////////////////////////////////////////
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter)
    {
    	int TempMax;	//Megalhteros arithmos mesa sthn sunarthsh
    //
    	TempMax=0;
    
    	TempMax=Max2(*Ar1,*Ar2,*Ar3,*IfCounter);
    	TempMax=Max1(*TempMax,*Ar3,*IfCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //Shngreinh treis ari8mous kai bgazei to megalhtero                //
    /////////////////////////////////////////////////////////////////////
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter)
    {
    //Dhlosh Metablhton
    	int TempMax;	//Megaliteros arithmos mesa sthn sunarthsh.
    //
    	TempMax=0;
    
    	TempMax=Max1(*Ar1,*Ar2,*IfCounter);
    	TempMax=Max1(TempMax,*Ar3,*IfCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Sungrinei duo ari8mous kaitous kattasei sosta, se afthn thn	   //
    //  sunarthsh stirizontai olles oi alles						   //
    /////////////////////////////////////////////////////////////////////
    int Max1(int *Ar1,int *Ar2,int *IfCounter)
    {
    	*IfCounter+=1;
    	if(!(*Ar1<*Ar2))
    	{
    		Swap(&Ar1,&Ar2,&SwapCounter);
    	}
    	return 0;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Den kani tipota aplos dinei piso thn metablhth, apofasisa na   //
    //	na dimiourgiso authn thn sunarthsh gia thn oloklhrosh ths domhs//
    /////////////////////////////////////////////////////////////////////
    int Max0(int *Ar1,int *IfCounter)
    {
    	//Kuris sunarthsh
    	return *Ar1;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Skopos ths sunartiseis alagh ton duo metablhton pou usagonte se//
    //	se afthn thn sunarthsh										   //
    /////////////////////////////////////////////////////////////////////
    void Swap(int *Num1,int *Num2,int *SwapCounter)
    {
    
    //Dhlosh metablhton
    	int Temp;	//Prosorinh metablhth
    //
    	Temp=0;
    
    		//Kurio programma
    	Temp  = *Num1;
    	*Num1 = *Num2;
    	*Num2 = Temp;
    	*SwapCounter= *SwapCounter+1;
    }
    

    es komen 2 errors und 30 warnings aber wiso ich finde die fehler nicht :xmas2:



  • Sind deine Kommentare in Latein?



  • Master_Max schrieb:

    Sind deine Kommentare in Latein?

    ich glaube, die sind in griechisch gehalten. witzig 😃



  • Wie wäre es gütigerweise mit den Fehlermeldungen und den Warnings?!



  • dEUs schrieb:

    Wie wäre es gütigerweise mit den Fehlermeldungen und den Warnings?!

    Genau?
    Was ist das für 'ne Sprache da oben in den Kommentaren???????????



  • IIRC Griechisch.



  • Ja das ist griechisch ich kann leider die vehler nicht schreiben, konnt ihr nicht ausnachmsweise das selber kompilieren sind 45 warnings typ:

    function' : 'int *' differs in levels of indirection from 'int ** '

    Ich habe alle errors ausgebugelt, aber die warnings konn ich nicht beheben kann mir einer mall nur sagen wir mal die ersten 4-5 fehler korigiern da alle fehler kleich sind.

    Nun hier das neue korigierte programm.

    #include<stdio.h>
    
    //
    //Dilosh sunartisewn
    //
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int SwapCounter);
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int SwapCounter);
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int SwapCounter);
    int Max0(int *Ar1,int *IfCounter, int SwapCounter);
    void Swap(int *Num1,int *Num2,int *SwapCounter);	//Skopos alagi duon Metablhton
    //
    //
    
    //Kuria sunarthsh
    int main(void)
    {
    //Dhlosh metablhton
    	int a;				//Protos Ari8mos
    	int b;				//Deuteros Ari8mos
    	int c;				//Tritos Ari8mos
    	int d;				//Tetartos arithmos
    	int Max;			//Metalhth
    	int SwapCounter;	//Metriths ton Alagon
    	int IfCounter;		//Metriths ton sungrisewn
    //
    	a=0;
    	b=0;
    	c=0;
    	d=0;
    	Max=0;
    	SwapCounter=0;
    	IfCounter=0;
    
    			//Kurio programma
    
    //Eisagwgh dedomenon apo to plhktrologio
    	printf("Dwse 4 arithmous:\n");
    	scanf("%d %d %d %d", &a, &b, &c, &d);
    
    //Psaxnei kai ektiponh to megalhtero apo tous tesseris ari8mous
    	Max=Max3(&a, &b, &c, &d, &IfCounter, &SwapCounter);
    	printf("\n\b\t%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponh to megalhtero apo tous hpolipous treis ari8mous
    	Max=Max2(&b, &c, &d, &IfCounter, &SwapCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponei to megalhtero apo tous ypolipous duo api8mous
    	Max=Max1(&c, &d, &IfCounter, &SwapCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponi to megalhtero apo tous ena ari8mous
    	Max=Max0(&d, &IfCounter, &SwapCounter);
    	printf("%d\n",Max);
    	Max=0;
    
    	return 0;
    }
    //-----------------------------------------------------------------\\
    ////////////////////////Sunarthshseis\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    //-----------------------------------------------------------------\\
    
    /////////////////////////////////////////////////////////////////////
    //Syngrienei tessereis arithmous kai bgazei to megalhtero		   //
    /////////////////////////////////////////////////////////////////////
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter)
    {
    //Dhlosh Metablhton
    	int TempMax;	//Megalhteros arithmos mesa sthn sunarthsh
    //
    	TempMax=0;
    
    			//Kurio Programma
    	TempMax=Max2(&Ar1, &Ar2, &Ar3, &IfCounter, &SwapCounter);
    	TempMax=Max1(&TempMax, &Ar3, &IfCounter, &SwapCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //Shngreinh treis ari8mous kai bgazei to megalhtero                //
    /////////////////////////////////////////////////////////////////////
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter)
    {
    //Dhlosh Metablhton
    	int TempMax;	//Megaliteros arithmos mesa sthn sunarthsh.
    	//int PusherAr1;
    //
    	TempMax=0;
    
    	TempMax=Max1(&Ar1, &Ar2, &IfCounter, &SwapCounter);
    	TempMax=Max1(&TempMax, &Ar3, &IfCounter, &SwapCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Sungrinei duo ari8mous kaitous kattasei sosta, se afthn thn	   //
    //  sunarthsh stirizontai olles oi alles						   //
    /////////////////////////////////////////////////////////////////////
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int SwapCounter)
    {
    	*IfCounter+=1;
    	if(!(*Ar1<*Ar2))
    	{
    		Swap(&Ar1, &Ar2, &SwapCounter);
    	}
    	return 0;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Den kani tipota aplos dinei piso thn metablhth, apofasisa na   //
    //	na dimiourgiso authn thn sunarthsh gia thn oloklhrosh ths domhs//
    /////////////////////////////////////////////////////////////////////
    int Max0(int *Ar1,int *IfCounter,int *SwapCounter)
    {
    	//Kuris sunarthsh
    	return *Ar1;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Skopos ths sunartiseis alagh ton duo metablhton pou usagonte se//
    //	se afthn thn sunarthsh										   //
    /////////////////////////////////////////////////////////////////////
    void Swap(int *Num1,int *Num2,int *SwapCounter)
    {
    
    //Dhlosh metablhton
    	int Temp;	//Prosorinh metablhth
    //
    	Temp=0;
    
    		//Kurio programma
    	Temp  = *Num1;
    	*Num1 = *Num2;
    	*Num2 = Temp;
    	*SwapCounter= *SwapCounter+1;
    }
    

    Was heist das wenn ich dan int** mache kommt der obige fehler aber mit int ***.



  • wenn du
    void foo(int* p);
    hast, und nun diesen Zeiger an die funktion foo2(int* p) weitergeben willst, musst du
    foo(p);
    schreiben, denn p ist ja bereits ein Zeiger. Somit ist &p ein Zeiger auf p.
    Und wenn p ein int* ist, dann ist &p ein int**

    alles klar? wenn nicht -> nachfragen, oder http://www.c-plusplus.net/forum/viewtopic.php?p=425082 lesen - da habe ich das gerade erklärt 🙂



  • Überall wo du einen * vor einem Parameter stehen hast, kannst du dir das & bei den Aufrufen in der Funktion sparen. Du hast ja im Zeiger bereits die Adresse der Variable stehen 😉

    Ich geb dir mit Max1 ein Beispiel:

    So hast es du und so ist es falsch!

    int Max1(int *Ar1,int *Ar2,int *IfCounter, int SwapCounter) 
    { 
        *IfCounter+=1; 
        if(!(*Ar1<*Ar2)) 
        { 
            Swap(&Ar1, &Ar2, &SwapCounter); 
        } 
        return 0; 
    }
    

    So ist es richtig!

    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter) 
    { 
        *IfCounter++; //einfacher als *IfCounter+=1;
        if(!(*Ar1<*Ar2)) 
        { 
            Swap(Ar1, Ar2, SwapCounter); 
            //Keine & Adressierung, sonst hast du einen Zeiger auf einen Zeiger!
        } 
        return 0; 
    }
    

    Mir ist grad noch was aufgefallen. Du hast bei der Deklaration der Funktionen beim letzten Parameter "SwapCounter" keinen * angegeben bei der Definition allerdings schon, das gibt auch Warnungen, wenn nich sogar Fehlermeldungen.

    Ich hoffe ich konnte helfen...

    Edit: Verflixt Shade war schneller 😃



  • Nun noch 25 warnings Danke leute ich schulde euch echt was ohne euch were ich wirklich aufgeflogen.

    Nun die anderen fehler sind

    'function' : 'int ' differs in levels of indirection from 'int *'
    und
    warning C4024: 'Max2' : different types for formal and actual parameter 5

    nun jede funktion hat diese fehler.

    Also das mit den zeiger, einmal als zeiger bei einer funktion deklart gilt dieser zeiger bei allen anderen funktionen, wenn ich sie weidergebe.

    Und wiso wen ich z.b.

    funk1(*zahl1)
    {
    funk2(zahl1)
    }

    wenn ich das habe bekommt doch die funktion 2 die zahl1 als adrese nicht den werd stimmt das???

    Nun hier noch mein fehlerhaftes programm.

    #include<stdio.h>
    
    //
    //Dilosh sunartisewn
    //
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int SwapCounter);
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int SwapCounter);
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int SwapCounter);
    int Max0(int *Ar1,int *IfCounter, int SwapCounter);
    void Swap(int *Num1,int *Num2,int *SwapCounter);	//Skopos alagi duon Metablhton
    //
    //
    
    //Kuria sunarthsh
    int main(void)
    {
    //Dhlosh metablhton
    	int a;				//Protos Ari8mos
    	int b;				//Deuteros Ari8mos
    	int c;				//Tritos Ari8mos
    	int d;				//Tetartos arithmos
    	int Max;			//Metalhth
    	int SwapCounter;	//Metriths ton Alagon
    	int IfCounter;		//Metriths ton sungrisewn
    //
    	a=0;
    	b=0;
    	c=0;
    	d=0;
    	Max=0;
    	SwapCounter=0;
    	IfCounter=0;
    
    			//Kurio programma
    
    //Eisagwgh dedomenon apo to plhktrologio
    	printf("Dwse 4 arithmous:\n");
    	scanf("%d %d %d %d", &a, &b, &c, &d);
    
    //Psaxnei kai ektiponh to megalhtero apo tous tesseris ari8mous
    	Max=Max3(&a, &b, &c, &d, &IfCounter, &SwapCounter);
    	printf("\n\b\t%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponh to megalhtero apo tous hpolipous treis ari8mous
    	Max=Max2(&b, &c, &d, &IfCounter, &SwapCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponei to megalhtero apo tous ypolipous duo api8mous
    	Max=Max1(&c, &d, &IfCounter, &SwapCounter);
    	printf("%d<",Max);
    	Max=0;
    
    //psaxnei kai ektiponi to megalhtero apo tous ena ari8mous
    	Max=Max0(&d, &IfCounter, &SwapCounter);
    	printf("%d\n",Max);
    	Max=0;
    
    	return 0;
    }
    //-----------------------------------------------------------------\\
    ////////////////////////Sunarthshseis\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    //-----------------------------------------------------------------\\
    
    /////////////////////////////////////////////////////////////////////
    //Syngrienei tessereis arithmous kai bgazei to megalhtero		   //
    /////////////////////////////////////////////////////////////////////
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter)
    {
    //Dhlosh Metablhton
    	int TempMax;	//Megalhteros arithmos mesa sthn sunarthsh
    //
    	//TempMax=0;
    
    			//Kurio Programma
    	TempMax=Max2(Ar1, Ar2, Ar3, IfCounter, SwapCounter);
    	TempMax=Max1(TempMax, Ar3, IfCounter, SwapCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //Shngreinh treis ari8mous kai bgazei to megalhtero                //
    /////////////////////////////////////////////////////////////////////
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter)
    {
    //Dhlosh Metablhton
    	int TempMax;	//Megaliteros arithmos mesa sthn sunarthsh.
    	//int PusherAr1;
    //
    	//TempMax=0;
    
    	TempMax=Max1(Ar1, Ar2, IfCounter, SwapCounter);
    	TempMax=Max1(TempMax, Ar3, IfCounter, SwapCounter);
    
    	return TempMax;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Sungrinei duo ari8mous kaitous kattasei sosta, se afthn thn	   //
    //  sunarthsh stirizontai olles oi alles						   //
    /////////////////////////////////////////////////////////////////////
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter)
    {
    	*IfCounter+=1;
    	if(!(*Ar1<*Ar2))
    	{
    		Swap(Ar1, Ar2, SwapCounter);
    	}
    	return 0;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Den kani tipota aplos dinei piso thn metablhth, apofasisa na   //
    //	na dimiourgiso authn thn sunarthsh gia thn oloklhrosh ths domhs//
    /////////////////////////////////////////////////////////////////////
    int Max0(int *Ar1,int *IfCounter,int *SwapCounter)
    {
    	//Kuris sunarthsh
    	return *Ar1;
    }
    
    /////////////////////////////////////////////////////////////////////
    //	Skopos ths sunartiseis alagh ton duo metablhton pou usagonte se//
    //	se afthn thn sunarthsh										   //
    /////////////////////////////////////////////////////////////////////
    void Swap(int *Num1,int *Num2,int *SwapCounter)
    {
    
    //Dhlosh metablhton
    	int Temp;	//Prosorinh metablhth
    //
    	Temp=0;
    
    		//Kurio programma
    	Temp  = *Num1;
    	*Num1 = *Num2;
    	*Num2 = Temp;
    	*SwapCounter= *SwapCounter+1;
    }
    

    [edit Shade]Code-Tags[/edit]



  • Nun noch 25 warnings Danke leute ich schulde euch echt was ohne euch were ich wirklich aufgeflogen

    Ist das jetzt Ironie oder nen Schreibfehler?



  • Ich zitiere mich jetzt mal selber, vielleicht hilfts ja.

    AJ schrieb:

    ...

    Mir ist grad noch was aufgefallen. Du hast bei der Deklaration der Funktionen beim letzten Parameter "SwapCounter" keinen * angegeben bei der Definition allerdings schon, das gibt auch Warnungen, wenn nich sogar Fehlermeldungen.

    ...

    Dieser Fehler ist immer noch in deinem Programm zu finden. Vergleiche mal die Funktionsköpfe am Anfang deines Quellcodes mit den Funktionsköpfen, die du dann bei den ausprogrammierten Funktionen hast. Wenn da ein Unterschied ist, dann meckert der Compiler. Alles klar? 😉



  • #include<stdio.h> 
    
    // 
    //Dilosh sunartisewn 
    // 
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter); 
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter); 
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter); 
    int Max0(int *Ar1,int *IfCounter, int *SwapCounter); 
    void Swap(int *Num1,int *Num2,int *SwapCounter);    //Skopos alagi duon Metablhton 
    // 
    // 
    
    //Kuria sunarthsh 
    int main(void) 
    { 
    //Dhlosh metablhton 
        int a;                //Protos Ari8mos 
        int b;                //Deuteros Ari8mos 
        int c;                //Tritos Ari8mos 
        int d;                //Tetartos arithmos 
        int Max;            //Metalhth 
        int SwapCounter;    //Metriths ton Alagon 
        int IfCounter;        //Metriths ton sungrisewn 
    // 
        a=0; 
        b=0; 
        c=0; 
        d=0; 
        Max=0; 
        SwapCounter=0; 
        IfCounter=0; 
    
                //Kurio programma 
    
    //Eisagwgh dedomenon apo to plhktrologio 
        printf("Dwse 4 arithmous:\n"); 
        scanf("%d %d %d %d", &a, &b, &c, &d); 
    
    //Psaxnei kai ektiponh to megalhtero apo tous tesseris ari8mous 
        Max=Max3(&a, &b, &c, &d, &IfCounter, &SwapCounter); 
        printf("\n\b\t%d<",Max); 
        Max=0; 
    
    //psaxnei kai ektiponh to megalhtero apo tous hpolipous treis ari8mous 
        Max=Max2(&b, &c, &d, &IfCounter, &SwapCounter); 
        printf("%d<",Max); 
        Max=0; 
    
    //psaxnei kai ektiponei to megalhtero apo tous ypolipous duo api8mous 
        Max=Max1(&c, &d, &IfCounter, &SwapCounter); 
        printf("%d<",Max); 
        Max=0; 
    
    //psaxnei kai ektiponi to megalhtero apo tous ena ari8mous 
        Max=Max0(&d, &IfCounter, &SwapCounter); 
        printf("%d\n",Max); 
        Max=0; 
    
        return 0; 
    } 
    //-----------------------------------------------------------------\\ 
    ////////////////////////Sunarthshseis\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 
    //-----------------------------------------------------------------\\ 
    
    ///////////////////////////////////////////////////////////////////// 
    //Syngrienei tessereis arithmous kai bgazei to megalhtero           // 
    ///////////////////////////////////////////////////////////////////// 
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter) 
    { 
    //Dhlosh Metablhton 
        int TempMax;    //Megalhteros arithmos mesa sthn sunarthsh 
    // 
        //TempMax=0; 
    
                //Kurio Programma 
        TempMax=Max2(Ar1, Ar2, Ar3, IfCounter, SwapCounter); 
        TempMax=Max1(&TempMax, Ar3, IfCounter, SwapCounter); 
    
        return TempMax; 
    } 
    
    ///////////////////////////////////////////////////////////////////// 
    //Shngreinh treis ari8mous kai bgazei to megalhtero                // 
    ///////////////////////////////////////////////////////////////////// 
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter) 
    { 
    //Dhlosh Metablhton 
        int TempMax;    //Megaliteros arithmos mesa sthn sunarthsh. 
        //int PusherAr1; 
    // 
        //TempMax=0; 
    
        TempMax=Max1(Ar1, Ar2, IfCounter, SwapCounter); 
        TempMax=Max1(&TempMax, Ar3, IfCounter, SwapCounter); 
    
        return TempMax; 
    } 
    
    ///////////////////////////////////////////////////////////////////// 
    //    Sungrinei duo ari8mous kaitous kattasei sosta, se afthn thn       // 
    //  sunarthsh stirizontai olles oi alles                           // 
    ///////////////////////////////////////////////////////////////////// 
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter) 
    { 
        *IfCounter+=1; 
        if(!(*Ar1<*Ar2)) 
        { 
            Swap(Ar1, Ar2, SwapCounter); 
        } 
        return 0; 
    } 
    
    ///////////////////////////////////////////////////////////////////// 
    //    Den kani tipota aplos dinei piso thn metablhth, apofasisa na   // 
    //    na dimiourgiso authn thn sunarthsh gia thn oloklhrosh ths domhs// 
    ///////////////////////////////////////////////////////////////////// 
    int Max0(int *Ar1,int *IfCounter,int *SwapCounter) 
    { 
        //Kuris sunarthsh 
        return *Ar1; 
    } 
    
    ///////////////////////////////////////////////////////////////////// 
    //    Skopos ths sunartiseis alagh ton duo metablhton pou usagonte se// 
    //    se afthn thn sunarthsh                                           // 
    ///////////////////////////////////////////////////////////////////// 
    void Swap(int *Num1,int *Num2,int *SwapCounter) 
    { 
    
    //Dhlosh metablhton 
        int Temp;    //Prosorinh metablhth 
    // 
        Temp=0; 
    
            //Kurio programma 
        Temp  = *Num1; 
        *Num1 = *Num2; 
        *Num2 = Temp; 
        *SwapCounter= *SwapCounter+1; 
    }
    

    So hat es keine Fehler mehr, du übergibst allerdings eine Adresse von einer
    lokalen Funktion (TempMax), ich würde dir raten diese byValue zu übergeben.



  • Leute, das programm ist zwar korigiert(danke dafür) aber das programm macht nicht das was ich will wiso???? Ich habe genau das gemacht was ich gelernt habe und zwar:
    Schritte 1)

    Zuerst programm verstehen. "Mache ein programm das 4 zahlen miteinander vergleicht und sie dan in der reiche nach ausgeben. Dazu noch 2 ausgaben für:

    1. alle vertauschugen die das programm macht
    2. alle vergleichungen die das programm macht".

    Also habe ich mir gedacht als erstes von den 4 zahlen die groste rausfinden und ausgeben. Danha das selbe für die 3 übrichgrblibenen. Dan für die letzten 2. Und dan die lezte ausgeben.

    Dafur brauche ich mindesten 6 int Variablen

    Schritt 2)
    Überlegungen und Domisches Logisches Diagramm.

    Nach lange überlegungen habe ich mich entschlosen nicht die Methode viehle aufanadervolgenden if einweisungen zu benutzen da ich sonst 4! vergeichungen machen muss. Das richtige ist von der anzahl der zahlen einfach die goste zu suchen und sie zu auszugeben. Also:

    ________________________________________________________
    Eingabe der Variablen
    --------------------------------------------------------
    max=max4(a,b,c,d)
    --------------------------------------------------------
    ausgabe max
    --------------------------------------------------------
    max=max3(b,c,d)
    --------------------------------------------------------
    ausgabe max
    --------------------------------------------------------
    max=max2(c,d)
    --------------------------------------------------------
    ausgabe max
    --------------------------------------------------------
    max=max1(d)
    --------------------------------------------------------
    ausgabe max
    --------------------------------------------------------
    ausgabe aller vertauschungen und vergleichungen
    --------------------------------------------------------

    Schritt 3)
    Lösung der Problemme in programm(Übersetzt)

    Das einzige problemm ist die vertauchung zwischen 2 variablem das löse ich wie volgt:

    temp=a
    a=b
    b=temp

    nun das ist die lösung

    Schritt 4:
    Programm

    #include<stdio.h>  
    
    //  
    //Deklaration der Funktionen
    //  
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter);  
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter);  
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter);  
    int Max0(int *Ar1,int *IfCounter, int *SwapCounter);  
    void Swap(int *Num1,int *Num2,int *SwapCounter);//Zieh vertauschung zwei variablen  
    //  
    //  
    
    //Haupt funktio
    int main(void)  
    {  
    //Deklaration der Variablenn  
        int a;                //Erste zahl  
        int b;                //zweite zahl  
        int c;                //dritte zahl  
        int d;                //4 zahl  
        int Max;            //groste zahl  
        int SwapCounter;    //Counter fur vertauschungen
        int IfCounter;        //Counter für vergleichungen
    //  
        a=0;  
        b=0;  
        c=0;  
        d=0;  
        Max=0;  
        SwapCounter=0;  
        IfCounter=0;  
    
                //Haupt programm
    
    //Eingaben der Daten  
        printf("gebe 4 zahlen ein:\n");  
        scanf("%d %d %d %d", &a, &b, &c, &d);  
    
    //sucht und gibt die groste zahl aus. von 4.   
        Max=Max3(&a, &b, &c, &d, &IfCounter, &SwapCounter);  
        printf("\n\b\t%d<",Max);  
        Max=0;  
    
    //sucht und gibt die groste zahl aus. von 3.  
        Max=Max2(&b, &c, &d, &IfCounter, &SwapCounter);  
        printf("%d<",Max);  
        Max=0;  
    
    //sucht und gibt die groste zahl aus. von 2  
        Max=Max1(&c, &d, &IfCounter, &SwapCounter);  
        printf("%d<",Max);  
        Max=0;  
    
    //sucht und gibt die groste zahl aus. von 1  
        Max=Max0(&d, &IfCounter, &SwapCounter);  
        printf("%d\n",Max);  
        Max=0;  
    
        return 0;  
    }  
    //-----------------------------------------------------------------\\  
    ////////////////////////Funktionen\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
    //-----------------------------------------------------------------\\  
    
    /////////////////////////////////////////////////////////////////////  
    //vergleicht 4 zahlen           //  
    /////////////////////////////////////////////////////////////////////  
    int Max3(int *Ar1,int *Ar2,int *Ar3,int *Ar4,int *IfCounter, int *SwapCounter)  
    {  
    // Deklaration der variablen 
        int TempMax;    //Groste zahl in der funkion  
    //  
        //TempMax=0;  
    
                //Hauptprogramm  
        TempMax=Max2(Ar1, Ar2, Ar3, IfCounter, SwapCounter);  
        TempMax=Max1(&TempMax, Ar3, IfCounter, SwapCounter);  
    
        return TempMax;  
    }  
    
    /////////////////////////////////////////////////////////////////////  
    //vergleicht 4 zahlen                //  
    /////////////////////////////////////////////////////////////////////  
    int Max2(int *Ar1,int *Ar2,int *Ar3,int *IfCounter, int *SwapCounter)  
    {  
    //Deklaration der Variablen  
        int TempMax;    //Groste zahl in der funktion.  
        //int PusherAr1;  
    //  
        //TempMax=0;  
    
        TempMax=Max1(Ar1, Ar2, IfCounter, SwapCounter);  
        TempMax=Max1(&TempMax, Ar3, IfCounter, SwapCounter);  
    
        return TempMax;  
    }  
    
    /*////////////////////////////////////////////////////////////////////  
    //Vergleicht 2 zahlen dies ist das herzstug //des //programmes                   //  
    /////////////////////////////////////////////////////////////////////*  
    int Max1(int *Ar1,int *Ar2,int *IfCounter, int *SwapCounter)  
    {  
        *IfCounter+=1;  
        if(!(*Ar1<*Ar2))  
        {  
            Swap(Ar1, Ar2, SwapCounter);  
        }  
        return 0;  
    }  
    
    /////////////////////////////////////////////////////////////////////  
    //    Diese Funktion macht nicht blos für das gesammt bild //  
    //    des programms//  
    /////////////////////////////////////////////////////////////////////  
    int Max0(int *Ar1,int *IfCounter,int *SwapCounter)  
    {  
        //haubt funktion  
        return *Ar1;  
    }  
    
    /////////////////////////////////////////////////////////////////////  
    //    Diese funktion vertausht 2 variablen //  
    /*/    !!!AHTUNG GLAUBE VEHLERQUELLE!!!                                           //*  
    /////////////////////////////////////////////////////////////////////  
    void Swap(int *Num1,int *Num2,int *SwapCounter)  
    {  
    
    //Deklaration der Variable  
        int Temp;    //temporere Variable   
    //  
        Temp=0;  
    
            //Hauptprogramm  
        Temp  = *Num1;  
        *Num1 = *Num2;  
        *Num2 = Temp;  
        *SwapCounter= *SwapCounter+1;  
    }
    

    Bin fur alles ofen ratschlege etc. offen. Ah ja wo ich fehler mache bitte makieren und etwas erkleren. Wo lehrne ich mehr über Algorithmen machen???Mir hatt man erzehlt wenn du diese schritte immer durchfurst ist es unmöglich fehler zu machen aber mir kommen laute 0 raus wiso???

    Nun bei solchen fehler wunschte ich mir ich hate nie etwas über computer in meinen leben gehört. Ich habe die TUTORIALS durchgelesen aber ich weiss nicht. Ich vertsehe diese funktionen immer noch nicht. Kommt varscheinlich von den komischen buch das ich gelesen habe. Das die funktionen nicht richtig erklert hat C++ in 24 studen(brauchte genau 33 stunden dafur) gutes buch aber funktionen 😡 . Wie habt ihr den c gelernt???. Kennt weiter wissensquellen uber funktionen (auf deutsch)????

    P.S. soory für rechtschreibfehler habe nur meinen 133 MHZ laptop da habe ich keinen platz (und resursen) fur office rechtschreibung 🙂 😡 😞



  • Man ich werde bald verukt ich zitze 2 tage (glaube ich) am pc habe 1 drukerpatrone entlernt und finde diesen fehler nicht

    kan ich diese i*=i*+1 problem so losen

    a=*i;
    a=a+1;
    *i=a;

    richtig aber wo ist der fehler ich bekomme imer als ausgabe

    0<0<0<(letze zahl)

    wiso???? 😞

    ICh hase programieren wiso entwikelt keiner ein programm das so funktionirt mit ganzen setzen z.b. drukle halo welt. Und der computer macht ein programm das hallo welt ausgibt das were irre 😃 . Düme frage weis jemad mit welchen pogramm man L.C.A.R.S. programmiert hat(OS von U.S.S. VOYger{star tre})???. Ahh ich verukt geworden mit diesen programm ich denke nur mühl. Ahh ich mache selbstgespreche also dan lase ich es lieber für heute mit c. sonst schaue ich bald so aus => :xmas2: .



  • Du gibst in der Max1 Funktion return 0; zurück. Ersetz das mal durch return *Ar1;. Ich blick allerdings auch nicht ganz da durch, ist alles schon irgendwie sehr umständlich.....

    Über Algorithmen kannst du übrigens hier was nachlesen:
    http://www.pronix.de/index.php?site=C/standard_C/c_programmierung_25



  • Nochmal mit

    i = i + 1; // hast du eine Variable, diese kannst du ohne Probleme in eine
    Rechenoperation mit einbinden

    mit i als Pointer d.h. du hast i vorher so definiert z.B.: " int *i; "

    *i //repräsentiert allerdings einen Wert nachdem du i als Pointer definiert
    // hast greifst du jetzt mit *i auf den Wert der an dieser Stelle bzw.
    // Adresse liegt zu

    Merke: Der *-Operator hat drei Bedeutungen:
    1.) Definition von Pointern
    2.) Zugriff auf Werte an einer Speicherstelle
    3.) Multiplikationsoperator

    *i = *i + 1; // das ist falsch, weil das für *i == 8 folgendes wäre:
    // 8 = 8 + 1 bzw. 8 = 9 d.h. das ist Murks einer Zahl
    // eine andere zuzuweisen

    Bitte um Korrektur falls Fehler

    P.S. Kauf dir ein Buch

    P.P.S. Entfalls du schlecht deutsch sprichst, da du aus dem Ausland kommst,
    sag das vorher und keiner hier wird dir Vorwürfe wegen deiner
    Rechtschreibung machen!



  • Duden schrieb:

    *i = *i + 1; // das ist falsch, weil das für *i == 8 folgendes wäre:
                 // 8 = 8 + 1 bzw. 8 = 9 d.h. das ist Murks einer Zahl
                 // eine andere zuzuweisen
    

    Bitte um Korrektur falls Fehler

    P.S. Kauf dir ein Buch

    P.P.S. Entfalls du schlecht deutsch sprichst, da du aus dem Ausland kommst,
    sag das vorher und keiner hier wird dir Vorwürfe wegen deiner
    Rechtschreibung machen!

    int i = 5;
    
    i = i + 1; // Geht nicht weil i == 5?
    

    Überleg noch mal, was du da geschrieben hast.



  • tobidope schrieb

    Duden schrieb:

    C/C++ Code:
    *i = *i + 1; // das geht ohne Probleme

    C/C++ Code:
    .........

    Vehler dürven pehalten wärden. 🙄

    Ja und...hab mich oben vertippt; oder was denkst du denn? :xmas1:



  • Ach ja bei der ersten Post hier:
    http://www.c-plusplus.net/forum/viewtopic.php?t=59807&start=0

    behauptete ich das Gegenteil, verbesserte mich dann aber falsch, das sollte gelöscht werden.


Anmelden zum Antworten