program v C

Sekcia: Programovanie 03.04.2008 | 11:47
majka   Návštevník
ahojte, dostala som zadanie v skole a neviem si rady...vie mi niekto z vas pomoct ? teda problem mam s tym modulom, ktore vznikne pri prevode z desiatkovej do dvojkovej:( budem vam vdacna,
zadanie:
zostavte program na prevod desiatkoveho cisla do priameho kodu na 16-bitoch. vysledok ma byt reprezentovany ako vektor. pouzite vlastne funkcie s parametrami.
    • Re: program v C 03.04.2008 | 13:19
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      Mam trochu problem predstavit si, co ma zadanie robit. Prevod z desiatkovej sustavy na short si este predstavit viem (aj ked pochybujem, ze to je cielom zadania). Ale reprezentacia ako vektor, to uz je nad moje chapanie. Nema to byt nahodou C++?
      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: program v C 03.04.2008 | 13:26
        majka   Návštevník
        myslim ze cielom programu je vypisat 16 jedniciek a nul...to bude asi to...tiez tomu nechapem ale tak som to dostala zadane...:( myslim,ze to by mohlo stacit, program,ze ak zadam akekolvek cislo v desiatkovej,tak mi ho prerata do dvojkovej a zobrazi na 16bitoch (ak kratsie,doplni nuly...).
        • Re: program v C 03.04.2008 | 14:12
          Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
          #include <cstdio>
          #include <vector>
          
          using namespace std;
          
          vector<bool> konvertujDecNaBin(int x)
          {
            vector<bool> a;
            while(x>0&&a.size()<16){
              a.push_back((x&1)?true:false);
              x>>=1;
            }
            return a;
          }
          
          int main(void)
          {
            int x;
            printf("Zadaj cislo: ");
            scanf("%d",&x);
            vector<bool> v=konvertujDecNaBin(x);
            for(int i=16-v.size();i>0;i--) printf("0");
            for(int i=v.size()-1;i>=0;i--) printf("%d",v[i]?1:0);
            printf("\n");
          }
          
          Tento program nacita cislo v desiatkovej sustave (funguje len pre kladne cele cisla) a vypise ho v binarnom tvare zarovnane na 16bit. Je tam pouzita vlastna funkcia s parametrom, ktorej vystupom je vector. Ale ide uz o C++ (s pouzitim STL).
          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: program v C 03.04.2008 | 14:35
            majka   Návštevník
            diky,ale ja mu to potrebujem odovzdat a c++ sme nemali,takze to mi asi neuzna (kedze tomu velmi nerozumiem). skor by som potrebovala nieco jednoduchsie,iba v cecku...a aby na tom bolo vidno ze som lamka :)
            • Re: program v C 03.04.2008 | 15:48
              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
              No, len potom ten vektor tam nedaval zmysel. Hned ale poslem nejake jednoduchsie riesenie.
              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: program v C 03.04.2008 | 15:55
              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
              #include <stdio.h>
              
              /* Tu je pole, do ktoreho bude ulozeny vysledok */
              char pole[17];
              
              /* Tu je vlastna funkcia, ktora dostane ako parameter cislo */
              void konvertujDecNaBin(int x)
              {
                /* Binarne cislo musime zapisovat odzadu, takze nastavime poziciu na koniec pola */
                int pozicia=16;
              
                /* Konvertovanie ukoncime, ked je cislo X nula alebo uz sme zapisali cele pole */
                while(x>0&&pozicia>0){
                  /* Na aktualnu poziciu zapiseme zvysok po deleni dvoma */
                  pole[pozicia]=x%2;
                  /* X vydelime celociselne dvoma */
                  x/=2;
                  /* A posunieme poziciu o jedno policko */
                  pozicia--;
                }
              }
              
              int main(void)
              {
                int x,i;
                /* Nacitanie vstupu */
                printf("Zadaj cislo: ");
                scanf("%d",&x);
              
                /* Zavolanie vlastnej funkcie s parametrom x */
                konvertujDecNaBin(x);
              
                /* Vypisanie vystupu */
                printf("A tu je vystup: ");
                for(i=1;i<=16;i++) printf("%d",pole[i]);
                printf("\n");
              
                return 0;
              }
              
              Dal som tam indexovanie pola az od 1, aby to vyzeralo viac lamkovsky :)
              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: program v C 03.04.2008 | 17:28
                majka   Návštevník
                dakujeeeeem:) vyskusam to potom a dam vediet...mas to u mna :o)
          • Re: program v C 03.04.2008 | 14:36
            Avatar borg Fedora  Administrátor
            cin a cout si kde nechal? :)
            • Re: program v C 03.04.2008 | 15:56
              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
              Chod niekam s cin a cout. Tieto veci nemaju v mojich zdrojakoch co robit (kedze su pomale ako hell). Ja mam rad vstup a vystup pekne formatovany :)
              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: program v C 03.04.2008 | 16:13
                Avatar borg Fedora  Administrátor
                ale aj cin a cout maju pekne formatovany vstup/vystup. ked uz pouzivas c++ tak ho fakt pouzivaj :)
                • Re: program v C 03.04.2008 | 16:53
                  oO   Návštevník
                  co je na tych cin a cout take super? a preco by ich mal pouzivat namiesto klasickych, podla mna aj ovela zrozumitelnejsich a hlavne rychlejsich (ako spomenul) funkcii?
                  • Re: program v C 03.04.2008 | 17:36
                    Avatar borg Fedora  Administrátor
                    lebo pouzivame c++.
                    • Re: program v C 03.04.2008 | 17:51
                      oO   Návštevník
                      pokracuj...
                      • Re: program v C 03.04.2008 | 19:50
                        Avatar borg Fedora  Administrátor
                        nemas ju typovo bezpecnu (printf), je to varargs funkcia, co nie je prilis dobre. neviem ako pretazis printf v C++ aby zobrazovala vlastne definovane typy.
                        • Re: program v C 03.04.2008 | 23:14
                          oO   Návštevník
                          dik, to je lepsie vysvetlenie. kazdopadne, ak nechcem pouzit vlastny typ, tak je stale lepsie (aspon pre mna) pouzit printf() ci scanf(). nechcem sa hadat, chcem len vediet rozdiely ;)
                    • Re: program v C 03.04.2008 | 18:01
                      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                      Snazim sa pouzivat to lepsie z oboch jazykov. Nechapem, naco sa sustredit len na jeden a druhym opovrhovat.
                      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: program v C 03.04.2008 | 18:06
                        Avatar borg Fedora  Administrátor
                        a robit potom kasu z toho