Садржај

Регуларни изрази - задаци

Ови задаци су већ били постављени на страници Стрингови - задаци. Овај пут се очекује да их решите користећи регуларне изразе.

1. Написати програм који уклања водеће нуле из IP адресе. На пример, за унету адресу 192.068.005.010 треба исписати 192.68.5.10.

2. Правописи разних језика прописују различите начине писања реалних бројева. Тако се на енглеском језику знак , користи за раздвајање група од по три цифре у целобројном делу, а знак . се користи да одвоји децимални (разломљени) део броја. У текстовима на српском језику знакови , и . имају обрнуте улоге.

Написати програм који за дати запис броја по правопису енглеског језика приказује запис истог броја по правопису српског језика. На пример, за дати запис 28,517,324.28 треба исписати 28.517.324,28.

3. Написати функцију која за дати стринг враћа низ стрингова, добијених растављањем улазног стринга помоћу запета и уклањањем белина на почетку и крају сваког дела, с тим да се запете под наводницима не користе за раздвајање. На пример, за стринг

Petar Markovic  , "matematika, fizika"  ,  5  ,  "odbojka, stoni tenis"

функција треба да врати низ од следећа четири стринга:

"Petar Markovic"
"matematika, fizika"
"5"
"odbojka, stoni tenis"

Написати и програм који демонстрира рад функције (стрингове исписивати без наводника).

4. Написати програм који проверава да ли дати стринг испуњава услове да буде јака лозинка. Лозинка је јака ако се састоји од бар 10 карактера, садржи бар једно мало слово, бар једно велико слово, бар једну цифру и бар један знак који није алфанумерик (тј. није ни слово ни цифра ни доња црта). На пример, лозинка Ve#78_set14 јесте јака, а лозинка OtkrivanjeLozinke није.

5. Написати програм који дати текст претвара у име променљиве на следећи начин:

  • Текст се растави на делове, користећи белине као раздвајач

  • Из сваког дела се уклоне знаци који нису алфанумерици

  • Почетно слово сваког дела осим првог се конвертује у велико, а сва остала слова у мала

  • Добијени делови се споје

На пример, за текст broj malih, raznovrsnih kupovina име променљиве би било brojMalihRaznovrsnihKupovina

6. Написати програм који преправља име променљиве из тзв. стила camelCase у стил snake_case. На пример, за унето nekoDugackoIme треба исписати neko_dugacko_ime.

7. Написати програм који проверава да ли се дато име фајла уклапа у дату маску. У масци знак ? замењује тачно један, било који карактер, а знак * замењује било који низ од нула или више карактера у имену фајла. На пример, име фајла program.cs се уклапа у маску *.cs, а име фајла a-12.txt се не уклапа у маску a??.txt. Сваки од знакова ? и * може да се појави више пута у масци.

8. Написати програм који проверава да ли су два дата текста иста, ако се игноришу сувишне белине и интерпункција, а мала слова се не разликују од великих. Од више узастопних белина, сувишне су све осим једне. На пример, за унете текстове:

ko rano rani, dve srece grabi.
Ko rano rani     dve srece grabi

програм треба да испише DA.

9. Написати програм који израчунава и исписује збир свих бројева који се појављују у тексту. На пример, за унети текст

dokument A ima 12 stranica, a program B ima 537 linija koda.

програм треба да испише 549, јер је \(12+537=549\).

10. Написати програм који из датог фајла са C# кодом уклања све коментаре. Програму се задају путање до улазног и излазног фајла. На пример, ако улазни фајл изгледа овако:

using System;

class Program
{
    /*
    program koji izracunava zbir n datih brojeva,
    a iz koga treba izbaciti komentare oba tipa
    tj. i ove // i one druge
    /*
    static void Main(string[] args)
    {
        Console.WriteLine("Iz ovog programa treba ukloniti sve");
        Console.WriteLine("komentare, tj. i one koji pocinju ovako /*");
        Console.WriteLine("a zavrsavaju ovako */, kao i one koji");
        Console.WriteLine("pocinju ovako // i traju do kraja reda");

        int n = int.Parse(Console.ReadLine()); // unosimo n
        int s = 0;
        for (int i = 0; i < n; i++)
        {
            int a = int.Parse(Console.ReadLine());
            s += a; /*sabiramo*/
        }
        // ispisujemo
        Console.WriteLine(s);
    }
}

излазни фајл треба да изгледа овако:

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Iz ovog programa treba ukloniti sve");
        Console.WriteLine("komentare, tj. i one koji pocinju ovako /*");
        Console.WriteLine("a zavrsavaju ovako */, kao i one koji");
        Console.WriteLine("pocinju ovako // i traju do kraja reda");

        int n = int.Parse(Console.ReadLine());
        int s = 0;
        for (int i = 0; i < n; i++)
        {
            int a = int.Parse(Console.ReadLine());
            s += a;
        }
        Console.WriteLine(s);
    }
}

11. Написати програм који допуњава фајл са оценама. Формат и улазног и излазног фајла је csv (comma separated values, вредности раздвојене запетама). Програму се из командне линије редом задају: путања до улазног фајла, назив предмета, оцене из тог предмета у једном реду, и на крају путања до излазног фајла. Називи свих предмета се налазе у првом реду улазног фајла. Подразумева се да је улазни фајл исправан и да је низ оцена одговарајуће дужине.

На пример, ако су улазни подаци

a.csv
matematika
3 4 4 2 5 4
b.csv

а улазни фајл a.csv изгледа овако

ime, srpski, engleski, matematika, programiranje, vladanje
Pera, 5, 4, , , 5
Jovan, 3, 5, , , 5
Marko, 5, 5, , , 4
Ana, 4, 4, , , 5
Luka, 4, 4, , , 5
Marija, 4, 5, , , 5

онда излазни фајл b.csv треба да изгледа овако:

ime, srpski, engleski, matematika, programiranje, vladanje
Pera, 5, 4, 3, , 5
Jovan, 3, 5, 4, , 5
Marko, 5, 5, 4, , 4
Ana, 4, 4, 2, , 5
Luka, 4, 4, 5, , 5
Marija, 4, 5, 4, , 5
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+