Programozók SEG

Kezdőlap Fórumok Programozás Programozók SEG

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #1933701
    admin
    Adminisztrátor

      Nem a legelegáncsosabb megoldás de így működni fog.

      Sok sikert a továbbiakhoz !

      #include
      #include
      #define NELEM2 4
      #define NELEM1 1000

      typedef double matrix [NELEM1] [NELEM2];

      main(void)
      {
      matrix *memo;
      int i=0 , j, ciklus ;
      double xkord , ykord ;
      char line[255];
      FILE *tf;

      /* Helyfoglal s ellen?rzéssel */
      memo = (matrix *) calloc( 1 , sizeof(matrix));

      if (! memo) {
      printf(„aniincs elég memória!n”);
      return -1;
      }
      /* Ez megnyitja az extil.022 -t ezzel nincs is baj*/

      if (!(tf = fopen(„extfil.022”, „rt”)))
      {
      fprintf(stderr, „Sikertelen file-nyit si kisérlet!n”);
      exit(-1);
      }

      /* még ez is m?ködik látsz?lag*/

      fscanf(tf,”%d”, &ciklus);
      fgets(line,255,tf); //Beolvas egy sort
      fgets(line,255,tf);
      fgets(line,255,tf);
      fgets(line,255,tf);
      printf(„elvileg 500 ha jo: %d n”, ciklus);

      /* tudom hogy az 5 helyére a ciklust kell írni:csak azt szeretném itt látni hgy a módosítaások*/ /*ellenére marad e az 500 érték ami a …022 els? száma*/

      for (i = 0; i < 5 ; i++)
      {
      /* na szerintem ez nem jó, de mért mert ezt dobja ki:
      elvileg 500 ha jo: 500
      akkor lássuk: 0 4.990936 0.000000
      akkor lássuk: 0 4.990936 0.000000
      akkor lássuk: 1 4.990936 0.000000
      akkor lássuk: 1 5.990936 1.000000
      akkor lássuk: 2 4.990936 0.000000
      akkor lássuk: 2 6.990936 2.000000
      akkor lássuk: 3 4.990936 0.000000
      akkor lássuk: 3 7.990936 3.000000
      akkor lássuk: 4 4.990936 0.000000
      akkor lássuk: 4 8.990936 4.000000

      */
      fgets(line,255,tf); //beolvas egy sort
      sscanf( line, „%lf %lf n”, &xkord, &ykord); //és feldolgozza
      printf(„akkor lássuk: %d %f %f n”,i, xkord, ykord );
      (*memo)[1]=xkord+i;
      (*memo)
      [2]=ykord+i;
      printf(„akkor lássuk: %d %f %f n”,i, (*memo)
      [1], (*memo) [2] );
      };

      free(memo);

      }
      /*és itt jön a feldolgozandó fileb?l egy részlet:
      500 999000 847266 5000 1000 2 0
      100.00000 1.00000 50.00000 1000.00000 0.0000010000
      15000.0000000 5.0000000 0.0020000
      6.492520 29.697117 0.000000 1.000000-0.116759E+00-0.606893E-01
      59.822802 38.329144 0.000000 1.000000 0.281617E+00 0.136119E+00
      74.426151 20.403068 0.000000 1.000000 0.178184E+00-0.119522E+00
      82.601481 90.714650 0.000000 1.000000-0.165419E+00-0.109105E+00
      74.296556 27.289441 0.000000 1.000000-0.347553E-01 0.764032E-02
      77.321544 78.268809 0.000000 1.000000-0.136444E-02 0.201329E-01
      84.966457 86.348069 0.000000 1.000000-0.138693E+00-0.795729E-01
      18.553603 42.657599 0.000000 1.000000-0.198751E+00-0.257960E-01
      84.611419 79.834392 0.000000 1.000000-0.428900E-01-0.117605E+00
      0.276001 53.596452 0.000000 1.000000 0.677424E-01-0.562724E-01
      91.031509 95.373888 0.000000 1.000000 0.281195E-01-0.171690E-01
      80.390276 79.466707 0.000000 1.000000-0.193844E-02-0.259591E-02
      7.922157 47.191838 0.000000 1.000000 0.344818E+00 0.885601E-01
      92.136507 74.611943 0.000000 1.000000 0.535790E-01 0.161228E+00
      4.990352 78.527722 0.000000 1.000000 0.371028E-01 0.469914E-01
      60.883236 61.336116 0.000000 1.000000 0.133350E+00-0.988380E-01
      72.227092 5.810033 0.000000 1.000000 0.651267E-01 0.762845E-03
      58.991140 79.113459 0.000000 1.000000 0.125892E-01 0.161237E-01
      50.080953 49.829133 0.000000 1.000000-0.169422E+00-0.117620E+00
      89.032714 73.498785 0.000000 1.000000 0.804797E-01 0.285033E-01
      39.984458 33.862555 0.000000 1.000000-0.112847E-01 0.210433E-01
      53.370011 84.786230 0.000000 1.000000 0.535436E-01-0.458491E-01
      28.768346 53.732689 0.000000 1.000000-0.107200E+00-0.116213E+00
      38.207981 1.906119 0.000000 1.000000 0.984096E-02-0.593227E-02
      26.538034 28.229700 0.000000 1.000000-0.787910E-01 0.179462E-01
      70.879998 38.574264 0.000000 1.000000-0.745004E-01 0.146548E-01
      70.954079 15.091209 0.000000 1.000000-0.254990E+00-0.196221E+00
      20.944098 32.371428 0.000000 1.000000 0.104986E-02-0.106304E+00
      75.650232 64.030795 0.000000 1.000000 0.119309E-01-0.183948E+00
      50.747003 84.887554 0.000000 1.000000-0.158969E-01 0.719681E-01
      44.332224 92.681178 0.000000 1.000000-0.674866E-01-0.119202E+00
      */

      #1933702
      emberk
      Felhasználó

        Nagyon Nagyon köszi
        Az enyém miért nem ment?

        #1933703
        admin
        Adminisztrátor

          Ha scanf -el double -t olvasol be akkor „%lf” -t kell használnod, mivel a double ^= long float

          Olyan formába ahogyan a scanf-el az újsot kezelted az nem működik:((
          érdemes ilyen eseteke fgets fg használni ami egy sort olvas be, és utána az adott sort kiértékelni.

          #1933704
          emberk
          Felhasználó

            Követem az ötleted és valóban sokal kellemesebb a dolog nem olyan érthetelen hogy miért nem megy pedig elvileg logikus
            Már így nagyon könnyű a dolgom. (mivel működik) 😉

            #1933705
            admin
            Adminisztrátor

              Bocs, srácok, tudom ez nem szép… Egy haverom kért meg rá nézzem meg, mit tudnék csinálni vele. Kapott egy feladatot, de nekem nincs idõm foglalkozni vele…. )-:
              Tud valaki valamit mondani rá, hogy mit csináljon? Valakinek nincs kész hasonló véletlenül?

              1. Készítsen egy számológépet a következõk szerint:

              – A számológép megjelenítése a következõ lehet:
              ┌─────────────────┐
              │ ┌─────────────┐ │
              │ │E 146.11│ │
              │ └─────────────┘ │
              │ ┌─┐ ┌─┐ ┌─┐ │
              │ │Q│ │%│ │C│ │
              │ └─┘ └─┘ └─┘ │
              │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
              │ │7│ │8│ │9│ │/│ │
              │ └─┘ └─┘ └─┘ └─┘ │
              │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
              │ │4│ │5│ │6│ │*│ │
              │ └─┘ └─┘ └─┘ └─┘ │
              │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
              │ │1│ │2│ │3│ │-│ │
              │ └─┘ └─┘ └─┘ └─┘ │
              │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
              │ │0│ │.│ │=│ │+│ │
              │ └─┘ └─┘ └─┘ └─┘ │
              └─────────────────┘
              – Kilépés

              – Az utoljára leütött billentyû piros keretben legyen.
              – A Q billentyû a gyökvonást jelenti (sqrt).
              – A C betû lenyomása esetén a kijelzõ tartalmát törölni kell.
              – Az E a kijelzõn a túlcsordulást jelenti
              – A kilépés az ESC billetyûre történjen

              [2. Plusszt jelent, ha megvalósítja a következõket is:
              – A nyilakkal lehet a billentyûzeten mozogni és az ENTER hatására „nyomjuk le” a gombot.
              – További számológépeken meglevõ funkciók (memóriakezelés, szögfüggvények,…)
              ]

              Kicsit ronda lett a gép, de nem is az lenne a lényeg, hanem a kijelzõ kezelése, meg a cancel…. Kicsit bunkóság így kidobni egy feladatot, de nincs rá idõm otthon melóhelyen, meg nincs is fordító, meg fura lenne C-zni úgy, hogy ilyennel nem foglalkozunk….

              Köszike…

              #1873197
              csaba
              Felhasználó

                Ez a diplomamunkám egyikk fontos kis része aé semmi pénzért sem megy.

                Itt egy nagyon egyszerû program!
                Mit rontok el fontos volna a segítség!

                A program után ott lesz a benne lévõ filebõl egy rövid részlet a file több mint 20 Mb

                A progi egy molekuláris dinamika szimolátor lesz a felafûdata eddig annyi hogy az extiel.022 álományból beolvassa az elsõ számot majd 4 sorral lentebb 500 sor elsõ 2 számát azzal számolgat utána egy üres sor megint 500 be a memóba az eddigiek hejére számlgat ……… (A fizikához értek csak sajnos az egészbõl, most tanulok csak programozni)

                Az említett program jól megkommendezve:
                #include
                #include
                #define NELEM2 4
                #define NELEM1 1000

                typedef double matrix [NELEM1] [NELEM2];

                main(void)
                {
                matrix *memo;
                int i=0 , j, ciklus ;
                double xkord , ykord ;
                FILE *tf;

                /* Helyfoglal s ellenõrzéssel */
                memo = (matrix *) calloc( 1 , sizeof(matrix));

                if (! memo) {
                printf(„aniincs elég memória!n”);
                return -1;
                }
                /* Ez megnyitja az extil.022 -t ezzel nincs is baj*/

                if (!(tf = fopen(„extfil.022”, „rt”)))
                {
                fprintf(stderr, „Sikertelen file-nyit si kisérlet!n”);
                exit(-1);
                }

                /* még ez is mûködik látszõlag*/

                fscanf(tf,”%dnnnn”, &ciklus);
                printf(„elvileg 500 ha jo: %d n”, ciklus);

                /* tudom hogy az 5 helyére a ciklust kell írni:csak azt szeretném itt látni hgy a módosítaások*/ /*ellenére marad e az 500 érték ami a …022 elsõ száma*/

                for (i = 0; i < 5 ; i++)
                {
                /* na szerintem ez nem jó, de mért mert ezt dobja ki:
                elvileg 500 ha jo: 500
                akkor lássuk: 0 4.990936 0.000000
                akkor lássuk: 0 4.990936 0.000000
                akkor lássuk: 1 4.990936 0.000000
                akkor lássuk: 1 5.990936 1.000000
                akkor lássuk: 2 4.990936 0.000000
                akkor lássuk: 2 6.990936 2.000000
                akkor lássuk: 3 4.990936 0.000000
                akkor lássuk: 3 7.990936 3.000000
                akkor lássuk: 4 4.990936 0.000000
                akkor lássuk: 4 8.990936 4.000000

                */

                fscanf( tf, „%2.6f %2.6f”, &xkord, &ykord);
                printf(„akkor lássuk: %d %f %f n”,i, xkord, ykord );
                (*memo)[1]=xkord+i;
                (*memo)
                [2]=ykord+i;
                printf(„akkor lássuk: %d %f %f n”,i, (*memo)
                [1], (*memo) [2] );
                };

                free(memo);

                }
                /*és itt jön a feldolgozandó filebõl egy részlet:
                500 999000 847266 5000 1000 2 0
                100.00000 1.00000 50.00000 1000.00000 0.0000010000
                15000.0000000 5.0000000 0.0020000
                6.492520 29.697117 0.000000 1.000000-0.116759E+00-0.606893E-01
                59.822802 38.329144 0.000000 1.000000 0.281617E+00 0.136119E+00
                74.426151 20.403068 0.000000 1.000000 0.178184E+00-0.119522E+00
                82.601481 90.714650 0.000000 1.000000-0.165419E+00-0.109105E+00
                74.296556 27.289441 0.000000 1.000000-0.347553E-01 0.764032E-02
                77.321544 78.268809 0.000000 1.000000-0.136444E-02 0.201329E-01
                84.966457 86.348069 0.000000 1.000000-0.138693E+00-0.795729E-01
                18.553603 42.657599 0.000000 1.000000-0.198751E+00-0.257960E-01
                84.611419 79.834392 0.000000 1.000000-0.428900E-01-0.117605E+00
                0.276001 53.596452 0.000000 1.000000 0.677424E-01-0.562724E-01
                91.031509 95.373888 0.000000 1.000000 0.281195E-01-0.171690E-01
                80.390276 79.466707 0.000000 1.000000-0.193844E-02-0.259591E-02
                7.922157 47.191838 0.000000 1.000000 0.344818E+00 0.885601E-01
                92.136507 74.611943 0.000000 1.000000 0.535790E-01 0.161228E+00
                4.990352 78.527722 0.000000 1.000000 0.371028E-01 0.469914E-01
                60.883236 61.336116 0.000000 1.000000 0.133350E+00-0.988380E-01
                72.227092 5.810033 0.000000 1.000000 0.651267E-01 0.762845E-03
                58.991140 79.113459 0.000000 1.000000 0.125892E-01 0.161237E-01
                50.080953 49.829133 0.000000 1.000000-0.169422E+00-0.117620E+00
                89.032714 73.498785 0.000000 1.000000 0.804797E-01 0.285033E-01
                39.984458 33.862555 0.000000 1.000000-0.112847E-01 0.210433E-01
                53.370011 84.786230 0.000000 1.000000 0.535436E-01-0.458491E-01
                28.768346 53.732689 0.000000 1.000000-0.107200E+00-0.116213E+00
                38.207981 1.906119 0.000000 1.000000 0.984096E-02-0.593227E-02
                26.538034 28.229700 0.000000 1.000000-0.787910E-01 0.179462E-01
                70.879998 38.574264 0.000000 1.000000-0.745004E-01 0.146548E-01
                70.954079 15.091209 0.000000 1.000000-0.254990E+00-0.196221E+00
                20.944098 32.371428 0.000000 1.000000 0.104986E-02-0.106304E+00
                75.650232 64.030795 0.000000 1.000000 0.119309E-01-0.183948E+00
                50.747003 84.887554 0.000000 1.000000-0.158969E-01 0.719681E-01
                44.332224 92.681178 0.000000 1.000000-0.674866E-01-0.119202E+00
                */

              6 bejegyzés megtekintése - 1-6 / 6
              • Be kell jelentkezni a hozzászóláshoz.