fbpx

Problema #915 – ElimPalindrom – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un tablou cu n elemente, numere naturale. Să se elimine din tablou toate elementele care sunt palindrom.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
  • palindrom, care verifică dacă un număr dat ca parametru este palindrom
  • eliminare, care elimină din tablou un element a cărui poziție este dată ca parametru.

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare

Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.

Date de ieșire

Se vor afișa pe ecran elementele tabloului, separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • elementele tabloului vor fi mai mici decât 1.000.000.000

Exemplu

Intrare

7
17 181 22 56 4 20 420 

Ieșire

17 56 20 420
#include <bits/stdc++.h>
using namespace std;

void citire(int& n, int a[]){
    cin >> n;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];
}

bool palindrom(int n){
    int cn = n;
    int ogl = 0;
    while(n){
        ogl = ogl * 10 + n % 10;
        n/=10;
    }
    return cn == ogl;
}

void eliminare(int a[], int& i, int& n){
    for(int j = i + 1; j <= n; ++j)
        a[j-1] = a[j];
    n--;
    i--;
}

void afisare(int n, int a[]){
    for(int i = 1; i <= n; ++i)
        cout << a[i] << " ";
}

int main()
{
    int n, a[1001];
    citire(n, a);

    for(int i = 1; i <= n; ++i)
        if(palindrom(a[i]))
            eliminare(a, i, n);

    afisare(n, a);
    return 0;
}
Comentarii

S-ar putea sa iti placa