Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

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

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


Хотите, что бы мы предоставили вам готовый код, что б вы не напрягались?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2011, 18:27 #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;
}
1
Bers
Заблокирован
02.07.2011, 18:29 #7
мне вот интересно, новобранец хоть что нить поймёт из кода diagon ?

Или факт того, что код будит воспринимать новичок - трудности новичка?
0
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 18:31  [ТС] #8
спасибо
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,019
02.07.2011, 18:32 #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;
}
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2011, 18:34 #10
Цитата Сообщение от Bers Посмотреть сообщение
мне вот интересно, новобранец хоть что нить поймёт из кода diagon ?

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

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


Учение по Страуструпу загнёт раком любого новичка.
Опытный кодер таких наивных вопросов бы не задавал. Так что алиби не канает.
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
02.07.2011, 18:41 #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;
}
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
02.07.2011, 19:13 #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;
}
0
VolPuch
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 6
02.07.2011, 19:37  [ТС] #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;
}
здесь сокращаются не все символы, а только один
0
silent_1991
02.07.2011, 20:21     Работа со строковыми переменными без использования string.h
  #15

Не по теме:

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

2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2011, 20:21
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
02.07.2011, 20:21
Ответ Создать тему
Опции темы

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