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.
Exemplu
Intrare
0 10 20 0 40 80 4
Ieșire
0, 10, 20 0, 20, 40 0, 30, 60 0, 40, 80
Explicație
Acesta este exemplul descris în enunț.
…sau:
Intrare
0 0 0 23 2 20 3
Ieșire
0, 0, 0 11, 1, 10 23, 2, 20
…sau:
Intrare
23 2 20 0 0 0 3
Ieșire
23, 2, 20 11, 1, 10 0, 0, 0
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Gradient:
#include <iostream>
using namespace std;
int main()
{
int r1, r2, g1, g2, b1, b2, n, i;
cin >> r1 >> g1 >> b1 >> r2 >> g2 >> b2 >> n;
int dr, dg, db;
dr = r2-r1;
dg = g2-g1;
db = b2-b1;
cout << r1 << ", " << g1 << ", " << b1 << '\n';
--n;
for(i = 1; i <= n; ++i)
cout << (int)(r1+dr*i/(double)n) << ", " << (int)(g1+dg*i/(double)n) << ", " << (int)(b1+db*i/(double)n) << '\n';
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2766 Gradient
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2766 Gradient de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!