Kleinste und Größte Zahl ermitteln
-
Hallo Leute, Ich bin es wieder.
Nochmals vielen vielen Dank für eure bisherigen Beiträge, langsam versteh ich immer mehr .
Ich habe aber natürlich wieder ein Problem.
Und zwar habe ich eine Datei die so ausschaut.11,32,9 98,12,45 11,21,31 100,987,1
Das ist natürlich eine BSP-Datei meine sind viel größer. Ich will nun aus jeder Spalte die jeweils kleinste und größte Zahl rausfinden. Und mit diesen Zahlen muss ich dan arbeiten.
Also hier wären es die zahlen11 & 100 für Spalte eins
12 & 987 für Spalte 2
1 & 45 für Spalte drei.
Wie soll ich das angehen.
-
-
also wirklich. ein bisschen eigeninitiative und verstand ist schon voraussetzung zum programmieren.
durch jede spalte loopen und gleichzeitig größtes und kleinstes element in jeweils einer variable halten.
und frag nicht, ob dir das mal jemand schreiben könnte. machs selber, sonst kannst du es nie.echt, dreist...
-
c.rackwitz schrieb:
also wirklich. ein bisschen eigeninitiative und verstand ist schon voraussetzung zum programmieren.
durch jede spalte loopen und gleichzeitig größtes und kleinstes element in jeweils einer variable halten.
und frag nicht, ob dir das mal jemand schreiben könnte. machs selber, sonst kannst du es nie.echt, dreist...
wenn du ein problem mit mir hast dann antworte einfach nicht! ok!
-
@sidt: ich hab dir da mal ein kleines Beispiel, jetzt überleg mal wie du das auf dein Problem anwenden kannst!
Das sucht jetzt nur die kleinste Zahl raus:#include <stdio.h> int main(int argc, char **argv) { int a [18]= { 3,4,3,7,7,4,3,4,8,6,7,4,3,4,5,3,2,5 }; //zu überprüfendes int-Array int x=0,y=0,z=0,kl=0; //Zähl-Variablen etc. for ( x=0;x<=17;x++) //Schleife zum duchlaufen des Arrays { z=0; for ( y=0;y<=17;y++) //Schleife zum duchlaufen des Arrays { if(a[x]<=a[y]) //wenn a[x] kleiner oder gleich a[y] z um eins erhöhen { z++; } } if(z==18) //wenn z gleich 18 dann aktuelles Integer aus a[x] an kl übergeben da kleinste Zahl! { kl=a[x]; } } printf("Kleinste:%i",kl); //Ausgabe der kleinsten Zahl return (0); }
mfg hohesC
[edit]kommentare hinzugefügt[/edit]
-
int a [18]= { 3,4,3,7,7,4,3,4,8,6,7,4,3,4,5,3,2,5 }; //zu überprüfendes int-Array int x, kleinstes, alen = 18; kleinstes = a[0]; for (x = 1; x < alen; ++x) if (a[x] < kleinstes) kleinstes = a[x]; printf("%d", kleinstes);
und jetz sag mir mal einer, wieso *das* so schwer sein soll...
ja, sidt, ich hab ein problem. ich fühl mich von dir verarscht.
wo bleibt bei dir der lerneffekt, wenn du dir selbst so kleine sachen vorsetzen lässt?
-
Ja du hast ja recht. Mein Problem ist das ich moment lauter seminararbeiten schreiben muss, die wahnsinnig aufwendig sind und ich einfach im moment keine Zeit habe. Werde morgen meine Letzte ab geben und werd mich dann nur für C hinsetzen.
Ich will ja uach nicht immer ganze Programme, was natürlich sehr sehr nett ist, sondern wollte nur wissen welche funtionen man benutzen muss damit ich weiß was ich nachschlagen soll.
Also Dnake sehr für die hilfe und ich werd mich bemühen nicht mehr solche fragen zu stellen
-
#include <stdio.h> int main(int argc, char **argv) { int a [18] = { 5,4,3,7,7,1,3,4,8,6,7,4,3,4,5,3,2,5 },x=0,kl=a[x]; for(;++x<=17;a[x]<kl?kl=a[x]:0); printf("Kleinste:%i",kl); return (0); }
also das ist doch so billig!
mfg hohesC
[edit]*hust[/edit]
-
#include <stdio.h> int main(int argc, char **argv) { int a [18] = { 5,4,3,7,7,1,3,4,8,6,7,4,3,4,5,3,2,5 },*p=a+sizeof(a)/sizeof(*a),kl=*a; for(;p---a;kl=*p<kl?*p:kl); printf("Kleinste:%i",kl); return (0); }
sowas macht spaß
-
#include <stdio.h> int main(int argc, char **argv) { int a [18] = { 5,4,3,3,7,4,3,4,8,6,7,4,3,4,5,3,3,2 },*p=a+sizeof(a)/sizeof(*a),kl=*a; for(;p---a;*p<kl?kl=*p:0); //for(;p---a;kl=*p<kl?*p:kl); <<- Deins printf("%i",kl); return (0); }
ok sieht ähnlich aus!
-
for(;p---a;*p<kl?kl=*p:0);
kann mir das mal wer übersichtlicher aufschreiben??
sowas hab ich noch nie gesehen;p---a;
der rest ist mir klar
-
;p---a;
Sowas hab ich auch noch nie gesehen....das ist ja noch schlimmer als das was ich schreibe
-
int s,z,m;int t1=1;int k=0;int ze=2;int sp=2;int merker=0;int m2,m3,m4;int i=1;int h=0; int j=1;int n1=2;int t=4;int l1=1;int l2=2;int z1=1;int g=0; int g2=0; int g3=0; int g5=0;int n2=0;
das wast du schreibst ist aber sicher nicht so sclimm wie das hier oder :-))
hab ich von http://www.c-plusplus.net/forum/viewtopic-var-t-is-110196.html das ist echt krass
-
ok, ihr l33ten checkaz
p = a+sizeof(a)/sizeof(*a); for(;p---a;*p<kl?kl=*p:0);
ein for loop hat die form for(x;y;z)
x wird am anfang ausgeführt, z zwischen jeder ausführung des blocks (den es hier nicht gibt) und y ist die bedingung.
also jetzt der hauptteil:(*p < kl) ? (kl = *p) : 0
was der trinärop zurückgibt, ist egal. wichtig ist nur die zuweisung.
am anfang zeigt p um ein element über das array hinaus.
vor dem eintritt wird die bedingung (p-- - a) geprüft.
die ist !=0 und dekrementiert danach p, damit zeigt p jetzt auf ein element im array.
jetz wird der code oben ausgeführt.wenn wir bei (p == &a[1]) angekommen sind, trifft (p-- - a) noch zu, aber nach der auswertung ist p==a. bei der nächsten auswertung kommt null raus.
ok, war ne miese erklärung aber sprache muss man sprechen und nicht erklären.
-
aber mann kann sprache auch schön sprechen
und nicht so verunzelt wiep = a+sizeof(a)/sizeof(*a); for(;p---a;*p<kl?kl=*p:0);
wo man nur die haelfte versteht
-
es ist auch nicht dazu gedacht, lesbar zu sein.
http://beej.us/guide/c/src/bgc.html#introaber es zeigt, wie viel man mit so wenig zeichen sagen kann.
in gewisser weise hilfts auch der ausführungsgeschwindigkeit.
-
nöö ich glaub nicht dass das was bei der ausfürungsgescheindigkteit aendert muss ja kompiliert werden, es gibt zwar viele arten einen code schneller machen zu können aber die schreibweise ist es sicher nicht...
-
--linuxuser-- schrieb:
int s,z,m;int t1=1;int k=0;int ze=2;int sp=2;int merker=0;int m2,m3,m4;int i=1;int h=0; int j=1;int n1=2;int t=4;int l1=1;int l2=2;int z1=1;int g=0; int g2=0; int g3=0; int g5=0;int n2=0;
das wast du schreibst ist aber sicher nicht so sclimm wie das hier oder :-))
hab ich von http://www.c-plusplus.net/forum/viewtopic-var-t-is-110196.html das ist echt krassWas ist daran so krass?...ok umständlich aber es gibt bei weitem schlimmeres...der code ist übrigens von mir.hab die deklarationen nur so angelegt aus platzgründen....
-
for(;p---a;*p<kl?kl=*p:0);
Noch mal zum "p---a". Woher weiß der Compiler denn, ob "p- (--a)" oder "(p--) -a" gemeint ist?
Afaik hat doch --x eine höhere Priorität als x--, oder?
-
Reyx schrieb:
for(;p---a;*p<kl?kl=*p:0);
Noch mal zum "p---a". Woher weiß der Compiler denn, ob "p- (--a)" oder "(p--) -a" gemeint ist?
Afaik hat doch --x eine höhere Priorität als x--, oder?
das hat nix mit der priorität zu tun sondern mit dem scanner des compilers.
es geht darum, ob er es alsp-- - a
oder als
p - --a
liest. er liest es als ersteres.