Rezolvare completă PbInfo #1366 aceeasi_paritate_2

Cerința

Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică. Algoritmul se va relua în mod repetat până când nu se mai poate adăuga șirului niciun nou element.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere întregi, separate prin spații.

Date de ieșire

Programul va afișa pe ecran pe câte o linie nouă, începând cu șirul inițial, toate șirurile distincte ce se pot construi prin metoda mai sus menționată. Fiecare șir se va scrie pe câte un rând nou.

Restricții și precizări

  • în cazul în care șirul conține două elemente consecutive egale, între acestea nu se va insera media aritmetică
  • 1 ≤ n ≤ 100
  • -1.000.000.000 ≤ elementele șirului ≤ 1.000.000.000

Exemplu

Intrare

6
1 41 3 3 4 8

Ieșire

1 41 3 3 4 8
1 21 41 22 3 3 4 6 8
1 11 21 31 41 22 3 3 4 5 6 7 8
1 6 11 16 21 26 31 36 41 22 3 3 4 5 6 7 8

Explicație

Primul șir este șirul inițial, din primul șir se obține următorul, de pe linia a doua, apoi șirul al treilea și în final șirul al patrulea. În al patrulea șir nu mai putem insera niciun element nou.

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 aceeasi_paritate_2:

#include <iostream>


using namespace std;

int main()
{
    int n,i,a[3000],j,ok;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    do
    {
        for(i=1;i<=n;i++)
            cout<<a[i]<<" ";
        cout<<endl;

        ok=0;
        i=2;
        while (i<=n)
            if((a[i-1]+a[i])%2==0 and a[i-1]!=a[i])
            {
                for(j=n;j>=i;j--)
                    a[j+1]=a[j];
                a[i]=(a[i-1]+a[i+1])/2;
                n++;
                i=i+2;
                ok=1;
            }
            else
                i++;
    }while (ok);
    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 #1366 aceeasi_paritate_2

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1366 aceeasi_paritate_2 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!