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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
#1

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

02.07.2011, 17:56. Просмотров 1077. Ответов 15
Метки нет (Все метки)

Нужно заменить в строке s множественные последовательности вхождений символа t на один. То есть "aaabcde" заменяется на "abcde". Существует ли аналог такой функции в string.h?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2011, 17:56     Работа со строковыми переменными без использования string.h
Посмотрите здесь:

создать функцию для работы с строковыми переменными без использования библиотеки <string.h> - C++
Нужно создать функцию для работы с строковыми переменными без использования библиотеки &lt;string.h&gt;. собственно сама задача : поиск ...

Работа со строковыми переменными - C++
Поиск позиции N-го вхождения символа C в строке s. Если такой количества вхождений нет - функция должна вернуть значение -1. ...

Работа с текстом без использования string - C++
Нужно взять како-то небольшой текст и напечатать все слова, которые начинаются с буквы, отличную от буквы, с которой начинается первое...

Сортировка векторов со строковыми переменными - C++
День добрый. У меня возник вопрос, возможно ли сделать сортировку строковых переменных в массиве не в алфавитном порядке, а в заданном...

Объединить строки без использования string.h - C++
Чем заменить strcpy ,strcat .

Задача без использования типа string - C++
Слова текста из малых латинских букв записаны не менее чем через один пробел; БЕЗ ИСПОЛЬЗОВАНИЯ КОНСТРУКЦИИ STRING: а) написать программу...

Функция atoi, без использования библиотеки string - C++
функции atoi, без использования библиотеки string

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
02.07.2011, 18:03     Работа со строковыми переменными без использования string.h #2
врядли
diagon
Higher
1928 / 1194 / 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
1928 / 1194 / 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
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
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
1928 / 1194 / 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
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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
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
Еще ссылки по теме:

Задача со строками без использования библиотеки string.h - C++
Дана непустая строка S. Вывести на экран Эту же строку S, но с пробелами между символами.

Удаление пробелов в строке без использования модуля <string.h> - C++
Задача такая Ниже приведен текст. Дана строка.преобразовать ее следующим образом:удалить группы пробелов если имеються которыми эта...

Разделить символьный массив на подмассивы без использования методов String - C++
Записать слова из текста (массив char) в отдельные массивы, слова разделяет пробел, не использовать методы из String. Пока имею что то...

Напечатать самое длинное слово из текста (без использования string) - C++
Напечатать самое длинное слово из текста на С++. Запретили пользоваться string. Нужна блок-схема алгоритма

Найти симметричные слова, отличающиеся от последнего, без использования string - C++
Слова текста из малых латинских букв записаны не менее чем через один пробел; БЕЗ ИСПОЛЬЗОВАНИЯ КОНСТРУКЦИИ STRING(C++): а) написать...


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

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

Не по теме:


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru