Array aufsteigend oder absteigend oder gemischte Reihenfolge?



  • Wie finde ich bei einem Array mit 10 Felder heraus ob es auf oder absteigend sortiert ist?
    lg



  • Indem Du den Anfang mit dem Ende vergleichst.



  • Tachyon schrieb:

    Indem Du den Anfang mit dem Ende vergleichst.

    und wie ist es sortiert, wenn beide gleich sind?
    🙂



  • ~fricky schrieb:

    Tachyon schrieb:

    Indem Du den Anfang mit dem Ende vergleichst.

    und wie ist es sortiert, wenn beide gleich sind?
    🙂

    Das lässt sich wohl schwerlich herausfinden.



  • Kommt darauf an, von welchem Typ dein Array ist.
    int, float, double kannst du einfach miteinander vergleichen, bei Texten kommt es darauf an, wie du auf- und absteigend definierst, ebenso bei eignen Objekten.



  • es gibt im c gar keine objekte mensch 😮



  • der-ulf schrieb:

    es gibt im c gar keine objekte mensch

    gibt's wohl. exemplare von primitiven typen und structs sind z.b. objekte.
    🙂



  • ne das heißt dann anders 💡



  • ~fricky schrieb:

    der-ulf schrieb:

    es gibt im c gar keine objekte mensch

    gibt's wohl. exemplare von primitiven typen und structs sind z.b. objekte.
    🙂

    Alle Instanzen von irgendwelchen Typen sind Objekte.



  • ascda schrieb:

    ne das heißt dann anders

    und wie?
    🙂



  • hm das müsste ich jetzt im c standard 80.48 revision 294.d2r2008 oder so nchgucken, aber da frag mal lieber einen der üblichen schlaumeier 🕶



  • Hallo,

    3.15 Object

    [#1] A region of data storage in the execution environment,
    the contents of which can represent values. Except for
    bit-fields, objects are composed of contiguous sequences of
    one or more bytes, the number, order, and encoding of which
    are either explicitly specified or implementation-defined.
    When referenced, an object may be interpreted as having a
    particular type; see 6.2.2.1.

    Den Schlaumeier-Titel gebe ich allerdings gerne an andere weiter... 😉

    MfG,

    Probe-Nutzer



  • Ja folgendes hab jetzt a bisserl herum programmiert:
    Sieht so aus:

    #include <stdio.h>
    #include <conio.h>
    
    void main()
    {
    	int Feld[5],i;
    	int Absteigend=0,Aufsteigend=0;
    
    	for(i=0;i<5;i++)
    	{
    
    		printf("Wert:");
    		scanf("%d",&Feld[i]);
    	}
    
    	for(i=0;i<5;i++)
    	{
    		if(Feld[i]<=Feld[i+1])
    		{
    			Aufsteigend++;
    
    		}
    		 if(Feld[i]>=Feld[i+1])
    		{
    			Absteigend++;
    
    		}
    	printf("Auf:%d\n",Aufsteigend);	
    	printf("Ab:%d\n",Absteigend);
    	}
    
    	if(Aufsteigend==5)
    	{
    printf("Aufsteigend sortiert");
    	}
    	else if(Absteigend==4)
    	{
    		printf("Absteigend sortiert");
    	}
    	else
    	{
    		printf("Gemischte Reihenfolge");
    	}
    
    	fflush(stdin);
    		getchar();
    }
    

    Aber da gibts ein kleines Probelm:
    Wenn ich 1,2,3,4,5 eingib gibt er mir aus aufsteigend od. 1,1,2,3,4...etc.
    Das passt so weit aber wenn ich 5,5,4,3,2 eingib oder so was dergleichen zählt er mir 1 xAufsteigende und 4 Absteigend wieso?Ich versteh generell die Vedingung ==4, ==5 nicht.da passt was nicht!

    Sorry hät gleich den Code reinstellen sollen! 😞
    lg Stefanos



  • for(i=0;i<5;i++) 
        { 
            if(Feld[i]<=Feld[i+1]) 
            { 
                Aufsteigend++; 
    
            } 
             if(Feld[i]>=Feld[i+1]) 
            { 
                Absteigend++; 
    
            }
    

    Der Teil ist bedenklich, da du hier einen Vergleich Feld[4] mit Feld[5] durchführst, und das obwohl du nur ein Array mit 5 Feldern deklariert hast (0 bis 4).



  • Stefanos schrieb:

    Ja folgendes hab jetzt a bisserl herum programmiert:
    Sieht so aus:

    #include <stdio.h>
    #include <conio.h>
    
    void main()
    {
    	int Feld[5],i;
    	int Absteigend=0,Aufsteigend=0;
    
    	for(i=0;i<5;i++)
    	{
    
    		printf("Wert:");
    		scanf("%d",&Feld[i]);
    	}
    
    	for(i=0;i<5;i++)
    	{
    		if(Feld[i]<=Feld[i+1])
    		{
    			Aufsteigend++;
    		
    		}
    		 if(Feld[i]>=Feld[i+1])
    		{
    			Absteigend++;
    			
    		}
    	printf("Auf:%d\n",Aufsteigend);	
    	printf("Ab:%d\n",Absteigend);
    	}
    
    	if(Aufsteigend==5)
    	{
    printf("Aufsteigend sortiert");
    	}
    	else if(Absteigend==4)
    	{
    		printf("Absteigend sortiert");
    	}
    	else
    	{
    		printf("Gemischte Reihenfolge");
    	}
    
    	
    	
    
    	
    		
    	
    
    	
    
    	
    	fflush(stdin);
    		getchar();
    }
    

    Aber da gibts ein kleines Probelm:
    Wenn ich 1,2,3,4,5 eingib gibt er mir aus aufsteigend od. 1,1,2,3,4...etc.
    Das passt so weit aber wenn ich 5,5,4,3,2 eingib oder so was dergleichen zählt er mir 1 xAufsteigende und 4 Absteigend wieso?Ich versteh generell die Vedingung ==4, ==5 nicht.da passt was nicht!

    Sorry hät gleich den Code reinstellen sollen! 😞
    lg Stefanos

    Wieso verstehst du eigentlich dein selbst programmiertes nicht ???



  • Wer sortiert Dein Array eigentlich? Ich meine, wo kommt das sortierte Array her?



  • Derzeit gibt er es noch per Hand ein, ist generell aber doch Jacke wie Hose, oder ?

    for(i=0;i<5;i++)
        {
    
            printf("Wert:");
            scanf("%d",&Feld[i]);
        }
    


  • Nein, ist es nicht. Wenn er später eh vorher sortiert, müsste er es nicht mehr prüfen. Anfänger kommen trotzdem manchmal auf komische Ideen...



  • @Tachyon Vielleicht soll anhand dieser Zeilen ja gerade entschieden werden, ob ein Sortieralgorithmus eingesetzt werden soll. Außerdem schadet ein wenig Programmierpraxis - auch wenn sie unnötig ist - dem Lernenden nicht.

    @Stefanos

    fflush(stdin);
    

    Das ist kein ANSI C, siehe (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.html)



  • Korhil schrieb:

    @Tachyon Vielleicht soll anhand dieser Zeilen ja gerade entschieden werden, ob ein Sortieralgorithmus eingesetzt werden soll. Außerdem schadet ein wenig Programmierpraxis - auch wenn sie unnötig ist - dem Lernenden nicht.

    Auch wieder war-

    Korhil schrieb:

    @Stefanos

    fflush(stdin);
    

    Das ist kein ANSI C, siehe (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.html)

    Klar ist das ANSI C. Nur das Verhalten ist undefiniert.


Anmelden zum Antworten