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 StefanosWieso 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.
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:
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.