začiatočnícky priklad z jazyka C

Sekcia: Programovanie 07.04.2012 | 21:02
Avatar tommq Ubuntu  Používateľ
Zdravim, mam takúto úlohu:

vstup - zadaj 3 reálne čisla
výstup - najväčšie z nich je: ...

mam dve riešenia ktoré sú rovnaké len inak sú napísane. Ktoré z nich by ste si vybrali a prečo ? (jedno z nich som napísal ja :-))
(vyjadrite sa len ty ktorý tomu rozumiete)

riešenie 1 #include <stdio.h>
int main()
{
double x, y, z, max;

printf("Zadajte 3 cisla:\n");
scanf("%lf%lf%lf", &x, &y, &z);

if (x > y) {
if (x > z)
max = x;
else
max = z;
}
else {
if (y < z)
max = z;
else
max = y;
}

printf("najvatsie cislo je: %.2lf", max);
return 0;
}
riešenie 2 #include <stdio.h>
int main()
{
double x, y, z, max;

printf("Zadajte 3 cisla:\n");
scanf("%lf%lf%lf", &x, &y, &z);

if (x > y && x > z)
max = x;
else
if (y > x && y > z)
max = y;
else
if (z > x && z > y)
max = z;

printf("najvatsie cislo je: %.2lf", max);
return 0;
}
    • Re: začiatočnícky priklad z jazyka C 07.04.2012 | 21:04
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      Ani jedno. Nie je to odsadene :) Ale hlavne je to napisane zlym stylom a je tam este aj pravopisna chyba.
      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: začiatočnícky priklad z jazyka C 07.04.2012 | 22:05
        Avatar maor Mint, Debian, Raspbian, LibreELEC  Používateľ
        Samo: +1 :D

        tommq: Druhé, ale bez tej pravopisnej chyby. Prečo? Už na prvý pohľad je to kratšie, prehľadnejšie a zrozumiteľnejšie.
        • Re: začiatočnícky priklad z jazyka C 07.04.2012 | 22:16
          Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
          Lepsie by to bolo nejako takto:
          #include <stdio.h>
          #include <stdlib.h>
          
          int main()
          {
            double x, y, z, max;
          
            printf("Zadajte 3 cisla:\n");
            if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){
              printf("Mal si zadat tri cisla, ty pnak!\n");
              return 1;
            }
          
            max=x;
            max=max>y?max:y;
            max=max>z?max:z;
          
            printf("Najvacsie cislo je: %g\n", max);
            return 0;
          }
          
          Uzivatelia su prasata, preto treba davat pozor pri kazdom vstupe. A taktiez, treba sa snazit co najmenej komplikovat podmienky a vnarat sa. Vzdy, ked sa riesi nejaka uloha, ktora spracovava nejaky vstup, treba si polozit otazku: Kolko prace by znamenalo, keby odrazu nebolo vstupov N, ale dvakrat tolko. Idealne je, ak staci prepisat konstantu, co ani jedno z povodnych rieseni nesplnalo.

          Proste, treba sa snazit udrziavat kod co najjednoduchsi.
          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: začiatočnícky priklad z jazyka C 08.04.2012 | 00:20
            Avatar tommq Ubuntu  Používateľ
            to prve riešenie je opísané z knihy "UČEBNICE JAZYKA C" :D
            • Re: začiatočnícky priklad z jazyka C 08.04.2012 | 01:09
              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
              Mozno to bol priklad, ako sa to nema robit, resp. ma to clovek opisat, potom sa s tym hrat a postupne dokonvergovat ku kodu podobnemu tomu, co som poslal ja :) Herout vie, ako na to :)
              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: začiatočnícky priklad z jazyka C 08.04.2012 | 01:11
              Avatar Fridolín Pokorný Fedora 21  Používateľ
              Ta knizka je vynikajuca pre toho, kto zacina s programovanim a jazyk C je podla mojho nazoru velmi vhodny jazyk na vyucovanie zakladov programovania. Ked vsak zacnes pisat/citat "produkcny" kod tak zistis, ze su nejake zauzivane (navrhove) vzory a dobre zvyky (pozor, programatori su casto prasce).
              • Re: začiatočnícky priklad z jazyka C 08.04.2012 | 01:37
                Avatar tommq Ubuntu  Používateľ
                Samuel BWPOW Kupka je to ukážkový príklad ako to ma byť ! preto som to sem dal..... a ta verzia ktorú som ja urobil je omnoho jednoduchšia (algoritmus) a hlavne pre začiatočníkov zrozumiteľnejšia ako to čo si urobil ty ....... inač kniha výborná ale niektoré veci sú tam zbytočne zavadzajuco-komplikovane.
                • Re: začiatočnícky priklad z jazyka C 08.04.2012 | 02:08
                  Miso   Návštevník
                  Tvoja verzia je uplne najhorsia pretoze ma 6 porovnani tam kde stacia 3, ak prekladac ten pattern nespozna tak bude najpomalsia.
                  • Re: začiatočnícky priklad z jazyka C 08.04.2012 | 02:11
                    Miso   Návštevník
                    preklep: stacia 2
                    • Re: začiatočnícky priklad z jazyka C 08.04.2012 | 03:19
                      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                      Ak by som bol ucitel a chcel deti naucit C, tak im dam tuto verziu:
                      #include <stdio.h>
                      #include <stdarg.h>
                      
                      double maximum(const int p,...)
                      {
                        int i=-1;
                        double v,m;
                        va_list vl;
                        va_start(vl,p);
                        while((++i)^p){
                          v=va_arg(vl,double);
                          m=i?(m<v?v:m):v;
                        }
                        va_end(vl);
                        return m;
                      }
                      
                      int main()
                      {
                        double x, y, z, max;
                      
                        printf("Zadajte 3 cisla:\n");
                        if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){
                          fprintf(stderr,"Mal si zadat tri cisla, ty pnak!\n");
                          return 1;
                        }
                        printf("Najvacsie cislo je: %g\n", maximum(3,x,y,z));
                        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: začiatočnícky priklad z jazyka C 08.04.2012 | 11:28
                        Avatar tommq Ubuntu  Používateľ
                        :D :D :D
                        • RE: Re: začiatočnícky priklad z jazyka C 10.02.2015 | 15:23
                          Avatar libco ubuntu  Používateľ

                          Viem, že je to veľmi stará diskusia, ale nedá mi neukázať začiatočnícký spôsob:

                          #include <stdio>

                          int main(void)

                          {

                          double a, b, c;

                          printf("Zadajte 3 cisla:\n");

                          scanf("%lf%lf%lf",&a,&b,&c);

                          printf("Najvacsie cislo je: %lg\n", (a > b && a > c) ? a : (b > a && b > c) ? b : c);

                          return 0;

                          }

                          • RE: Re: začiatočnícky priklad z jazyka C 10.02.2015 | 19:10
                            Avatar samalama   Návštevník

                            a zajtra ti povedia, ze tych cisel bude 1000000. preto jednoznacne pole...

                            • RE: Re: začiatočnícky priklad z jazyka C 10.02.2015 | 19:53
                              Avatar libco ubuntu  Používateľ

                              Vychádzal som zo zadania v prvom príspevku, ale pole tiež nie je problém. ;-)

    • RE: začiatočnícky priklad z jazyka C 10.02.2015 | 19:55
      Avatar libco ubuntu  Používateľ

      Navyše som rád, že som to tu našiel, zaujala ma knižnica stdarg.h, ešte som s ňou nerobil.

      • RE: začiatočnícky priklad z jazyka C 12.02.2015 | 10:01
        Avatar tomy   Návštevník

        Samuel - to si robíš srandu? Takto by si to učil? A potom ako by si riešil zápis a čítanie do/zo súboru?

        Mimochodom na stredných školách sa učí prevažne Pascal 

    • RE: začiatočnícky priklad z jazyka C 12.02.2015 | 19:51
      Avatar libco ubuntu  Používateľ

      Neviem ako vám, ale mne správne nefunguje táto časť kódu:

        printf("Zadajte 3 cisla:\n");
        if(fscanf(stdin,"%lf%lf%lf",&x,&y,&z)!=3){
          printf("Mal si zadat tri cisla, ty pnak!\n");
          return 1;

      </pre>

      Malo by mi to vyhubovať keď zadám iný počet čísiel, ale nepracuje to tak. Hľadal som na nete nejakú radu, ale nenašiel som nič.

      • RE: začiatočnícky priklad z jazyka C 12.02.2015 | 20:01
        Avatar d_   Návštevník

        oprav na:

        if(fscanf(stdin,"%lf %lf %lf",&x,&y,&z)!=3){
        • RE: začiatočnícky priklad z jazyka C 13.02.2015 | 02:43
          Avatar libco ubuntu  Používateľ

          Ale to nič nerieši. Skús zadať 4 čísla oddelené medzerou v jednom riadku.