Loading...
zlobjul avatar zlobjul 4 Точки

JA1 - Задача 4 Roxettes

Разбирам решението , знам как трябва да стане , но не мога да го направя . Разбирам , че трябва да XOR-ваме пъврите 5 символа с вторите 5 и получения резултат XOR-ваме със следващите 5 и така докато не получим резултата . Ето и най-сполучливия код , който успях да сътворя ( ситемата отчита само 3 отговора за верни и то от втората половина опити , от първата нито едно не минава ) . Знам , че този код не е това , което се иска , но е най доброто, което упях да направя до момента :

#include<iostream>
#include<vector>
#include<string>
#include<sstream>


using namespace std;

unsigned int findSingle(vector<unsigned int> inV){
     unsigned int res = inV[0];
     for (unsigned int i=1; i < inV.size(); i++)
        res = res ^ inV[i];
return res;
}


int main(){

string Input;
getline(cin, Input);

vector<unsigned int> dna;

for (unsigned int i = 0; i < Input.length(); i += 5) {
    stringstream stream(Input.substr(i, 5));
    unsigned int num;
    while ( stream >> hex >> num ){
        dna.push_back(num);
    }

}

cout << hex << findSingle(dna);
return 0;
}

 

 

 

А ето и въпросите ми :

1. Как от string инпут да XOR-вам char by char . В лекцията ( частта с обяснението на задачата гледах поне 5 пъти )  стана въпрос , че може да сравняваме char по char , опитах , но така и не успях да получа резултата накрая .

2. Как да четем char без да го записваме ( или поне да ползваме temp array за 5те символа )? Трябва ли да ползваме 2 char array-а за да запазим в тях от 0-5 и от 5-10 и да ги сравним ? Получения отговор трябва да XOR-нем с 10-15 и така докато не достигнем "." 

3. Как да направя така , че достигайки '.' да спре ?

 

Въобще нещо нищо не се получава ...

 

Тагове:
0
C++ Fundamentals 05/12/2017 10:05:36
Jovanna avatar Jovanna 186 Точки
Best Answer

този вектор в който пълниш всичко, той ти гърми .

направи си безкраен цикъл с изход ако char == '.'  -> break;  Чети в него по 5 чара и веднага си ги конвертирай в бинарно число; инициализирай с първия прочит; после само XOR-ваш нататък...

Накрая променливата, която ти държи XOR-резултата я обърни пак в hexadecimal 

Дано съм помогнала. Успех!

0
zlobjul avatar zlobjul 4 Точки

Благодаря !

Получи се , XOR резултата , даже не се обраъща обратно в hexadecimal ми направо си излиза . Char-овете обаче трябва да ги обърнем в бинарно число преди да ги XOR-нем .

0
sun_seeker avatar sun_seeker 15 Точки

Аз явно съм стигнал малко по-напред, чета, и то вярно по 5 char. Но нещо при сравненията ми куца. Ще го мъча пак. 

0
Jovanna avatar Jovanna 186 Точки

защото не всички 5 символни hexa-числа, като се превърнат в binary, са size 17 , Има и по 20;

преди да сравняваш, допълни отпред с нули

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.