C programozás

Kezdőlap Fórumok Programozás C programozás

10 bejegyzés megtekintése - 211-220 / 352
  • Szerző
    Bejegyzés
  • #2016306
    kelemengabor
    Felhasználó

      hát, a ctype.h headerben van egy toupper() [szerk: na, olvasni se tudok, nagybetûsítünk, persze] függvény, ez a 3. pontra jó, meg van egy isalpha(), ez a 2.-ra jó, az elsõre valszeg magadnak kell megoldást találni, de az is egyszerû, kell egy fv, amiben van egy switch, ami végignézi hogy a bemenõ karakter valamely ékezetes betû-e és ha az, akkor visszaadja ékezet nélküli verzióban. Aztán a szöveget karakterenként beolvasni, átnyomni a 3 fv-n és kész is.

      #2016307
      szati
      Felhasználó

        🙂

        #2016308
        kelemengabor
        Felhasználó
          szati wrote:
          🙂
          #2016309
          szati
          Felhasználó

            #include
            #include
            #include
            #include

            char  toenglish(int c) //egy magyar karaktert angollá alakít
            {
            if(!strcmp(„ö”, &c)){
            c = ‘o’;
            }

            if(!strcmp(„õ”, &c)){
            c = ‘o’;
            }

            if(!strcmp(„[code]#include
            #include
            #include
            #include

            char  toenglish(int c) //egy magyar karaktert angollá alakít
            {
            if(!strcmp(„ö”, &c)){
            c = ‘o’;
            }

            if(!strcmp(„õ”, &c)){
            c = ‘o’;
            }

            if(!strcmp(„

            #2016310
            jzombi
            Felhasználó

              Akkor marad az egyszerû megoldás: egyesével a karaktereket egy switch-el ékezetmentesíted, majd mondjuk ugyanígy egy switch-el nagybetût csinálsz belõle (angol abc->25 elágazás). Kicsit ronda megoldás, de ha más nincs, ez is megteszi.
              Alternatív lehetõség 1: gondolom van c-ben is valami Pos eljárás (visszaadja, hogy egy adott stringben egy másik szerepel-e és ha igen, hol szerepel elõször). Csinálsz egy stringet a kisbetûs angol sbc-bõl, még egyet a nagybetûsbõl, és ha az adott karakter nincs benne egyikben sem-> ki kell törölni, ha a kisbetûsben van benne, akkor a nagybetûs azon poziciójában levõ karakterére cseréled, ha a nagybetûsben van, akkor hagyod.
              Alt. 2: veszel egy kódtáblát, és ha a karakter benne van a kisbetû tartományban, akkor levonsz a kódjából annyit, hogy a nagybetûs megfelelõje legyen, ha a nagybetûsben van benne, akkor hagyod, ha egyikben sem, akkor törlöd.

              Persze számos hasonló megoldást ki lehet még találni, és nem is tart olyan sokáig megírni ezeket. Sok sikert az éretségihez:)

              (Ez éppen az õszi feladat volt nem? Asszem éppen ezt kellet csinálnom, csak én pascalban toltam:)

              #2016311
              szati
              Felhasználó

                a 25ös eltolás mûkszik ASCII-nél de egyépkent nem nagyon
                UTF8-nál semmiképp nem

                Ami még szebbé teszi a dolgot az az hogy intbe kell beolvasni a karaktereket mert char ba nem férnek el az UTF8 kódolás miatt

                Igen október-novemberi vizsgaidõszakban volt.

                #2016312
                jzombi
                Felhasználó

                  Igaz, UTF8-at nem ismerem, de szvsz a string-bõl kikeresõs módszer azzal is mülködik.
                  Az UTF-8-ról úgy tudom, úgy mülködik mint az ascii az elsõ 128 jelig, tehát addig megegyezik a karakterkészlete. A speciális karaktereket pedig több bájton tárolja.

                  #2016313
                  pointux
                  Felhasználó

                    „UTF8-nál semmiképp nem”
                    Az utf-ben az angol karakterek ugyanazok, a nem angol karakterek pedig több, mint 8 bitesek. Innentõl eleve különleges elbánást kívánnak. (glibbel egyébként át lehet konvertálni az utf-et, vagy utf-be, stringstream használatával)
                    Az ékezetes betûk maradnak switch-el… mert arra nem igazán tudok megoldás. A nagybetûs dologra, meg van könyvtári függvény. (Különben nem kizárt, hogy az ékezetesre is van függvény…)
                    (Külön inttel vacakolás, meg… eleve, hogy finoman szóljak, nem elegáns.)

                    #2016314
                    szati
                    Felhasználó

                      A nagybetûre van könyvtári függvény a switch-et meg megpróbálom

                      #2016315
                      szati
                      Felhasználó

                        int toenglish2(int c){

                        switch (c) {
                        case ‘ö’: c = ‘o’; break;
                        case ‘[code]int toenglish2(int c){

                        switch (c) {
                        case ‘ö’: c = ‘o’; break;
                        case ‘

                      10 bejegyzés megtekintése - 211-220 / 352
                      • Be kell jelentkezni a hozzászóláshoz.