Informatică, întrebare adresată de GeorgeKillerTop, 8 ani în urmă

Probblema #2766 pe pbinfo
RGB
Orice culoare poate fi reprezentată drept o combinație de intensități de roșu (RED), verde (GREEN) și albastru (BLUE). Calculatorul tău folosește, cel mai probabil, culori reprezentate pe 24 de biți, câte 8 rezervați fiecărei dintre cele trei culori anterior menționate.

Gradient
Se consideră un gradient de ordin n dintre două culori x și y totalitatea culorilor prin care trece culoarea x pentru a ajunge culoarea y în exact n pași. De exemplu, pentru o culoare x=(0,10,20) și o culoare y=(0,40,80), culorile ce compun gradientul de 4 pași sunt:

(0,10,20);
(0,20,40);
(0,30,60);
(0,40,80);
Există cazuri în care una sau mai multe culori conține valori raționale. În acest caz, doar partea lor întreagă va fi luată în considerare.

Cerința
Dându-se două culori valide (reprezentate fiecare prin câte 3 numere) și numărul n, calculați toate culorile prin care va trece prima pentru a deveni a doua.

Date de intrare
Programul citește de la tastatură numerele R1, G1, B1, R2, G2, B2, n, în această ordine, cu semnificația din enunț.

Date de ieșire
Programul va afișa pe ecran n perechi (câte una pe linie) de câte trei numere fiecare, separate printr-o virgulă și un spațiu (, ), având semnificația din enunț.

Restricții și precizări
2 ≤ n ≤ 1000;
Culorile inițiale sunt valide;
Valorile primei culori nu sunt neapărat mai mici decât valorile celei de a doua.

Răspunsuri la întrebare

Răspuns de alexdobritan07
7

Răspuns:

#include <iostream>

using namespace std;

double r1, g1, b1, r2, g2, b2;

int n;

double q1, q2, q3;

int main(){

   cin >> r1 >> g1 >> b1;

   cin >> r2 >> g2 >> b2;

   cin >> n;

   cout << r1 << ", " << g1 << ", " << b1 << "\n";

   q1=r2-r1;

   q2=g2-g1;

   q3=b2-b1;

   for (int i=1; i<n; i++){

       cout << int(r1+q1*i/(n-1)) << ", " << int(g1+q2*i/(n-1)) << ", " << int(b1+q3*i/(n-1)) << "\n";

   }

}

Explicație:

Alte întrebări interesante