CyrSyS

Hozzászólások

10 bejegyzés megtekintése - 11-20 / 73
  • Szerző
    Bejegyzés
  • Hozzászólás: C programozás #2016396
    CyrSyS
    Felhasználó

      Szia Zoli!

      Hogy kell lezárni a vizsg végét -al? Ezt nem értem! A hosszát a getline adja! Továbbra is blamába vagyok! Álljon itt egy teljes program ami bizonyítja hogy működik az elején felvetett probléma ellentéte:

      Code:
      #include
      #include
      #include
      #include
      #include
      #include

      #define MAX 100

      int getline(char s[],int lim);
      int egesz(char s[]);

      struct adatok{
        int suly;
        int magassag;
        float BMI;
        int sulycsop;
        };

      int main(void){

        struct adatok M[MAX];
        int ok,vege,i,db;
        char vizsg[4];
        char strseged[10];

        clrscr();
        printf(„ttttBMI számoló program!n”);
        for(i=0;i<=7;i++) printf("----------");       db=vege=0;       do{ /* Testtömeg bekérése */ ok=0; do{     printf("nKérem a testtömeget(kg): ");     i=getline(vizsg,4);     if (i==0) vege=1;     else if (i>3) printf(„nTúl hosszú a megadott érték!n”);
          else if (!egesz(vizsg)) printf(„nA megadott érték nem egész szám!n”);
          else
          {
            M[db].suly=atoi(vizsg);
            if (M[db].suly<20 || M[db].suly>200) printf(„nA megadott tömeg értéknek 20 és 200 között kell lennie!n”);
            else ok=1;
          }

            } while (!ok && !vege);

            if (!vege) {

      /* Magasság bekérése  */

      ok=0;
        do{

          printf(„nKérem a magasságot(cm): „);
          i=getline(vizsg,4);
          if (i==0) printf(„nA magasságot mindenképp megkell adnod!n”);
          else if (i>3) printf(„nTúl hosszú a megadott érték!n”);
          else if (!egesz(vizsg)) printf(„nA megadott érték nem egész szám!n”);
          else
      {
      M[db].magassag=atoi(vizsg);
      if (M[db].magassag<150 || M[db].magassag>250) printf(„nA megadott magasság értéknek 150 és 250 között kell lennien”);
      else ok=1;
      }
            }while (!ok);

            /* BMI érték meghatározása */
            M[db].BMI=M[db].suly/pow(M[db].magassag/100.0,2);
            if (M[db].BMI<18.5) M[db].sulycsop=0;
            else if (M[db].BMI>=18.5 && M[db].BMI<25) M[db].sulycsop=1;
            else if (M[db].BMI>=25 && M[db].BMI<30) M[db].sulycsop=2;
            else
        M[db].sulycsop=3;

            db++;
            }

          }while(!vege);

        clrscr();
      printf("nSorszám testtömeg megasság érték");
      for (i=0;i

      Hozzászólás: C programozás #2016394
      CyrSyS
      Felhasználó

        Na asszem rájöttem! „char vizsg[4];” deklarált sztring tárolási osztálya lesz a hiba! Ha ezt a stringet a MAIN-en belül deklarálom és eléje biggyeszem mondjuk a register tárolási osztályt mükszik! Legegyszerűbb módon a stringet kiteszem globálisba (MAIN elé) ott mükszik! Nagyon különös. Akkor más fájlba miért fut úgy a kód hogy a string a MAIN-en belül van deklarálva?

        Hozzászólás: C programozás #2016393
        CyrSyS
        Felhasználó

          Kedves zoli!

          Átállítottam a memória modellt! változó rendezés alatt mit értesz? Tegyem ki őket a Main-en kívül hogy globális tárolási osztállyal rendelkezzen? Előző hozzászólásom alapján további tipp?

          Hozzászólás: C programozás #2016392
          CyrSyS
          Felhasználó

            Hát nem értem! Mindent átnéztem és nem jó! A fájl neve BAD.C ezzel sincs gond! Feladom pedig nekem ebből vizsgáznom kell és kötelező Turbo C-t használnom! Amúgy annyit még hozzáteszek hogy van egy csomó fgv amikből feladat alapján kell válogatnom! Mivel vizsgán 90 perc áll rendelkezésre ezért Jegyzettömbbel alkotom meg az alapvető program szerkezetet majd megírom a main törzsét! Esetleg a jegyzettömbbe való kód másolásnál nem figyelek valamire? Komolyan nemtudom! A kódnak hibátlannak kell lennie mert mondom más fájl esetén tökéletesen fut! :(((

            Code:
            #include
            #include
            #include
            #include
            #include

            int getline(char s[],int lim);
            int egesze(char s[]);

            void main(void){

              int i;
              char vizsg[4];

              clrscr();

                i=getline(vizsg,4);
                if (!egesze(vizsg)) printf(„Nem számot adtál meg!”);
            }

            int getline(char s[],int lim){
                    int c,i;
                    for(i=0;i=’0′ && s[i]<='9')++i; if(i==kezd || s[i]!=' ' && s[i]!='t' && s[i]!='n' && s [i]!=0) return 0; else return 1;}

            Hozzászólás: C programozás #2016390
            CyrSyS
            Felhasználó
              Code:
              int getline(char s[],int lim){
                      int c,i;
                      for(i=0;i
              Hozzászólás: C programozás #2016388
              CyrSyS
              Felhasználó

                Bocsánat valamiért rosszul küldte el a getline fgv-t! Itt a – remélhetőleg jó – :

                int getline(char s[],int lim){
                        int c,i;
                        for(i=0;i=c;
                        s=’’;
                        while(c!=EOF&&c!=’n’)c=getchar();
                return(i); }

                Hozzászólás: C programozás #2016387
                CyrSyS
                Felhasználó

                  Sziasztok!

                  Óriási gondom akadt és nagyon nagyon fontos hogy rájöjjek mi a hiba!

                  Kezdem azzal hogy én is programozgatok C nyelven, de a – muszájból – használt programfejlesztő környezet a Turbo C! A probléma számomra misztikus ugyanis nem kódbeli problémák vannak (sztem) hanem valami rejtélyes valami amitől legszívesebben kitépném a hajam mert annyira dühítő! No akkor miről is van szó:

                  Készítettem egy alapprogramot ami bekér egy számot és ellenőrzi hogy egész-e! Ha nem egész kiír valami hibát és leáll a program! Hát ez ultra! Kezdetben meg is írtam működött. Készítettem egy másik programot amibe szintén számot kellett vizsgálni hogy egész-e! Ok hát alkalmaztam ugyanazt a kódsorozatot és bumm! Előjött a relytély! Nem működött! hát mondom ez mi! Nem fejtegetem jöjjön 2 kód ami ugyanaz gyakorlatilag, de hogy poén legyen a dologból az egyik működik, a másik nem 😀

                  Íme a működő kód! :

                  #include
                  #include
                  #include
                  #include
                  #include
                  #include

                  int getline(char s[],int lim);
                  int egesze(char s[]);

                  void main(void){

                    int i;
                    char vizsg[4];

                    clrscr();

                      printf(„Kerem a testtomeget(kg): „);
                      i=getline(vizsg,4);
                      if (!egesze(vizsg)) printf(„nA megadott érték nem egész szám!n”);

                  }

                  int getline(char s[],int lim){
                          int c,i;
                          for(i=0;i=’0′ && s
                  #include
                  #include
                  #include
                  #include

                  int getline(char s[],int lim);
                  int egesze(char s[]);

                  void main(void){

                    int i;
                    char vizsg[4];

                    clrscr();

                      i=getline(vizsg,4);
                      if (!egesze(vizsg)) printf(„A megadott szám nem egész!”);
                  }

                  int getline(char s[],int lim){
                          int c,i;
                          for(i=0;i=’0′ && s
                  <='9')++i;
                  if(i==kezd || s
                  !=’ ‘ && s!=’t’ && s!=’n’ && s !=0) return 0;
                  else return 1;}

                  Primitív eltérések vannak! És nem működik!  ??? ??? ??? ???
                  Aki esetleg jártas a Turbo C-be akkor annyit érdekes módon sikerült felfedeznem hogy ha F8-al (STEP) -el futtatom soronként a kódot akkor működik! Hát uraim én ezt annyira nem értem! Mi lehet a gond? :((((((

                  Hozzászólás: C #2078083
                  CyrSyS
                  Felhasználó

                    Jelenleg 3 nyelven tanulok. Assembly,C, és VB. Ezek előtt csak 1 nyelven erőltették belém a tudást. Ez a Pascal volt. Nagyon szenvedtem vele. Főleg a dinamikus tárkezelés része nagyon vérhányás volt részemről. A vicc az hogy assembly jóval nehezebb nyelv és jobban értem. Ami viszont előnyőmre szól, hogy a C nyelv tanulása során sokkal közérthetőbben látom át a pointerek működését. Én továbbra is azt mondom hogy Pascal csak egy  szükséges reklám a programozás alapokhoz+algoritmizálás.

                    Hozzászólás: C #2078069
                    CyrSyS
                    Felhasználó

                      Én TurboC-be tanulgatom a C-t. Igaz muszájból kell ezt használnom mert ebbe kell a vizsgát is megírni. Mivel a könyv amiből tanulok az is ezt ajánlja illetve a Devcpp-t ezért inkább maradtam a TurboC-nél. Mondjuk aki Pascalt megszokta az a TurboC mint környezettől nem fog megijedni. Sztem jó.

                      Hozzászólás: Fedora 8 kiadasok #2127039
                      CyrSyS
                      Felhasználó

                        Én KDE párti vok. Tehát az egyik negatívumra nem adok hogy lassan indul 🙂
                        Amúgy szép.

                      10 bejegyzés megtekintése - 11-20 / 73