Laboratorijas darbs 11. Simbolu virkņu apstrāde

Uzdevums 11.1. Simbolu virknes kopēšanas funkcijas realizācija

Funkcija strcpy() pārkopē vienas simbolu virknes saturu uz otru simbolu virkni (lab11.1.cpp).

#include <iostream>

using namespace std;

 

char *strcpy2 (char *dest, const char *src)

{

    // ADD CODE HERE

};

 

int main()

{

    char s1[20] = "first";

    char s2[20] = "second";

    cout << s1 << endl << s2 << endl;

    strcpy (s1, s2);

    //strcpy2 (s1, s2);

    cout << s1 << endl << s2 << endl;

    return 0;

}

Realizēt savu funkciju strcpy2(), kas veic to pašu ko oriģinālā strcpy(). Šīs funkcijas tehniska specifika ir tāda, ka jauno simbolu virkni funkcija atgriež gan caur pirmo parametru, gan caur atgriežamo vērtību (atgriežamais tips ir char*):

char *strcpy2 (char *dest, const char *src)

const pie otrā parametra nozīmē, ka prototipa līmenī tiek garantēts, ka oriģinālā simbolu virkne funkcijā netiks mainīta.

Pareizā atbilde lab11.1a.cpp.

 

Uzdevums 11.2. Simbolu virkņu konkatenācijas funkcijas realizācija

Funkcija strcat() (simbolu virkņu konkatenācija) pārkopē vienas simbolu virknes saturu otras simbolu virknes beigās (lab11.2.cpp).

#include <iostream>

using namespace std;

 

char *strcat2 (char *dest, const char *src)

{

    // ADD CODE HERE

};

 

int main()

{

    char s1[20] = "first";

    char s2[20] = "second";

    cout << s1 << endl << s2 << endl;

    strcat (s1, s2);

    //strcat2 (s1, s2);

    cout << s1 << endl << s2 << endl;

    return 0;

}

Realizēt savu funkciju strcat2(), kas veic to pašu ko oriģinālā strcat(). Arī šīs funkcijas tehniska specifika ir tāda, ka jauno simbolu virkni funkcija atgriež gan caur pirmo parametru, gan caur atgriežamo vērtību (atgriežamais tips ir char*):

char *strcat2 (char *dest, const char *src)

Pareizā atbilde lab11.2a.cpp.

 

Uzdevums 11.3. Simbolu virkņu salīdzināšanas funkcijas realizācija

Funkcija strcmp() salīdzina simbolu virknes uz vienādību (lab11.3.cpp).

#include <iostream>

using namespace std;

 

int strcmp2 (const char *s1, const char *s2)

{

    // ADD CODE HERE

};

 

int main()

{

    char s1[20] = "first";

    char s2[20] = "second";

    char s3[20] = "first";

    char s4[20] = "firs2";

    cout << strcmp (s1, s2) << endl;

    cout << strcmp (s2, s1) << endl;

    cout << strcmp (s1, s3) << endl;

    cout << strcmp (s1, s4) << endl;

    /*cout << strcmp2 (s1, s2) << endl;

    cout << strcmp2 (s2, s1) << endl;

    cout << strcmp2 (s1, s3) << endl;

    cout << strcmp2 (s1, s4) << endl;*/

    return 0;

}

Realizēt savu funkciju strcmp2(), kas veic to pašu ko oriģinālā strcmp(). Ja abas virknes ir vienādas, tad funkcija atgriež 0, citādi -1 vai 1 (-1, ja pirmā virkne ir leksikogrāfiski mazāka nekā otrā; 1, ja lielāka):

char *strcmp2 (const char *s1, const char *s2)

Pareizā atbilde lab11.3a.cpp.