Кадндидат-студентски изпит по информатика на C++

С++ решаваня на задачи по информатика, от кандидатстудентски изпити

Функция str_replace

2 коментара

Функция str_replace на C++

Да се напише Функция str_replace на C++, която да търси подниз в даден низ и да го замества с друг такъв!

Решение на C++:


/*
============================================================================
Name : str_repalce.cpp
Author : Ivan Stoyanov
Version : 1.0
Web site : https://izpitinformatica.wordpress.com/
http://www.koalapress.com/chast2-programirane-na-cpp.html

Description : Да се напише програма която декларира функция str_repalce, която
да търси подниз в даден низ и да го замества с указа друг такъв.
============================================================================
*/
#include<iostream>

using namespace std;

/**
* Декларира се функция за заместване на подниз. Функцията приема следните параметри:
* search - търсеният подниз
* replace - низът който ще замести търсеният
* haystack - низът в който ще се търси
* size - размерността на низа в който ще се търси
*
* Функцията връща
*/
char * str_replace(char const *search, char const *replace, char const *haystack, unsigned int const size)

/**
* Главна функция на програмата
*/
int main()
{
    char str[1001] = "ala bala";
    std::cout << str_replace("ala", "eli", str, 1001) << std::endl;

    return 0;
}

/**
* Декларира се функция за заместване на подниз. Функцията приема
* следните параметри:
* search - търсеният подниз
* replace - низът който ще замести търсеният
* haystack - низът в който ще се търси
* size - размерността на низа в който ще се търси
*
* Функцията връща
*/
char * str_replace(char const *search, char const *replace, char const *haystack, unsigned int const size)
{
    char * ph = (char *)haystack;

    if(!*search) { return ph; }
    if(!*replace) {
        *ph = '';
        return ph;
    }

    char * result = new char[size];
    char *pres = result;
    *pres = '';

    do {
        char *ph1 = ph;
        char *ps = (char *)search;

        while( *ph1==*ps && *ph1 ) { ph1++; ps++; }

        if(!*ps) {
            char *prep = (char *)replace;
            while( *prep) {
                *pres++ = *prep++;
                ph++;
            }
        }
        else {
            *pres++=*ph++;
        }
    }
    while(*ph);

    ph = (char *)haystack;
    pres = result;
    while( *ph++=*pres++);

    delete []result;

    return (char *)haystack;
}

Written by Stoyanoff

20/04/2014 в 21:39

2 коментара

Subscribe to comments with RSS.

  1. В началото трябва да има include iostream, иначе не се компилира.

    Али Баба

    08/08/2014 at 20:14

  2. В началото трябва да има include , иначе не се компилира.

    Али Баба

    08/08/2014 at 20:08


Вашият коментар

Попълнете полетата по-долу или кликнете върху икона, за да влезете:

WordPress.com лого

В момента коментирате, използвайки вашия профил WordPress.com. Излизане /  Промяна )

Google photo

В момента коментирате, използвайки вашия профил Google. Излизане /  Промяна )

Twitter picture

В момента коментирате, използвайки вашия профил Twitter. Излизане /  Промяна )

Facebook photo

В момента коментирате, използвайки вашия профил Facebook. Излизане /  Промяна )

Connecting to %s

%d блогъра харесват това: