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


Teza sem I.
Din fisierul matrice.in se citesc două numere naturale n si m (n,m<=100) si apoi citeste o matrice cu n linii si m coloane, cu elemente numere naturale din intervalul [0,10000]. (1p)
a) Afisati elementul minim din matrice. (1p)
b) Afisati câte dintre coloanele matricei au elementele în ordine strict crescătoare. (1p)
c) Afisati câte dintre coloanele matricei au elementele în ordine strict descrescătoare. (1p)
d) Afisati ordine crescătoare elementele din matrice care au proprietatea că se află pe coloane care au elementele în ordine strict crescătoare sau strict descrescătoare. (3p) (Se va folosi algoritmul de interclasare, solutia ineficientă cu sortare ia doar 1p)
Afisările se vor face in fisierul matrice.out.
Se vor scrie si apela functii cel putin pentru: citirea matricei, determinarea elementului minim din matrice, verificarea dacă o coloană are elementele în ordine strict crescătoare, verificarea dacă o coloană are elementele în ordine strict descrescătoare, numărarea coloanelor cu elementele în ordine strict crescătoare, numărarea coloanelor cu elementele în ordine strict descrescătoare, interclasarea a doi vectori, interclasarea coloanelor din matrice într-un vector, afisarea unui vector.
Exemplu: Pentru datele de mai jos,
6 8
1 5 3 9 7 6 3 3
2 5 4 7 6 5 4 4
3 5 5 5 5 5 5 5
4 3 6 3 4 6 7 4
5 2 7 2 3 6 8 3
6 2 8 1 2 6 9 2
se va afisa:
1
3
2
1 1 2 2 2 3 3 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 7 7 7 7 8 8 9 9
Explicatie:
Elementul minim este 1.
Există 3 coloane cu elementele în ordine strict crescătoare.
Există 2 coloane cu elementele în ordine strict descrescătoare.


#include <fstream>
using namespace std;
ifstream fin("matrice.in");
ofstream fout("matrice.out");

void citire(int A[][101], int &n, int &m)
{//citeste dimensiunile si matricea
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            fin>>A[i][j];
}

void afisare(int A[], int n)
{//afiseaza vectorul
    for(int i=1;i<=n;i++)
        fout<<A[i]<<" ";
}

int minim(int A[][101], int n, int m)
{//calculeaza si returneaza minimul
    int min=A[1][1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(A[i][j]<min)
                min=A[i][j];
    return min;
}

int verifscresc(int A[][101], int n, int j)
{//verifica daca coloana are elem. strict crescatoare
    for(int i=2;i<=n;i++)
        if(A[i-1][j]>=A[i][j]) return 0;
    return 1;
}

int catecresc(int A[][101], int n, int m)
{//numara coloanele strict crescatoare
    int c=0;
    for(int j=1;j<=m;j++)
        if(verifscresc(A,n,j))
            c++;
    return c;
}

int verifsdesc(int A[][101], int n, int j)
{//verifica daca coloana are elem. strict descrescatoare
    for(int i=2;i<=n;i++)
        if(A[i-1][j]<=A[i][j]) return 0;
    return 1;
}

int catedesc(int A[][101], int n, int m)
{//numara coloanele strict descrescatoare
    int c=0;
    for(int j=1;j<=m;j++)
        if(verifsdesc(A,n,j))
            c++;
    return c;
}

void interclasare(int A[], int n, int B[], int m, int C[], int &k)
{//interclaseaza A si B in C
    k=0;
    int i=1,j=1;
    while(i<=n && j<=m)
        if(A[i]<B[j]) C[++k]=A[i++];
        else C[++k]=B[j++];
    while(i<=n) C[++k]=A[i++];
    while(j<=m) C[++k]=B[j++];
}

void copiazavector(int A[], int n, int B[], int &m)
{// B=A
    m=n;
    for(int i=1;i<=n;i++)
        B[i]=A[i];
}

void copiazacoloana(int A[][101], int n, int j, int B[], int &m)
{//copiez coloana j in vectorul B
    m=n;
    for(int i=1;i<=n;i++)
        B[i]=A[i][j];
}

void copiazacoloanainvers(int A[][101], int n, int j, int B[], int &m)
{//copiez invers coloana j in vectorul B
    m=n;
    for(int i=1;i<=n;i++)
        B[i]=A[n+1-i][j];
}

void interclasarecoloane(int A[][101], int n, int m, int X[], int &k)
{
    int Y[10001],p,Z[10001],r;
    k=0;
    for(int j=1;j<=m;j++)
        if(verifscresc(A,n,j) || verifsdesc(A,n,j))
        //coloana e ordonata
        {
            if(verifscresc(A,n,j)) //ordonata crescator
                    copiazacoloana(A,n,j,Y,p);
            else //ordonata descrescator
                    copiazacoloanainvers(A,n,j,Y,p);
            interclasare(X,k,Y,p,Z,r);//interclasez pe X cu Y in Z
            copiazavector(Z,r,X,k);//copiez pe Z in X
        }
}

int main()
{
    int A[101][101],n,m,X[10001],k;
    citire(A,n,m);
    fout<<minim(A,n,m)<<endl;
    fout<<catecresc(A,n,m)<<endl;
    fout<<catedesc(A,n,m)<<endl;
    interclasarecoloane(A,n,m,X,k);
    afisare(X,k);
    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