malloc

Sekcia: Programovanie 23.10.2011 | 01:18
Avatar Zer0 Slackware 13.37  Používateľ
Ak chcem allokovat pamat typu int dlhu 46 cifier(1234567894567891230154879411320345684872103540) tak to bude vyzerat takto ?
..
int *y;
.
.
.
.
y=(int*) malloc(sizeof(46));
y=1234567894567891230154879411320345684872103540;
a este ako to vypisem na obrazovku ?
printf("%lld",y);
co mam pouzit namiesto lld ?
    • Re: malloc 23.10.2011 | 02:44
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      Takto to nepojde. Ak potrebujes pracovat s velkymi cislami, potrebujes kniznicu na to urcenu (alebo si to cele naprogramovat s dostupnymi prostriedkami). Pozri si napriklad kniznicu GMP.
      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: malloc 23.10.2011 | 02:49
        Avatar Zer0 Slackware 13.37  Používateľ
        Dik ale ja to potrebujem aby to slo aj na win a uz som ten 1. problem vyriesil este ten 2. pls s tym printf...
        • Re: malloc 23.10.2011 | 02:57
          Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
          V tom pripade si to pravdepodobne vyriesil tak, ze si naalokoval nejaku strudlu pamate a cez memcpy si do nej nieco vopchal, tipujem ze ascii zapis toho cisla. Cize vypis by mal byt potom pohoda, cez %s, akurat treba dat pozor na to, aby na konci bol null.

          Ak je to inak, tak hod kod, ako alokujes a pchas cislo do tej pamate a niekto snad nieco poradi.
          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: malloc 23.10.2011 | 02:56
      Avatar borg Fedora  Administrátor
      co chces? pole? ulozit taku hodnotu do int?
      ak pole tak:
      int *pole = (int *) malloc(46 * sizeof(int));

      ak ulozittaku hodnotu do int tak neuspejes. proste ti to pretecie. na take velke cisla mozes pouzit nejaku kniznicu, napr. mapm.

      max. hodnoty ktore mozes do premennych daneho typu ulozit si mozes pozriet v limits.h

      aj to priradenie y = ... mas zle, to nie typ int ale int *, teda ukazovatel na int.
      • Re: malloc 23.10.2011 | 03:07
        Avatar Zer0 Slackware 13.37  Používateľ
        Nie pole pravez viem ale toto nie prose int ale vacsi aby sa tam zmestilo x (100) cifier vyriesil som to tak ze som vlastne potreboval vzorec a kod mam asi taky :
        int *y;
        int k1;
        int j;
        //k1 nacita zo suboru (cislo 20 || 30 || 89 || 4502 ...)

        j=20*k1;
        y=malloc(sizeof(20*k1/2));
        y=pow(1.61803,(20*k1))/sqrt(5);
        fprintf(vystup,"%d ",y); // fprintf(vystup,"%d ",pow(1.61803,(20*k1))/sqrt(5)); moja varianta
        proste potrebujem vypisat fibonaciho cislo f(n) a n citam z klavesnice / suboru to je jedno.
        • Re: malloc 23.10.2011 | 03:20
          Avatar Zer0 Slackware 13.37  Používateľ
          Vsetko je pisane do suboru to si nevsimajte to je pre 2. program na citanie :D
          • Re: malloc 23.10.2011 | 04:40
            miso   Návštevník
            Nechcem byt za cur*ka ale Ty sa najprv potrebujes naucit programovat. Prekvapuje ma ze Ti to este nikto nenapisal, ale tak to proste je. Darmo nazves temu specificky "malloc" ked nerozumies zakladom jazyka.
            • Re: malloc 23.10.2011 | 18:38
              Avatar Zer0 Slackware 13.37  Používateľ
              Dik miso to mi velmi pomohlo fakt :)
              Viem to *y=... ma byt takto?
              A este s tym printf("%/*nieco*/",y); ma byt ako? neviem tu konverziu.
              • Re: malloc 23.10.2011 | 19:15
                WlaSaTy   Návštevník
                Ak nebolo v požiadavkách predmetu aby študent zvládal základy, tak to bolo odprednášané na predchádzajúcich cvikách. Čo študuješ?
                • Re: malloc 23.10.2011 | 22:12
                  Avatar Zer0 Slackware 13.37  Používateľ
                  Takto poradi mi niekto ci sa ma tu budete pytat bludy ???? Ako vypisem velmy velke cislo (12346578421032164650461321354878745412012315465447845121032154787945602301354) asi take na obrazovku ???
                  • Re: malloc 23.10.2011 | 22:25
                    miso   Návštevník
                    Na moju si ho prave vypisal, ak to u teba nefunguje skus refresh stranky, mozno to pomoze. Alebo aka otazka taka odpoved.
                    • Re: malloc 23.10.2011 | 23:30
                      Avatar Zer0 Slackware 13.37  Používateľ
                      Ok takze sa nerozumieme :D Takto program c (nie html, css, php atd) potrebujem vypisat (do suboru) velke cislo (uz som pisal priklad) skusam to pomocou fprintf(..,"%lld",cislo); ale nevypise vsetko. da sa to ? Uz sa chapeme ?
                      • Re: malloc 23.10.2011 | 23:53
                        Avatar m4jkl   Používateľ
                        a to cislo sa zoberie odkial?
                        • Re: malloc 24.10.2011 | 01:35
                          Avatar Zer0 Slackware 13.37  Používateľ
                          To cislo prinesie medvdevik a ulozi ho do postielky zvanej velke int ale tu postielku treba este vyrobit. Asi si zavolam pat a mat na postielku.
                          • Re: malloc 24.10.2011 | 02:01
                            Avatar borg Fedora  Administrátor
                            no v "obycajnom inte" ju nemas. bud si napises vlastny "printf", ktory bude vediet obsluzit ten tvoj "obycajny int" a vypisat ho, alebo pouzijes niektoru zo spominanych kniznic na pracu s velkymi cislami.
                            • Re: malloc 24.10.2011 | 02:12
                              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                              Alebo si napises vlastnu strukturu na uchovavanie velkych cisel a ich scitavanie, o com vlastne toto zadanie je.
                              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: malloc 24.10.2011 | 14:38
                                Avatar bedňa LegacyIce-antiX  Administrátor
                                Prípadne: const char *dlhecislo = "12345678901234567890123456789012345678901234567890";
                                Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                                • Re: malloc 24.10.2011 | 15:47
                                  Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                                  No, ved tak. Skor ide o to, ze v tej ulohe este treba dve taketo cisla scitat, co je jadro toho zadania.
                                  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: malloc 24.10.2011 | 18:15
                                    Avatar bedňa LegacyIce-antiX  Administrátor
                                    Treba si napísať vlastnú FPU, kde napríklad pre sčítanie a násobenie sa pracuje od posledného znaku k prvému.
                                    Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                                    • Re: malloc 24.10.2011 | 22:42
                                      Avatar Zer0 Slackware 13.37  Používateľ
                                      Takze nieje sposob ako cez fprintf vypista take velke cislo ? A btw je vzorec ako vypocitat F(n) http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html Ja dostanem iba to n takze ... keby som vedel vypisat take velke cislo tak malloc mi je zbytocny
                                      • Re: malloc 25.10.2011 | 00:43
                                        Avatar bedňa LegacyIce-antiX  Administrátor
                                        Musíš s číslami pracovať ako z reťazcami, to je jediné čo ma napadlo a asi aj jediné riešenie.
                                        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                                        • Re: malloc 25.10.2011 | 15:52
                                          Avatar Fridolín Pokorný Fedora 21  Používateľ
                                          Tych rieseni by bolo viacej. Je mozne napriklad simulovat prenos do vyssich radov, pripadne vyuzit scitanie pomocou zbytkovych tried (pokial to implementuje sikovne). Sposobov ako to implementovat je urcite mnoho.
                                          Rozhodne by som "nepisal" vlastnu FPU (ako si to vyssie pisal). :)
                                      • Re: malloc 25.10.2011 | 06:10
                                        Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                                        Uz davno si mohol pozriet sposob, akym to riesi napriklad ta spominana GMP a inspirovat sa, miesto cakania pomoci od druhych.
                                        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