Rezolvare completă PbInfo #2766 Gradient

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 Adresa de email.

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!