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

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

Восстановить пароль Регистрация
 
Reiderian
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 44
14.04.2014, 15:08     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #1
Добрый день, окажите помощь с данной задачей.
Задан текст, состоящий из «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 если его нет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Smallvi
 Аватар для 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
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.04.2014, 15:48     Текст из 0 и 1. Оставив 1-ый символ в как есть, заменить каждый следующий на 0, если не совпадает с рассматриваемым #3
Smallvi, а имеется в виду "совпадает" со старым предыдущим символом или с заменённым из-за предыдущего шага цикла?
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
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
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++

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

Или воспользуйтесь поиском по форуму:
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, если не совпадает с рассматриваемым
Ответ Создать тему
Опции темы

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