Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

dmartinov avatar dmartinov 37 Точки

Hex-Colors

Здравейте, ще се осмеля да помоля за малко насоки за тази задача. Разбирам условието и разбирам какво трябва да се направи, но нещо се оплетох как трябва да подходя - как интелигентно да извлека двойките за аритметичните операции? Направих набързо едно глупаво решение с 6 променливи, 6 входни потока, които прекарвам през std::hex и...работи, но се натъкнах на проблема когато получа 0 и трябва да изпечатам 00. Това го оправих с някакви измислени if-ове. Та, това беше, за да тествам дали съм разбрал правилно условието и изглежда, че съм схванал идеята, но подхода.....мъгла в главата ми :D 

Тагове:
0
C++ Fundamentals
dmartinov avatar dmartinov 37 Точки

Така, ето го и моето решение. Има какво да се желае от гледна точка на изчистване на кода, но като за набързо, става :) Отново ви благодаря! 

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

void calculateNewColor (std::string firstColor, std::string secondColor) {

    std::vector<std::string> firstSubstrings;
    std::vector<std::string> secondSubstrings;

    for (size_t i = 1; i < firstColor.size(); i += 2) {
        firstSubstrings.push_back(firstColor.substr(i,2));
        secondSubstrings.push_back(secondColor.substr(i,2));
    }

    int firstNewColor = 0;
    int secondNewColor = 0;

    std::cout << '#';

    for (size_t i = 0; i < firstSubstrings.size(); ++i) {

        std::stringstream firstIss(firstSubstrings[i]);
        std::stringstream secondIss(secondSubstrings[i]);

        firstIss >> std::hex >> firstNewColor;
        secondIss >> std::hex >> secondNewColor;

        std::cout << std::hex << std::setw(2) << std::setfill('0') << (firstNewColor + secondNewColor)/2;
    }
}

int main() {

    std::string firstColor;
    std::string secondColor;

    std::cin >> firstColor;
    std::cin >> secondColor;

    calculateNewColor (firstColor, secondColor);

  return 0;
}

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