Responsive image Boda Szilárd weblapja

Elmélet:
Megtanulandó függvények:
insert
replace
append
find
transform

Laborfeladatok:

1. Írjunk egy programot, amely beolvas egy str1 stringet, majd egy str2 stringet. Ezután beolvas egy pos változót, majd az str2 stringet beilleszti a pos helyre az str1 stringben.


Bemenet
  • str1 = "alfa"
  • str2 = "ma"
  • pos = 2



Kimenet
  • almafa

2. Írjunk egy programot, amely beolvas egy str1 és egy str2 stringet. Ezután megkérdezi, hogy az str1 melyik poziciójától és hány karaktert írjon felül az str2 stringgel.

Bemenet
  • str1 = "kert"
  • str2 = "ekes"
  • pos = 3
  • karakterekSzama = 1



Kimenet
  • kerekes

3. Írjunk egy programot, amely az append függvényt használva beolvas két stringet, utána a második string első szavát átmásolja az első stringbe, majd az első stringet kiírja.


Bemenet
  • alma
  • fa es erdo



Kimenet
  • almafa

4. Írjunk egy programot, amely beolvas két stringet, majd kiírja azt az indexet, ahol a második előfordul az elsőben. Ha nem fordul elő, akkor a "nincs benne" szöveget írja ki.


Bemenet
  • edesburgonya
  • burgonya



Kimenet
  • 4

pelda 2

Bemenet
  • burgonya
  • krumpli



Kimenet
  • nincs benne


5. Írjunk programot, mely meghatározza, hogy egy beolvasott string hány szót tartalmaz. Szóelválasztó karakternek csak a space-et tekintjük. (itt használjuk a getline(cin, stringnevet) a beolvasáshoz)


Bemenet
  • A mi kertunkben sok gyumolcsfa van: almafa, kortefa, barackfa, cseresznyefa, szilvafa, diofa



Kimenet
  • 12

6. Írjunk programot, mely egy beolvasott string minden egyes "m" mássalhangzóját kicseréli "mpm"-re.


Bemenet
  • alma
  • Emma



Kimenet
  • almpma
  • Empmmpma

7. Írjunk egy programot, amely beolvas egy stringet, melyben kis és nagybetűk is vannak, majd megkérdezi, hogy kis vagy nagybetűssé szeretnénk-e alakítani a szöveget, s transform, illetve kivonás/összeadással is megoldjuk.


Bemenet
  • bARAck
  • kis



Kimenet
  • barack

Pluszfeladat:

1. Írjunk egy programot, amely beolvas két stringet, s1, s s2-t. S1 tetszőlegesen hosszú, s2 mindig 2 karakterből áll. Majd az összes helyen, ahol s2 előfordul az s1 ben,
alakítsuk át az s1 ben a két karaktert nagybetűre.


Bemenet
  • s1 = szerszámosláda szeggel és szigetelőszalaggal
  • s2 = sz



Kimenet
  • SZerSZámosláda SZeggel és SZigetelőSZalaggal

Tipp: Ha egy stringet nagybetűssé szeretnénk alakítani, használhatjuk a transform függvényt a toupper rel. Ha pl s1 stringet szeretném nagybetűssé tenni, akkor

transform(s1.begin(),s1.end(),s1.begin(), ::toupper);

          t használok. A transform használatához szükség van az algorithm könyvtárra.


Megoldott laborfeladatok:

1. Írjunk egy programot, amely beolvas két stringet, s kiírja, hogy a második hányszor fordul elő az elsőben.

#include <iostream>
#include <string>

using namespace std;

int main()

{

    string s1, s2;

    cout << "kerem a beolvasando stringet ";

    getline(cin, s1);

    cout << "Kerem a keresendo stringet";

    cin >> s2;

    int elofordul = 0;

    size_t hely;



    //megkeresi az elso helyet, ahol az s2 string elofordul

    hely = s1.find(s2);

    // ha a string megvan benne, akkor noveljuk az elofordul valtozot

    if (hely != string::npos)

    {

        elofordul++;

    }

    //ciklusosan ismeteljuk a fenti utasitasokat, vigyazva arra, hogy mindig

    //az elozo hely utan talalt helyen keressuk a keresendo stringet

    while(hely!=string::npos)

    {

        hely= s1.find(s2, hely+1);

        if (hely != string::npos)

        {       
elofordul++;
        }
    }



    cout << elofordul << endl;



    return 0;

}


2. Írjunk egy programot, amely beolvas egy stringet, s kicseréli az összes "a" karaktert "A" ra.


#include <iostream>

#include <string>



using namespace std;



int main()

{

    string s1, s2;

    cout << "kerem a beolvasando stringet ";

    getline(cin, s1);



    int elofordul = 0;

    size_t hely;



    //megkeresi az elso helyet, ahol az "a" karakter elofordul

    hely = s1.find("a");

    // ha a karakter megvan benne, akkor csereljuk ki A ra

    if (hely != string::npos)

    {

        s1.replace(hely, 1, "A");

    }

    //ciklusosan ismeteljuk a fenti utasitasokat,

   //vigyazva arra, hogy mindig a mar talalt hely utan keressuk a keresendo karaktert

    while(hely!=string::npos)

    {

        hely= s1.find("a", hely+1);

        if (hely != string::npos)
{       
s1.replace(hely, 1, "A");
        }

    }

    cout << s1 << endl;

    return 0;

}