6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
1

Записать строку обратную первой

22.10.2014, 22:47. Показов 1147. Ответов 4
Метки нет (Все метки)

символы вводятся в строку s методом += 'символ'

Нужно чтобы в цикле, начинающемся с 88 строки действия происходили со строкой, обратной s. Как это можно сделать?

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <sstream>
#include <math.h>
 
using namespace std;
string s;
 
 
 
int main(int argc, char *argv[])
 { 
    const char *firstNumber = argv[1];
    const char *secondNumber = argv[2];
 
 
    cout << "First number is ";
    for (int i = 0; i < strlen(firstNumber); i++) {
        cout << firstNumber[i];
    }
    cout << endl;
 
    cout << "Second number is ";
    for (int i = 0; i < strlen(secondNumber); i++) {
        cout << secondNumber[i];
    }
    cout << endl;
 
    if (strlen(firstNumber) != strlen(secondNumber))
    {
        cout << "----------------------------------------------------" << endl;
        cout << "Input is uncorrect!" << endl;
        cout << "Case your numbers are not the same - please add some '0'" << endl;
        cout << "At the beginning of the shortest" << endl;
        cout << "Please enter two numbers" << endl;
        cout << "First number should be same length as Second number! " << endl;
        cout << "----------------------------------------------------" << endl;
        exit(0);
    }
 
    else
    {
        int Length = strlen(firstNumber);
        for(int i = 0 ; i <= Length ; i++)
        {
            switch (firstNumber[i])
            {
                case '1':
                    switch (secondNumber[i])
                    {
                        case '1':
                            {
                                s += '0';
                                break;
                            }
                        case '0':
                            {
                                s += '1';
                                break;
                            }
                    }
                    break;
                case '0':
                    switch (secondNumber[i])
                    {
                        case '1':
                            {
                                s += '1';
                                break;
                            }
                        case '0':
                            {
                                s += '0';
                                break;
                            }
                    }
                    break;
            }
        }
        int Answer = 0;
 
 
 
        cout << "in binary: " << s << endl;
        for (int i = 0 ; i < Length; i++)
        {
            switch (s[i])
                {
                case '1':
                    {
                        
                        double x = i;
                        Answer = Answer + (pow(2,x)) ;
                        break;
                    }
                case '0':
                    {
                        break;
                    }
                }
        }
        cout << "in deciny: " << Answer << endl;
    }           
    return 0;
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 22:47
Ответы с готовыми решениями:

Ввести строку, создать вторую строку в два раза больше, в которую записать симболы первой строки
Ввести с клавиатуры строку симболов (до 20 симболов), динамически создать вторую строку в два раза...

Строку в обратную польскую запись
Подскажите, как представить выражение из строки в обратную польскую запись и потом посчитать?...

Вывести строку, обратную заданной
Собственно программа для того что бы вывести строку обратную данной. Я не могу догнать как она...

Написать программу которая переводит строку в обратную сторону
написать программу которая переводит строку в обратную сторону при этом не используя функцию...

4
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
22.10.2014, 22:54 2
C++
1
for (int i = Length; i >= 0; i--)
0
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
22.10.2014, 23:03  [ТС] 3
Wiiiiijjj, пробовал, естественно) Debug Выдает ошибку выход за пределы string, так что нужно именно обратную строку.
0
5 / 5 / 4
Регистрация: 15.12.2013
Сообщений: 34
22.10.2014, 23:32 4
Лучший ответ Сообщение было отмечено Keter как решение

Решение

C++
1
2
3
4
string str = "123456";
string reversed  = "";
for(int i  = str.length() - 1; i >= 0; i--)
    reversed += str[i];
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
23.10.2014, 11:18  [ТС] 5
Splitty, спасибо, заработало!)

Добавлено через 11 часов 25 минут
Переписываю программу так, чтобы в начало меньшей строки добавлялись нули, если они разной длинны.
Вроде код верен (ну чисто внешне) но при попытке запуска программы выводит ошибку
"invalid Null Pointer"
Откуда эта ошибка здесь вылезает и как ее можно исправить?

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//C:\Check\XORosho.exe
//Z:\Susekov\XORosho\Debug\XORosho.exe
 
#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <sstream>
#include <math.h>
 
using namespace std;
int Length;
string s;
 
int mistakeInput();
 
 
int main(int argc, char *argv[])
 { 
   
 
    string firstNumber = argv[1];
    string secondNumber = argv[2];
 
    /*cout << "First number is ";
    for (int i = 0; i < strlen(firstNumber); i++) {
        cout << firstNumber[i];
    }
    cout << endl;
 
    cout << "Second number is ";
    for (int i = 0; i < strlen(secondNumber); i++) {
        cout << secondNumber[i];
    }
    cout << endl;*/
    
 
    if (firstNumber.size() != secondNumber.size())
    {
        if (firstNumber.size() < secondNumber.size())
        {
            while (firstNumber.size() != secondNumber.size())
            {
                firstNumber.insert(firstNumber.begin(), '0');
            }
        }
        else
        {
            while (firstNumber.size() != secondNumber.size())
            {
                secondNumber.insert(secondNumber.begin(), '0');
            }
        }
        
    }
 
        cout << firstNumber << endl;
        cout << secondNumber << endl;
        Length = firstNumber.size();
        for(int i = 0 ; i <= Length ; i++)
        {
            if (firstNumber[i] == '1')
            {
                if (secondNumber[i] == '1')
                    {
                        s += '0';   
                        continue;
                    }
                if (secondNumber[i] == '0')
                    {
                        s += '1';
                        continue;
                    }
                else
                    {
                        mistakeInput();
                    }
            }   
                    
            if (firstNumber[i] == '0')
                {
                if (secondNumber[i] == '1')
                    {
                        s += '1';
                        continue;
                    }
                if (secondNumber[i] == '0')
                    {
                        s += '0';
                        continue;
                    }
                else
                    {
                        mistakeInput();
                    }
                }
            else
                {
                    mistakeInput();
                }
            
        }
        int Answer = 0;
 
        
        string reverS  = "";
        for(int i  = s.length() - 1; i >= 0; i--)
            {
                reverS += s[i];
            }
    
        cout << "After using XOR" << endl;
        cout << "In binary: " << s << endl;
        for (int i = 0 ; i < Length; i++)
        
        {
            switch (reverS[i])
                {
                case '1':
                    {
                        
                        double x = i;
                        Answer = Answer + (pow(2,x)) ;
                        break;
                    }
                case '0':
                    {
                        break;
                    }
                }
        }
        cout << "In decimal: " << Answer << endl;
 
return 0;   
    
}           
    
int mistakeInput()
{
        cout << "----------------------------------------------------" << endl;
        cout << "Input is uncorrect!" << endl;
        cout << "You should input two binary numbers." << endl;
        cout << "----------------------------------------------------" << endl;
        exit(0);
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 11:18
Помогаю со студенческими работами здесь

Считать с консоли строку, записать ее во вторую переменную и сравнить с первой
Здравствуйте, есть люди, которые имели дело с Scheme? У меня довольно простой вопрос: есть...

В третью строку массива записать сумму элементов первой и второй строки
Помогите пожалуйста. Массив размера 3х3. В третью строку записать сумму элементов первой и второй...

Данные из grid записать в xml, предусмотреть обратную операцию
Добрый день! Я начинаю изучать с++ решил написать телефонный справочник, столкнулся с проблемой...

Преобразовать строку в обратную польскую запись.
Собственно как это реализовать. Например входная строка &quot;AvB&quot; (где A и B заглавные симвволы)...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru