Kleinste und Größte Zahl ermitteln



  • 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 wie

    p = 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#intro

    aber 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 krass 😃

    Was 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 als

    p-- - a
    

    oder als

    p - --a
    

    liest. er liest es als ersteres.


Anmelden zum Antworten