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

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

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

Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым - C++

14.04.2014, 15:08. Просмотров 273. Ответов 6
Метки нет (Все метки)

Добрый день, окажите помощь с данной задачей.
Задан текст, состоящий из «0» и «1». Оставив первый символ в неприкосновенности, заменить каждый следующий символ на «0», если предыдущий не совпадает с рассматриваемым, и «1» – в противном случае.

P.S. Тут чтоль надо сделать инверсию 0 и 1 кроме первого символа?
Заранее спасибо!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 15:08     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым
Посмотрите здесь:

C++ Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от *
Дан текст, каждый символ которого может быть... C++
C++ В строке символов заменить каждый второй символ s на f
Преобразовать строку, удалив каждый символ «*» и повторив каждый символ, отличный от «*» C++
Преобразовать строку, удалив каждый символ * и удвоив каждый символ, отличный от * C++
C++ Обработка символьных данных. Yes, если есть символ в строке и NO если его нет
Строки: заменить каждый символ '/' на пару символов ':' C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Smallvi
5 / 5 / 6
Регистрация: 08.04.2014
Сообщений: 37
14.04.2014, 15:40     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int strlen(char[]);
 
int main()
{
    char str[] = "01001101010001";
    
    for(int i = 1; i < strlen(str); i++) {
        if(str[i] == str[i - 1]) str[i] = '1';
        else str[i] = '0';
    }
    
    return 0;
}
 
int strlen(char string[]) {
    int i = 0;
    while(string[i] != '\0') i++;
 
    return i;
}
Добавлено через 6 минут
Хотя нет, предыдущий вариант неправильный. Вот правильный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    char str[] = "01001101010001";
    
    for(int i = 1; str[i] != '\0'; i++) {
        if(str[i] == str[i - 1]) str[i] = '1';
        else str[i] = '0';
    }
    
    return 0;
}
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
14.04.2014, 15:48     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #3
Smallvi, а имеется в виду "совпадает" со старым предыдущим символом или с заменённым из-за предыдущего шага цикла?
Smallvi
5 / 5 / 6
Регистрация: 08.04.2014
Сообщений: 37
14.04.2014, 15:56     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #4
Kuzia domovenok, хм, точно. Не продумал до конца алгоритм. Там надо бы еще использовать вспомогательную переменную, хранящую предыдущее значение.
Reiderian
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 44
14.04.2014, 21:32  [ТС]     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #5
Спасибо большое, но условие я сам не особо понял.

Добавлено через 12 минут
Извините, может я что не так делаю, в вашей задаче (2 вариант) нет результата. Программа "делает вид что работает", но ни замены символов, ни самих символов нет. Просто пустая консоль. =)
daslex
1270 / 515 / 106
Регистрация: 02.08.2011
Сообщений: 2,654
14.04.2014, 22:10     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

не инверсия.
0110011 ==> 0010101



Добавлено через 23 минуты
Короче, на пальцах
0001110100
___________
Разбиваем
0
00 ==>1
00 ==>1
01 ==>0
11 ==>1
11 ==>1
10 ==>0
01 ==>0
10 ==>0
00 ==>1
___________
0110110001

Не по теме:

Забыл как это в логике называется



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
#include <iostream>
#include <string.h>
 
using namespace std;
 
const int N=256;
int main()
{
    char S[N]="0001110100\n";
    char temp=S[strlen(S)-2];
    char a=0;
    char b=0;
 
    for (int i=strlen(S)-2;i>0;i--){
        a=temp;
        temp=S[i-1];
        b=S[i-2];
 
        if (a!=temp) S[i]='0';
        else S[i]='1';
 
    }
    cout<<S;
 
 
 
 
 
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 22:43     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым
Еще ссылки по теме:

C++ Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от *
C++ Заменить каждый символ ';' на ','
Как поэлементно считать текст с файла с помощью fstream, и сохранить каждый символ в массив? C++
Заменить каждый символ следующим по коду C++
C++ Заменить каждый второй элемент строки на заданный символ

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

Или воспользуйтесь поиском по форуму:
Reiderian
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 44
14.04.2014, 22:43  [ТС]     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #7
А вот теперь понятно, огромнейшее спасибо.
Yandex
Объявления
14.04.2014, 22:43     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым
Ответ Создать тему
Опции темы

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