Форум программистов, компьютерный форум CyberForum.ru

функции замени в строке - C++

Восстановить пароль Регистрация
 
misha idiot
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 11
06.05.2010, 22:35     функции замени в строке #1
сори я трохи тупуват ви мо пидсказать мне з чево мне начать
функция заменяет в строке одну заданную комбинацию символов другой заданной комбинацией
помогите плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
krolex
9 / 9 / 1
Регистрация: 27.01.2010
Сообщений: 63
07.05.2010, 00:07     функции замени в строке #2
Библиотеки: string.h, stdlib.h
1) определение длины строки: size_t strlen(char *s);
2) конкатенация строк:
char *strcat(char *dest,const char *src);
3) сравнение строк:
int strcmp(const char *s1,const char *s2);
4) копирование строки src в dest:
char *strcpy(char *dest,const char *src);
5) копирование фрагмента dest строки src:
char *strncpy(char *dest,const char *src,size_t maxlen);
6) поиск символа c в строке s:
сhar *strchr(const char *s, int c);
7) поиск подстроки s2 в строке s1:
char *strstr(const char *s1, const char *s2);
8) поиск токенов в строке:
char *strtok(char *strToken,const char *strDelimit);
9) преобразование строки в целое число:
int atoi(const char *s);
10) преобразование строки в вещественное число:
double atof(const char *s);
11) преобразование числа в строку:
char *itoa(int value,char *s,int radix);
12) преобразование числа в строку:
char *_gcvt( double value, int digits,
char *buffer );
13) преобразование числа в строку:
char *_ecvt(double value,int count,int *dec,
int *sign);
count - количество цифр, dec,sign – позиции точки и знака
14) преобразование числа в строку:
char *_fcvt(double value,int count,int *dec,int *sign);
count - количество десятичных цифр
misha idiot
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 11
07.05.2010, 00:23  [ТС]     функции замени в строке #3
спасиба и за ето
Mr.X
Эксперт С++
 Аватар для Mr.X
2799 / 1575 / 246
Регистрация: 03.05.2010
Сообщений: 3,656
07.05.2010, 08:58     функции замени в строке #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//MS VS
#include "stdafx.h"
#include <string>
#include <iostream>
 
void replace_substr
    (
        std::string&  s, 
        std::string   substr_old, 
        std::string   substr_new
    )
{
    size_t pos = s.find(substr_old);
    if(pos == std::string::npos) return;
    s.replace(pos, substr_old.length(), substr_new);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string s;
    std::string old_subs;
    std::string new_subs;
    for(;;)
    {
        std::cout << "Input string: ";
        std::cin >> s;
        std::cout << "zamenit podstroku: ";
        std::cin >> old_subs;
        std::cout << "na podstroku: ";
        std::cin >> new_subs;
        replace_substr(s, old_subs, new_subs);
        std::cout << "Result: "
                  << s
                  << std::endl
                  << std::endl;
    }
    return 0;
}
misha idiot
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 11
08.05.2010, 20:24  [ТС]     функции замени в строке #5
огромное спасибо!!!!!!!!!

Добавлено через 9 часов 40 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
char *str1 = "Text";
char *str2 = "\"Text\"";
int main()
{
 
   modstring2 (str2);
   printf( str2 );
 
}
char* modString2(char *string)
{
    int len, len1, len2, n1, n2, i, j, k;
    int *numpos;
    char *result;
    len = strlen(string);
    len1 = strlen(str1);
    len2 = strlen(str2);
    n1 = 0;
    numpos = (int*)malloc(sizeof(int) * (len / len1 + 1));
    for(i = 0; i <= len - len1; ++i)
    {
        j = 0;
        while(j < len1 && string[i + j] == str1[j])
            ++j;
        if(j == len1)
        {
            numpos[n1++] = i;
            i += len1 - 1;
        }
    }
    if(!n1)
    {
        result = (char*)malloc(sizeof(char) * (len + 1));
        strcpy(result, string);
    }
    else
    {
        result = (char*)malloc(sizeof(char) * (len + (len2 - len1) * n1 + 1));
        for(i = 0, j = 0, n2 = 0; i < len; ++i, ++j)
            if(n2 == n1 || numpos[n2] > i)
                result[j] = string[i];
            else
            {
                for(k = 0; k < len2; ++k, ++j)
                    result[j] = str2[k];
                i += len1 - 1;
                --j;
                ++n2;
            }
        result[j] = '\0';
    }
    free(numpos);
    return result;
}
посматрите пожалуста и скажить що в ней не так

Добавлено через 23 часа 9 минут
вот работающая лаба
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
char str1[] = "hello kolya";
char str2[] = "Misha";
char str3[] = "hello kolya brather";
 
char modString (char string[])
{
    int len, len1, len2, n1, n2, i, j, k;
 
    char result[256];
    len = strlen(string);
    len1 = strlen(str1);
    len2 = strlen(str2);
    int numpos[255];
    n1 = 0;
    for(i = 0; i <= len - len1; ++i)
    {
        j = 0;
        while(j < len1 && string[i + j] == str1[j]) ++j;
 
        if(j == len1)
        {
            numpos[n1++] = i;
            i += len1 - 1;
        }
    }
    if(!n1)
    {
        for(i = 0; i <= len; ++i)
        result[i] = string[i];
            }
    else
    {
            for(i = 0, j = 0, n2 = 0; i < len; ++i, ++j)
            if(n2 == n1 || numpos[n2] > i)
                result[j] = string[i];
            else
            {
                for(k = 0; k < len2; ++k, ++j)
                    result[j] = str2[k];
                i += len1 - 1;
                --j;
                ++n2;
            }
        result[j] = '\0';
    }
    for(i = 0; i <= len, result[i]!='\0'; ++i)
    printf("%c", result[i]);
    return 0;
}
 
  void main()
{
   clrscr ();
   modString ( str3 );
    getch();
 
 
}
Yandex
Объявления
08.05.2010, 20:24     функции замени в строке
Ответ Создать тему
Опции темы

Текущее время: 00:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru