Probleme de informatică
  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

   Home Subprograme Bacalaureat 2016   |   Variante bacalaureat 2009   |   Atestat  |   Olimpiada       
Noutăţi
Subiecte admitere la Facultatea de informatica UBB Cluj-Napoca
Subiecte bacalaureat 2010-2017
Bacalaureat 2017 - competenţe digitale
C# - Windows Form Application - exemple
Modele de proiecte de atestat
Bacalaureat 2017
Subiecte si rezolvări 2010-2017
Rezolvari variante bacalaureat 2009
Competenţe digitale
Examen atestat
Rezumat documentatie
Teme proiect
php.doc
css.doc
exemple_php_si_css.rar
Modele de proiecte de atestat
Subiecte atestat 2014 CNLR
Olimpiada
Clasele V-VI
Clasele VII-VIII
Clasa a IX-a
Clasa a X-a
Clasele XI-XII
Noţiuni teoretice
Metode de sortare
Metoda backtracking


Se citeste de la tastatura o matrice patratica A cu n linii si n coloane continand numere naturale cu cel mult 5 cifre (n in intervalul [3, 50]). Scrieti un program care construieste si apoi tipareste un sir Y care sa contina in ordine strict descrescatoare, numerele "superprime" distincte, care apar in triunghiul stang sau cel drept al matricei A. Sirul Y se va construi direct ordonat, fara a face ordonarea ulterioara. In cazul in care sirul Y este vid, se va tipari mesajul "Sirul este vid".
Un numar se numeste "superprim" daca toate prefixele sale sunt numere prime (de ex. 239 este "superprim" deoarece 2, 23 si 239 sunt prime, dar numarul 241 nu este "superprim" deoarece 24 nu este prim).
Triunghiul stang al unei matrici este format din elementele de sub diagonala principala si deasupra celei secundare, iar triunghiul drept este format din elementele de sub diagonala secundara si deasupra celei principale.
Se vor scrie si folosi subprograme pentru:
- citirea unei matrici patratice
- tiparirea unui sir
- verificarea daca un numar este prim
- verificarea daca un numar este "superprim"
- construirea sirului Y prin inserarea de valori din matricea A in sirul Y ordonat descrescator
Exemplu:
Pentru n=4 si matricea
241 100 5 239
239 3 2 79
16 3 3 239
3 4 2 1
Sirul Y va fi {239, 79} (obtinut din elementele 239, 16, 79, 239 aflate in zonele considerate ale matricii)


#include <iostream>
using namespace std;

void citire(int a[][51], int &n)
{//citeste dimensiunea n a matricii a si matricea a
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>a[i][j];
}

int cautbin(int a[], int n, int x)
{//cauta x in y folosind cautarea binara
    int st=1, dr=n;
    while(st<=dr)
    {
        int m=(st+dr)/2;
        if(a[m]==x) return 1;//s-a gasit
        else if(a[m]>x) st=m+1;
             else dr=m-1;
    }
    return 0;//nu s-a gasit
}

int prim (int n)
{//verifica daca n e numar prim
    if(n==0 || n==1) return 0;// 0 si 1 nu sunt ptime
    for(int i=2;i*i<=n;i++)
        if(n%i==0) return 0;// are divizor, deci nu e prim
    return 1;
}

int superprim(int n)
{//verifica daca n e superprim
    while(n)
    {
        if(!prim(n)) return 0;//are prefix neprim, deci nu e prim
        n=n/10;//tai ultima cifra
    }
    return 1;
}

void construirey(int a[][51], int n, int y[], int &m)
{//contruieste y cu elementele din a care respecta coditiiile date
    m=0;
    for(int i=2;i<n;i++)
    for(int j=1;j<=n;j++)
    if(i>j && i+j<=n || i<j && i+j>n+1)// in una din cele doua zone precizate
        if(superprim(a[i][j]) && cautbin(y,m,a[i][j])==0)//e superprim si nu e pus deja in y
        {
            m++;//maresc numarul de elemente din y
            y[m]=a[i][j];//pun la sfarsit
            int j=m;
            while(j>1 && y[j-1]<y[j]) //merg spre stanga
            { // si prin permutari duc noul element la locul lui astfal incat y sa ramana ordonat
                int aux=y[j]; y[j]=y[j-1]; y[j-1]=aux;
                j--;
            }
        }
}

void afisare(int a[], int n)
{//afiseaza un vector
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    if(n==0) cout<<"Sirul este vid";
}

int main()
{
    int a[51][51], y[1251], n,m;
    citire(a,n);
    construirey(a,n,y,m);
    afisare(y,m);
    return 0;
}


  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

Calculatoare si accesorii second hand
Copyright 2009-2017 Muresan Vasile Ciprian - mcip.ro