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

Работа со строковыми переменными без использования string.h - C++

Восстановить пароль Регистрация
 
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 17:56     Работа со строковыми переменными без использования string.h #1
Нужно заменить в строке s множественные последовательности вхождений символа t на один. То есть "aaabcde" заменяется на "abcde". Существует ли аналог такой функции в string.h?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
02.07.2011, 18:03     Работа со строковыми переменными без использования string.h #2
врядли
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2011, 18:05     Работа со строковыми переменными без использования string.h #3
А как название темы связано с вопросом?
Функции вроде нету, но удаление повторяющихся символов смещением сделать несложно.
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 18:20  [ТС]     Работа со строковыми переменными без использования string.h #4
нужно сделать это без использования string.h
Bers
Заблокирован
02.07.2011, 18:24     Работа со строковыми переменными без использования string.h #5
Цитата Сообщение от VolPuch Посмотреть сообщение
нужно сделать это без использования string.h
в чем проблема?

Это легкая задача. Не нужно иметь семь пядей во лбу, что бы без всякого опыта сделать её за час другой.


Хотите, что бы мы предоставили вам готовый код, что б вы не напрягались?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2011, 18:27     Работа со строковыми переменными без использования string.h #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char str[100];
    fgets(str, 100, stdin);
    for (char * ptr = str; *(ptr+1); ++ptr)
        if (*ptr == *(ptr + 1) )
            for (char * x = ptr--; *x = *(x+++1););
    puts(str);
    system("pause");
    return 0;
}
Bers
Заблокирован
02.07.2011, 18:29     Работа со строковыми переменными без использования string.h #7
мне вот интересно, новобранец хоть что нить поймёт из кода diagon ?

Или факт того, что код будит воспринимать новичок - трудности новичка?
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 18:31  [ТС]     Работа со строковыми переменными без использования string.h #8
спасибо
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
02.07.2011, 18:32     Работа со строковыми переменными без использования string.h #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
#include <stdio.h>
 
char* strcpyuniq(char *s1, char const *s2)
{
    char *s = s1;
    *s = *s2;
    while (*s2++)
        if (*s != *s2)
            *++s = *s2;
    return s1;
}
 
int main()
{
    char buf[1024];
    const char * s1 = "hfiwojvoap3r";
    const char * s2 = "hfaaaa3r";
    const char * s3 = "vvvvvvvv";
    const char * s5 = "";
    const char * s4 = "hhhhhfiwojvoap3rrrr";
    printf("str1 orig: %s\n", s1);
    printf("str1 new : %s\n", strcpyuniq(buf, s1));
    printf("str2 orig: %s\n", s2);
    printf("str2 new : %s\n", strcpyuniq(buf, s2));
    printf("str3 orig: %s\n", s3);
    printf("str3 new : %s\n", strcpyuniq(buf, s3));
    printf("str4 orig: %s\n", s4);
    printf("str4 new : %s\n", strcpyuniq(buf, s4));
    printf("str5 orig: %s\n", s5);
    printf("str5 new : %s\n", strcpyuniq(buf, s5));
    return 0;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2011, 18:34     Работа со строковыми переменными без использования string.h #10
Цитата Сообщение от Bers Посмотреть сообщение
мне вот интересно, новобранец хоть что нить поймёт из кода diagon ?

Или факт того, что код будит воспринимать новичок - трудности новичка?
Новобранец даже хелло-ворлд не поймет =)
А вообще у меня есть алиби - Страуструп в своей книге использует подобные коды и утверждает, что опытному программисту они будут вполне понятны.
Bers
Заблокирован
02.07.2011, 18:37     Работа со строковыми переменными без использования string.h #11
я так понял, новичок пришёл сюда чисто за халявой, ему вообще не интересно, как это работает.
Ну а спецам пофигу, как он это будит воспринимать....

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Новобранец даже хелло-ворлд не поймет =)
А вообще у меня есть алиби - Страуструп в своей книге использует подобные коды и утверждает, что опытному программисту он будет более понятен.
нада быть очень не умным, что бы не понять хелло-ворлд.
А Страуструп - это справочник, а не учебное пособие.


Учение по Страуструпу загнёт раком любого новичка.
Опытный кодер таких наивных вопросов бы не задавал. Так что алиби не канает.
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
02.07.2011, 18:41     Работа со строковыми переменными без использования string.h #12
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (){
    char str[]="ssstttggtttggg", *a=str, *b=str;
    for(; *b=*a; ++b){
        while(*++a==*b);
    }
    puts(str);
    return 0;
}
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
02.07.2011, 19:13     Работа со строковыми переменными без использования string.h #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "StdAfx.h"
 
#include <iostream>
#include <algorithm>
#include <string>
 
 
using namespace std;
 
int main()
{
    string str;
 
    cin >> str;
 
    string ConvertedString(str.begin(), unique(str.begin(), str.end()));
 
    cout << ConvertedString;
 
    
    
    return 0;
}
Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <string>
 
 
using namespace std;
 
int main()
{
    string str;
 
    cin >> str;
 
    str.swap(string(str.begin(), unique(str.begin(), str.end())));
 
    cout << str;
 
    
    
    return 0;
}
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 19:37  [ТС]     Работа со строковыми переменными без использования string.h #14
доработан код igorrr37:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main (){
    char str[]="ssstttggtttggg", *a=str, *b=str;
    char t='t';
    for(; *b=*a; ++b){
        while(*++a==*b && *b==t);
    }
    puts(str);
    return 0;
}
здесь сокращаются не все символы, а только один
silent_1991
02.07.2011, 20:21
  #15

Не по теме:

Bers, почему если новичок приходит за халявой, мы должны на изнанку выворачиваться ради того, чтобы он ещё и в разборе этой халявы не напрягался? Пусть хоть немного пораскинет мозгой и поразбирается самостоятельно. Я лично никогда не пишу здесь код для кого-то, если я берусь за задание, то пишу его как для себя.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2011, 06:56     Работа со строковыми переменными без использования string.h
Еще ссылки по теме:

C++ создать функцию для работы с строковыми переменными без использования библиотеки <string.h>
работа с текстом без использования string C++
Задача без использования типа string C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Bers
03.07.2011, 06:56     Работа со строковыми переменными без использования string.h
  #16

Не по теме:


silent_1991, вразумел. И наверное, буду так же относится.

Yandex
Объявления
03.07.2011, 06:56     Работа со строковыми переменными без использования string.h
Ответ Создать тему
Опции темы

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