C program

Sekcia: Programovanie 23.03.2008 | 14:32
Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
este jedna vec chcel by som sa spytat nevedel by mi nekdo nypisat zdrojak programu do ktoreho napisem cisla a ono my ich zoradi od najvecsieho po najmensie fakt to neviem urobit...dik
    • Re: C program 23.03.2008 | 14:35
      Avatar borg Fedora  Administrátor
      tak si urob c++ program, pouzi stlkovsky sort napriklad ;) alebo si vyhladaj nieco o triediacich algortimoch (urcite najdes aj hotove)
      • Re: C program 23.03.2008 | 14:41
        Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
        aha dik a pocujte bol by som rad ak by ste ho niekto napisal,A inac neviete o nejakej good knihe o c alebo c++??
        • Re: C program 23.03.2008 | 15:06
          ludo   Návštevník
          Tak ty si fakt husty:)))) ale aby tento prispevok mal aspon nejaku informacnu hodnotu: dobra knizka je od Herouta, Ucebnice jazyka C... JFGI
        • Re: C program 23.03.2008 | 15:11
          Avatar Tomáš Srnka Barz čo, už asi všetko  Administrátor
          knizka: Pavel Herout - Ucebnice jazyka C

          inac najjednoduchsi je bubble sort, co kvazi odbublinkuje cisla na koniec. Priklad(zoradi cisla od min po max):
          #include <stdio.h>
          int main(void);
          void swap(int *a, int *b);
          
          void swap(int *a, int *b)
          {
                  int t;
                  t = *a;
                  *a = *b;
                  *b = t;
          }
          
          int main(void)
          {
                  int a[8] = { 0, 10, 5 , 4, 3, 5, 6, 7 };
                  int p = 8; 
          
                  int i, j;
          
                  for (i=0;i<p;i++)
                  {
                          for (j=0;j<p-i-1;j++)
                          {
                                  if (a[j]>a[j+1])
                                          swap (&a[j], &a[j+1]);
                          }
                  }
                  for (i=0;i<p;i++)
                          printf("%d ", a[i]);
                  return 0;
          }
          
          Dlho som robil linuxos.sk, neskôr založil vpsFree.cz, posledných pár rokov ako tech. riaditeľ vo Websupporte
          • Re: C program 23.03.2008 | 15:17
            Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
            Naco O(N^2) sort, ked v C je priamo zabudovany qsort v O(N log n)? :)
            Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
            • Re: C program 23.03.2008 | 15:24
              Avatar Tomáš Srnka Barz čo, už asi všetko  Administrátor
              aby sa chalan naucil pouzivat hlavu a pochopil, co robi :) (lebo keby som nevedel, co je qsort, tak fakt netusim, ze o co ide...). Osobne si myslim, ze je lepsie, ak sa nauci ako nejaky sort funguje (bubble sort mi pride najlepsi na ucenie), bude si ho vediet nakodit a potom nech si pouziva uz vytvoreny qsort. Hej, viem, ze qsort je rychlejsi, hlavne pri vacsich datach (ale aspon som si zopakoval bubble sort :)).

              btw. poznamka, moj sort sortuje veci od min po max, ty si chcel od max po min, snad to zvladas upravit
              Dlho som robil linuxos.sk, neskôr založil vpsFree.cz, posledných pár rokov ako tech. riaditeľ vo Websupporte
              • Re: C program 23.03.2008 | 15:40
                Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                @Tomas Srnka: Mne je to jasne, ved to bola len taka ustipacna poznamka :) Suhlasim s tym, ze clovek by si mal zo zaciatku skusit napisat vsetko sam a snazit sa nepouzivat ziadne smart-ass kniznice a ani ziadne vyspekulovane jazyky. C je v tomto smere snad najlepsi jazyk. Ma uz znaky vysokourovnovych jazykov, no stale nuti programatora davat pozor. A samozrejme najlepsia metoda ucenia je pokus-omyl :)
                Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
            • Re: C program 23.03.2008 | 15:55
              still   Návštevník
              Naco O(N^2) sort, ked v C je priamo zabudovany qsort v O(N^2)? ;-P
              • Re: C program 23.03.2008 | 16:09
                Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                Ok, beriem, ale potom naco \omega(N^2) sort, ked v C je priamo zabudovany qsort v \omega(N)?
                Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
                • Re: C program 23.03.2008 | 16:29
                  still   Návštevník
                  S malickou upravou algoritmu bubble sortu by tvoja veta potom musela zniet:
                  "...naco \omega(N) sort, ked v C je priamo zabudovany qsort v \omega(N)?" ;-)

                  Zalezi len na velkosti pola a charakteru jednotlivych prvkov. A podla pravdepodobnosti charakteru treba aj zvolit optimalny algoritmus, nie vzdy je vhodny quicksort. A najme nie, ak potrebujes _stabilny_ algoritmus.
                  • Re: C program 23.03.2008 | 16:39
                    Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                    Problem je, ze qsort bude v najhorsom pripade konstanta*N^2, kym bubble sort je vzdy konstanta*N^2 (bavime sa o vseobecnom algoritme). Na realnych datach je ale qsort konstanta*N*log(N) (debilne pravdepodobnostne algoritmy, neznasam tie odvodzovacky zlozitosti), dokonca s omnoho lepsou konstantou ako _stabilne_ N*log(N) algoritmy ako mergesort a heapsort. To je asi aj dovod, preco sa najcastejsie vyuziva. Ale ked sa uz bavime o sortoch, tak ak su vhodne data, tak mozeme rovno pouzit radix alebo countsort, ktory je vzdy N :) Ale mas pravdu, vzdy treba vediet, ake data ideme spracovavat a podla toho potom aj zvolit algoritmus. Som zvedavy, kolko takzvanych "profesionalnych" programatorov vobec tieto algoritmy pozna a vedelo by vybrat ten spravny na zaklade specifikacie vstupnych dat.
                    Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
                    • Re: C program 23.03.2008 | 16:53
                      still   Návštevník
                      Tipujem tak polovicu (mozno 3/4) z tych, ktori vobec pridu do styku s nejakou analyzou vstupnych dat, resp. analyzou programu/algoritmov vseobecne. Je to smutne, ale kvalitna, teda ak vobec nejaka analyza sa vykonava len velmi zriedka - dobre firmy ju robia a preto su aj dobre, avsak tych priemernych a podpriemernych je omnoho viac a tie na nieco take ako analyza ani len nepomyslia. A potom to aj tak vyzera :-(
    • Re: C program 23.03.2008 | 15:10
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      #include <stdio.h>
      #include <stdlib.h>
      
      #define MAXPOLE 100
      
      int porovnaj(const int *a,const int *b)
      {
        int r=*a-*b;
        if(r>0) return 1;
        if(r<0) return -1;
        return 0;
      }
      
      int main(void)
      {
        int pole[MAXPOLE];
        int num=0;
      
        printf("Zadavaj maximalne %d cisel, pripadne necislo na ukonecnie vstupu:\n",MAXPOLE);
        while(num<MAXPOLE){
          printf("Zadaj %d. cislo: ",num+1);
          if(scanf("%d",&pole[num])!=1) break;
          num++;
        }
      
        qsort(pole,num,sizeof(int),(void *)porovnaj);
      
        printf("A tu je zoradenych %d cisel:\n",num);
        for(num--;num>=0;num--){
          printf("%d ",pole[num]);
        }
        printf("\n");
      
        return 0;
      }
      
      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
      • Re: C program 23.03.2008 | 15:14
        RC-FOX   Návštevník
        qsort(pole,num,sizeof(int),(void *)porovnaj);

        v tomto mi pise chabu
        • Re: C program 23.03.2008 | 15:18
          Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
          a aku chybu?
          Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
          • Re: C program 23.03.2008 | 18:20
            Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
            no proste ked dam spomplimovat tak mi uakze V cervenom kruzkuX na henten prikaz
            • Re: C program 23.03.2008 | 18:30
              Avatar borg Fedora  Administrátor
              a co ti vypise kompilator? btw mne to ide, asi si to zle opisal, pastol...
              • Re: C program 23.03.2008 | 18:57
                Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
                to je tiez mozne tak diky za rady chalani
                • Re: C program 23.03.2008 | 19:02
                  Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
                  stale nejde nechapem tomu abosolutne
                  • Re: C program 23.03.2008 | 19:11
                    Avatar borg Fedora  Administrátor
                    pytam sa posledny krat, co ti vypise kompilator?
                    • Re: C program 23.03.2008 | 19:14
                      Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
                      invalid conversion
                      • Re: C program 23.03.2008 | 19:20
                        Avatar borg Fedora  Administrátor
                        neviem co pouzivas za kompilator, ale este mozes skusit toto:
                        qsort(pole,num,sizeof(int), porovnaj);

                        ze vynechas explicitne pretypovanie na void *
                        • Re: C program 23.03.2008 | 20:54
                          Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
                          jaj ok diki moc
                        • Re: C program 23.03.2008 | 20:55
                          Avatar rc-fox Ubuntu 8.04,Debian Lenny  Používateľ
                          jaj ok diki moc