bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online Pe HaiSaRadem.ro vei gasi bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online. Nu ne crede pe cuvant, intra pe HaiSaRadem.ro ca sa te convingi.

 

 

PROGRAMARE

CLASELE DE MATEMATICA-INFORMATICĂ NEINTENSIV

 

 

Subiectul nr.1

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu.

b)       Să se scrie un subprogram care să returneze elementul minim din fişierul date.in;

c)       Să se scrie un subprogram care să creeze un tablou unidimensional cu elementele fişierului date.in şi să se insereze între ultimul şi penultimul element al tabloului media lor aritmetică;

d)       Scrieţi în fişierul text date.out şirul nou obţinut, ordonat crescător.

 

Exemplu:

Date de intrare:

                17  23  45  67  12  34  5  90  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 17  23  45  67  12  34  5  90  8  9

                b) Elementul minim este: 5

                c) Tabloul unidimensional: 17 23 45 67 12 34 5 90  8  8.5  9

                d) Fişierul text date.out conţine pe o linie: 5  8.5  8  9  12  17  23  34  45  67  90

#include <iostream.h>

#include <math.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

void inserez_ma(int a[11])

{

                fstream f("data.out", ios::out);

                int i,j;

                float v[20];

                //copiez primele 9 elemente din vectorul citit din fisier

                for( i=1;i<10;i++)

                                v[i]=a[i];

                //realizez inserarea

                v[10]=((float)a[9]+a[10])/2.;

                v[11]=a[10];

                //ordonez vectorul nou

                for( i=1;i<=10;i++)

                                for(j=i+1;j<=11;j++)

                                                if(v[i]>v[j])

                                                {

                                                int c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

                                                }

                //il scriu in fisier

                for(i=1;i<=11;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

 

int minim(int v[10])

{

                int m=32000;

                for(int i=1;i<=10;i++)

                                if(m>v[i])

                                                                                m=v[i];

                return m;

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"Cel mai mic nr din fisier "<<minim(a);

               

                inserez_ma(a);

 

               

}

 

 

Subiectul nr.2

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu.

b)       Să se scrie un subprogram care să returneze elementul maxim din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor prime conţinute de fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

Exemplu:

Date de intrare:

                7  23  4  17  12  34  5  90  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  34  5  90  8  9

                b) Elementul maxim este: 90

                c) În fişier sunt  4 numere prime

                d) Fişierul text date.out conţine pe o linie: 4  5  7  8  9  12  17  23  34  90 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

 //functie ce verifica daca un numar este prim

int prim(int x)

{

                if(x==1 || x==0)

                                return 0;

                for(int i=2;i<=x/2;i++)

                                if(x%i==0)

                                                return 0;

                                return 1;

}

 

//contorizare nr prime

int contor( int v[10])

{

                int c=0; 

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==1 )

                                                c++;

                return c;

}

 

 

 

 

int maxim(int v[10])

{

                int max=-32000;

                for(int i=1;i<=10;i++)

                                if(max<v[i])

                                                                                max=v[i];

                return max;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]>v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"Cel mai mare nr din fisier "<<maxim(a);

                cout<<"\nnumarul elementelor prime "<<contor(a)<<"\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.3

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze suma cifrelor elementelor pare din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor pătrate perfecte din fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat decrescător.

 

Exemplu:

 Date de intrare :

                37  23  4  77  12  34  5  90  18  19

 

Date de ieşire :

                a) Fişierul text date.in conţine pe o linie: 37  23  4  77  12  34  5  90  18  19

                b) Suma cifrelor elementelor pare din fişierul date.in este: 32

                c) Între elementele din fişierul date.in este  un pătrat perfect

                d) Fişierul text date.out conţine pe o linie: 90  77  37  34  23  19  18  12  5  4

#include <iostream.h>

#include <math.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

 

//fsuma cifrelor unui nr

 

int sumacifre(int nr)

{

                int s=0;

                while(nr!=0)

                {

                                s=s + nr%10;

                                nr=nr/10;

                }

                return s;;

}

 

//fsuma cifrelor nr pare din fisier

 

int suma( int v[10])

{

                int c=0; 

                for(int i=1;i<=10;i++)

                                if(v[i]%2==0)

                                                c=c+sumacifre(v[i]);

                return c;

}

 

//nr elem patrate perfecte

 

int contor( int v[10])

{

                int s=0;

                for(int i=1;i<=10;i++)

                                if(sqrt(v[i])==int(sqrt(v[i])))

                                                                                s++;

               

                                return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"suma cifrelor numerelor  pare "<<suma(a)<<"\n";

                cout<<"\nnumarul elementelor patrate perfecte "<<contor(a)<<"\n";

                ordonare(a);

 

               

}

 

               

Subiectul nr.4

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să determine suma elementelor impare conţinute de fişierul date.in;

c)       Să se scrie un subprogram care să returneze câte elemente din fişierul date.in sunt numere de tip palindrom cu cel putin două cifre (palindrom este un număr de cel puţin două cifre care citit de la dreapta la stânga este identic cu numărul citit de la stânga la dreapta);

d)       Scrieţi în fişierul text date.out şirul dat, ordonat descrescător.

 

Exemplu:

Date de intrare:

                37  23  4  77  12  34  5  90  18  19

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 37  23  4  77  12  34  5  90  18  19

                b) Suma elementelor impare conţinute de fişierul date.in este:161

                c) În fişier este un numar de tip palindrom cu cel putin două cifre

                d) Fişierul text date.out conţine pe o linie: 90  77  37  34  23  19  18  12  5  4

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

        fstream f;

        f.open("data.in",ios::out);

        int c=0,m;

        cout<<"introduceti numerele ";

        while(c<10)

        {

                        do

                        {

                                        cin>>m;

                        }while(m>100);

 

                        f<<m<<"\t";

                        c++;

        }

        f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

         fstream f;

         f.open("data.in",ios::in);

         for(int i=1;i<=10;i++)

                         f>>a[i];

         f.close();

 }

 

 

//functie ce verifica daca nr e palindrom

 

int palindrom(int nr)

{

        int cnr=0,c=nr;

        if(nr<10)   //daca nu are 2 cifre

                        return 0;

        while(nr!=0)

        {

                        cnr=cnr*10 + nr%10;

                        nr=nr/10;

        }

        if(c==cnr)

                        return 1;

        else

                        return 0;

}

 

 

 

int contor( int v[10])

{

        int c=0; 

        for(int i=1;i<=10;i++)

                        if(palindrom(v[i])==1 )

                                        c++;

        return c;

}

 

//b)  Sa se scrie un subprogram care sa returneze suma elementelor impare

 

int suma( int v[10])

{

        int s=0;

        for(int i=1;i<=10;i++)

                        if(v[i]%2==1)

                                                                        s=s+v[i];

       

                        return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

        fstream f("data.out", ios::out);

        int i,j,c;

        //ordonez vectorul

        for( i=1;i<10;i++)

                        for(j=i+1;j<=10;j++)

                                        if(v[i]>v[j])

                                        {

                                                        c=v[j];

                                                        v[j]=v[i];

                                                        v[i]=c;

 

                                        }

        //il scriu in fisier

        for(i=1;i<=10;i++)

                                        f<<v[i]<<"\t";

        f.close();

                       

}

 

 

void main()

{

        int a[11];

       

        crearef();

        citirevect(a);

        cout<<"suma elementelor impare "<<suma(a)<<"\n";

        cout<<"\nnumarul elementelor de tip palindrom "<<contor(a)<<"\n";

        ordonare(a);

 

       

}

 

Subiectul nr.5

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze suma elementelor pare de pe pozitiile impare din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor prime conţinute de fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

Exemplu:

Date de intrare :

                7  23  4  17  12  34  5  90  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  34  5  90  8  9

                b) Suma elementelor pare de pe pozitiile impare din fişierul date.in este: 24

                c) În fişier sunt  4 numere prime

                d) Fişierul text date.out conţine pe o linie: 4  5  7  8  9  12  17  23  34  90 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

 

//functie ce verifica daca un numar este prim

int prim(int x)

{

                if(x==1 || x==0)

                                return 0;

                for(int i=2;i<=x/2;i++)

                                if(x%i==0)

                                                return 0;

                                return 1;

}

 

int contor( int v[10])

{

                int c=0; 

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==1 )

                                                c++;

                return c;

}

 

//b)          Sa se scrie un subprogram care sa returneze suma elementelor

// pare de pe pozitiile impare din fisierul date.in;

int suma( int v[10])

{

                int s=0;

                for(int i=1;i<=10;i=i+2)

                                if(v[i]%2==0)

                                                                                s=s+v[i];

               

                                return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"suma elementelor pare de pe pozitiile impare "<<suma(a)<<"\n";

                cout<<"\nnumarul elementelor prime "<<contor(a)<<"\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.6

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să determine suma elementelor impare aflate pe poziţiile pare conţinute de fişierul date.in;

c)       Să se scrie un subprogram care să returneze un mesaj prin care să se comunice dacă un element  x citit de la tastatură există sau nu în şirul din fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

Exemplu:

Date de intrare:

                17  23  45  67  12  34  5  90  8  9

 

Date de ieşire :

                a) Fişierul text date.in conţine pe o linie: 17  23  45  67  12  34  5  90  8

                b) Suma elementelor impare aflate pe poziţiile pare conţinute de fişierul date.in este: 99

                c) Pentru x = 99 se va afişa: „elementul nu este în fişier”

                d) Fişierul text date.out conţine pe o linie: 5  8  9  12  17  23  34  45  67  90

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

 

 

//x apartine vectorului

int caut( int v[10],int x)

{

               

                for(int i=1;i<=10;i++)

                                if(v[i]==x )

                                                return 1;

                return 0;

}

 

//b)          Sa se scrie un subprogram care sa returneze suma elementelor

// impare de pe pozitiile pare din fisierul date.in;

int suma( int v[10])

{

                int s=0;

                for(int i=2;i<=10;i=i+2)

                                if(v[i]%2==1)

                                                                                s=s+v[i];

               

                                return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"suma elementelor impare de pe pozitiile pare "<<suma(a)<<"\n";

                int x;

                cout<<"x=";

                cin>>x;

                if(caut(a,x)==1)

                                cout<<"x se afla in vector\n";

                else

                                cout<<"x NU se afla in vector\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.7

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii din  matrice, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze elementul maxim de pe diagonala principală a matricei din fişierul date.in;

c)       Să se scrie un subprogram care să determine numarul elementelor de tip palindrom  conţinute de fişierul date.in (palindrom este un număr de cel puţin două cifre care citit de la dreapta la stânga este identic cu numărul citit de la stânga la dreapta);

d)       Scrieţi în fişierul text date.out elementele de pe linia a doua din matricea de mai sus, ordonate crescător.

 

Exemplu:

Date de intrare:

                13  2  3  66  55  4  3  22  2  3  4  5  1  2  1  17

 

Date de ieşire :

                a) Fişierul text date.in conţine matricea:

                        13  2  3  66

                        55  4  3  22

                        2  3  4  5

                        1  2  1  17

                b) Elementul maxim de pe diagonala principală a matricei din fişierul date.in este:17

                c) Există 3 elemente de tip palindrom.

                d) Fişierul date.out conţine pe o linie: 3  4  22  55

#include <iostream.h>

#include <fstream.h>

 

 

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=4;i++)

                                 for(int j=1;j<=4;j++)

                                 f>>a[i][j];

                 f.close();

 }

 

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<16)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

 

 // fct ce ordoneaza linia 2

 void ord(int a[10][10])

 {

                int i,aux,j;

                for(i=1;i<=3;i++)

                                for(j=i+1;j<=4;j++)

                                                if(a[2][i]>a[2][j])

                                                {

                                                                aux=a[2][i];

                                                                a[2][i]=a[2][j];

                                                                a[2][j]=aux;

                                                }

 }

 

  //scriere in date.out

 

 void scrieord(int a[10][10])

 {

                 fstream f;

                 ord(a);

                 f.open("data.out",ios::out);

                 for(int i=1;i<=4;i++)

                                  f<<a[2][i]<<"\t";

                 f.close();

 }

 

 

// functie ce returneaza maximul de pe diagonala principala a matricei

int maxim( int a[10][10])

{

 

                int max=-32000;

                for(int i=1;i<=4;i++)

                                if(max<a[i][i])

                                                max=a[i][i];

               

                return max;

}

 

//functie ce verifica daca nr e palindrom

 

int palindrom(int nr)

{

                int cnr=0,c=nr;

                if(nr<10)   //daca nu are 2 cifre

                                return 0;

                while(nr!=0)

                {

                                cnr=cnr*10 + nr%10;

                                nr=nr/10;

                }

                if(c==cnr)

                                return 1;

                else

                                return 0;

}

 

 

//functie ce determina cate numere de tip palindrom se afla in matrice

int nr_pal(int a[10][10])

{

                int c=0;

                for(int i=1;i<=4;i++)

                                for(int j=1;j<=4;j++)

                                                if(palindrom(a[i][j])==1)

                                                                                                c++;

               

                                                return c;

}

 

 

 

void main()

{

                int a[10][10];

                crearef();

                citiremat(a);

                cout<<"Elementul maxim de pe diagonala principala: "<<maxim(a)<<"\n\n";

                cout<<"Numarul de numere de tip palindrom: "<<nr_pal(a)<<"\n\n";

                ord(a);

                scrieord(a);

               

 

 

}

 

 

Subiectul nr.8

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii dintr-o  matrice 4x4, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze elementul maxim de pe diagonala secundară a matricei din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor super prime conţinute de fişierul date.in (un număr este superprim dacă este prim atât el cât şi răsturnatul lui);

d)       Scrieţi în fişierul text date.out elementele de pe linia a treia din matricea de mai sus, ordonate crescător.

 

Exemplu:

Date de intrare:

                13  2  3  66  55  4  3  22  2  3  4  5  1  2  1  17

 

Date de ieşire :

                a) Fişierul text date.in conţine matricea:

                        13  2  3  66

                        55  4  3  22

                        2  3  4  5

                        1  2  1  17

                b) Elementul maxim de pe diagonala secundară a matricei din fişierul date.in este: 66

                c) Există 2 numere superprime.

                d) Fişierul date.out conţine pe o linie: 2  3  4  5

 

#include <iostream.h>

#include <fstream.h>

 

 

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

         fstream f;

         f.open("data.in",ios::in);

         for(int i=1;i<=4;i++)

                         for(int j=1;j<=4;j++)

                         f>>a[i][j];

         f.close();

 }

 

 

void crearef()

{

        fstream f;

        f.open("data.in",ios::out);

        int c=0,m;

        cout<<"introduceti numerele ";

        while(c<16)

        {

                        do

                        {

                                        cin>>m;

                        }while(m>100);

 

                        f<<m<<"\t";

                        c++;

        }

        f.close();

}

 

 

 

 // fct ce ordoneaza linia 3

 void ord(int a[10][10])

 {

        int i,aux,j;

        for(i=1;i<=3;i++)

                        for(j=i+1;j<=4;j++)

                                        if(a[3][i]>a[3][j])

                                        {

                                                        aux=a[3][i];

                                                        a[3][i]=a[3][j];

                                                        a[3][j]=aux;

                                        }

 }

 

  //scriere in date.out

 

 void scrieord(int a[10][10])

 {

         fstream f;

         ord(a);

         f.open("data.out",ios::out);

         for(int i=1;i<=4;i++)

                          f<<a[3][i]<<"\t";

         f.close();

 }

 

 

// functie ce returneaza maximul de pe diagonala secundara a matricei

int maxim( int a[10][10])

{

 

        int max=-32000;

        for(int i=1;i<=4;i++)

                        if(max<a[i][5-i])

                                        max=a[i][5-i];

       

        return max;

}

 

//functie ce returneaza inversul unui numar

 

int rasturnat(int nr)

{

        int cnr=0;

        while(nr!=0)

        {

                        cnr=cnr*10 + nr%10;

                        nr=nr/10;

        }

        return cnr;

}

 

//functie ce verifica daca un numar este prim

int prim(int x)

{

        if(x==1 || x==0)

                        return 0;

        for(int i=2;i<=x/2;i++)

                        if(x%i==0)

                                        return 0;

                        return 1;

}

 

//functie ce determina cate numere superprime se afla in matrice

int superprim(int a[10][10])

{

        int c=0;

        for(int i=1;i<=4;i++)

                        for(int j=1;j<=4;j++)

                                        if(a[i][j]>9)

                                        if(prim(a[i][j])==1 && prim(rasturnat(a[i][j]))==1)

                                                                                        c++;

       

                                        return c;

}

 

 

 

void main()

{

        int a[10][10];

        crearef();

        citiremat(a);

        cout<<"Elementul maxim de pe diagonala secundara: "<<maxim(a)<<"\n\n";

        cout<<"Numarul de numere superprime: "<<superprim(a)<<"\n\n";

        ord(a);

        scrieord(a);

       

 

 

}

 

Subiectul nr.9

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram  care să returneze suma cifrelor elementului maxim din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor prime conţinute de fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

Exemplu:

Date de intrare :

                37  23  4  77  12  34  5  90  18  19

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 37  23  4  77  12  34  5  90  18  19

                b) Suma cifrelor elementului maxim din fişierul date.in este: 9

                c) Numărul elementelor prime conţinute de fişierul date.in : 4

                d) Fişierul text date.out conţine pe o linie: 4  5  12  18  19  23  34  37  77  90

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//calculez max

int maxim(int v[11])

{

 

int           max=-32000;

               

                for(int i=1;i<=10;i++)

                                if(v[i]>max)

                                                max=v[i];

                                return max;

                                               

                               

}

 

//suma cifrelor

 

int cifre(int nr)

{

                int S=0;

                while(nr!=0)

                {

                                S=S+nr%10;

                                nr=nr/10;

                }

                return S;

}

 

//functie ce afla daca un numar este prim

int prim(int nr)

{

                if(nr==0||nr==1)

                                return 0;

                for(int i=2;i<=nr/2;i++)

                                if(nr%i==0)

                                                return 0;

                                return 1;

}

 

//functie ce afla numarul de elemente prime

int elemprime( int v[10])

{

                int c=0;

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==1)

                                                c++;

                return c;

}

 

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]>v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int v[11];

                crearef();

                citirevect(v);

                cout<<"\nSuma cifrelor elementului maxim: "<<cifre(maxim(v))<<"\n\n";

                cout<<"\nExista "<<elemprime(v)<<" numere prime in vector\n\n";

                ordonare(v);

}

 

Subiectul nr.10

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze numărul de elemente din fişierul date.in care au ultima cifră egală cu 3;

c)       Să se scrie un subprogram care să determine numărul elementelor conţinute de fişierul date.in care au suma cifrelor număr par;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat descrescător.

 

Exemplu:

Date de intrare :

                17  23  45  67  12  34  3  90  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 17  23  45  67  12  34  3  90  8  9

                b) Numărul de elemente din fişierul date.in care au ultima cifră egală cu 3: 2

                c) Numărul elementelor conţinute de fişierul date.in care au suma cifrelor număr par: 2

                d) Fişierul text date.out conţine pe o linie: 90 77 37  34  23  19   18  12  5  4

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

 

//functie ce returneaza numarul elementelor a caror ultima cifra este egala cu 3

int ultima(int v[10])

{

                int c=0;

                for(int i=1;i<=10;i++)

                                if(v[i]%10==3)

                                                c++;

                return c;

}

 

 

//suma cifrelor

 

int cifre(int nr)

{

                int S=0;

                while(nr!=0)

                {

                                S=S+nr%10;

                                nr=nr/10;

                }

                return S;

}

 

 

//functie ce returneaza numarul elementelor a caror suma a cifrelor este para

int sumapara (  int v[10])

{

                int c=0;

                for(int i=1;i<=10;i++)

                {

                                if(cifre(v[i])%2==0)

                                                c++;

                }

                return c;

 

}

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int v[11];

                crearef();

                citirevect(v);

                cout<<"Numarul elementelor a caror ultima cifra este 3: "<<ultima(v)<<"\n\n";

                cout<<"Numarul elementelor a caror suma a cifrelor este para: "<<sumapara(v)<<"\n\n";

                ordonare(v);

}

 

 

 

 

               

 

 

 

 

Subiectul nr.11

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze suma cifrelor pare ale numerelor din fişierul date.in;

c)       Să se scrie un subprogram care să determine numărul elementelor prime de două cifre conţinute de fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

 

Exemplu:

Date de intrare :

                7  23  4  17  12  34  5  90  8  9

 

Date de ieşire :

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  34  5  90  8  9

                b) Suma cifrelor pare ale numerelor din fişierul date.in este: 20

                c) În fişier sunt  2 numere prime de două cifre

                d) Fişierul text date.out conţine pe o linie: 4  5  7  8  9  12  17  23  34  90 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//functie ce afla daca un numar este prim

int prim(int nr)

{

                if(nr==0||nr==1)

                                return 0;

                for(int i=2;i<=nr/2;i++)

                                if(nr%i==0)

                                                return 0;

                                return 1;

}

 

//functie ce afla nr elem prime de doua cifre

int contor( int v[10])

{

                int m=0;;

                for(int i=1;i<=10;i++)

                                if(v[i]>=10&&v[i]<=99) //daca are 2 cifre

                                if(prim(v[i])==1 )

                                                m++;

                return m;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]>v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

//suma cifrelor pAre

int suma( int v[10])

{

                int s=0,c;

                for(int i=1;i<=10;i++)

                {

                                c=v[i];

                                while(c!=0)

                                {

                                                if(c%2==0) //daca nr e par => ultima cifra para

                                                                s=s+c%10;

                                                c=c/10;

                                }

                }

               

                                return s;

}

 

void main()

{

                int v[11];

               

                crearef();

                citirevect(v);

                cout<<"numarul de numere prime de doua cifre"<<contor(v);

                cout<<"\nSuma cifrelor pare "<<suma(v)<<"\n";

                ordonare(v);

 

               

}

 

 

Subiectul nr.12

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze elementele din fişierul date.in care aparţin intervalului [a,b]  unde a şi b sunt numere întregi mai mici decât 100 citite de la tastatură;

c)       Să se scrie un subprogram care să determine cel mai mare număr prim din fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat descrescător.

 

Exemplu:

Date de intrare :

                37  23  4  77  12  34  5  90  18  19

 

Date de ieşire :

                a) Fişierul text date.in conţine pe o linie: 37  23  4  77  12  34  5  90  18  19

                b) Pentru intervalul [36, 80] elementele din fişierul date.in care aparţin intervalului sunt: 37 77 

                c) Cel mai mare număr prim din fişierul date.in este: 37

                d) Fişierul text date.out conţine pe o linie:  90  77  37  34  23  19  18  12  5  4

 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//functie ce afla daca un numar este prim

int prim(int nr)

{

                if(nr==0||nr==1)

                                return 0;

                for(int i=2;i<=nr/2;i++)

                                if(nr%i==0)

                                                return 0;

                                return 1;

}

 

//functie ce afla cel mai mare numar prim

int maxprim( int v[10])

{

                int max=-32000;;

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==1 && max<v[i])

                                                max=v[i];

                return max;

}

 

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

//afisare elem din intervalul a b

void interval(int x[11],int a, int b)

{

for(int i=1;i<=10;i++)

                if(x[i]>=a && x[i]<=b )

                cout<<x[i]<<"\t";

 

}

void main()

{

                int v[11],a,b;

               

                crearef();

                citirevect(v);

                cout<<"Capetele intervalului\na=";

                cin>>a;

                cout<<"b=";

                cin>>b;

                cout<<" elementele din interval ";

                interval(v,a,b);

                cout<<"\nCel mai mare numar prim "<<maxprim(v)<<"\n";

                ordonare(v);

 

               

}

 

 

Subiectul nr.13

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze suma cifrelor impare ale numerelor din fişierul date.in;

c)       Să se scrie un subprogram care să determine cel mai mare număr palindrom din fişierul date.in (număr palindrom este un şir de cel puţin două cifre care citit de la dreapta la stânga este identic cu numărul citit de la stânga la dreapta);

d)       Scrieţi în fişierul text date.out şirul dat, ordonat crescător.

 

Exemplu:

Date de intrare:

                7  23  4  17  12  33  5  99  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  33  5  99  8  9

                b) Suma cifrelor impare ale numerelor din fişierul date.in: 57

                c) Cel mai mare număr palindrom din fişierul date.in este: 99

                d) Fişierul text date.out conţine pe o linie: 4  5  7  8  9  12  17  33  34  99

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//functie ce afla daca un numar este palindrom

int palindrom(int nr)

{

                int c=nr,ni=0;

                if(nr<=9)    //daca nu are 2 cifre

                                return 0;

                while(c!=0)

                {

                                ni=ni*10+c%10;

                                c=c/10;

                }

                if(nr==ni)

                                return 1;

                else

                                return 0;

}

 

//functie ce afla cel mai mare numar palindrom

int maxim( int v[10])

{

                int max=-32000;;

                for(int i=1;i<=10;i++)

                                if(palindrom(v[i])==1 && max<v[i])

                                                max=v[i];

                return max;

}

 

//suma cifrelor impare ale numerelor din fisier         

int suma( int v[10])

{

                int s=0,c;

                for(int i=1;i<=10;i++)

                {

                                c=v[i];

                                while(c!=0)

                                {

                                                if(c%2==1) //daca nr e impar => ultima cifra impara

                                                                s=s+c%10;

                                                c=c/10;

                                }

                }

               

                                return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"suma cifrelor impare "<<suma(a)<<"\n";

                cout<<"Cel mai mare numar prim "<<maxim(a)<<"\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.14

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze suma elementelor pare de pe poziţiile impare din fişierul date.in;

c)       Să se scrie un subprogram care să determine cel mai mare număr prim din fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat descrescător.

 

Exemplu:

Date de intrare :

                37  23  4  77  12  34  5  90  18  19

 

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 37  23  4  77  12  34  5  90  18  19

                b) Suma elementelor pare de pe poziţiile impare din fişierul date.in: 34

                c) Cel mai mare număr prim din fişierul date.in este: 37

                d) Fişierul text date.out conţine pe o linie: 90  77  37  34  23  19  18  12  5  4

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//functie ce afla daca un numar este prim

int prim(int nr)

{

                if(nr==0||nr==1)

                                return 0;

                for(int i=2;i<=nr/2;i++)

                                if(nr%i==0)

                                                return 0;

                                return 1;

}

 

//functie ce afla cel mai mare numar prim

int maxprim( int v[10])

{

                int max=-32000;;

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==1 && max<v[i])

                                                max=v[i];

                return max;

}

 

//b)          Sa se scrie un subprogram care sa returneze suma elementelor

// pare de pe pozitiile impare din fisierul date.in;

int suma( int v[10])

{

                int s=0;

                for(int i=1;i<=10;i=i+2)

                                if(v[i]%2==0)

                                                                                s=s+v[i];

               

                                return s;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"suma elementelor pare de pe pozitiile impare "<<suma(a)<<"\n";

                cout<<"Cel mai mare numar prim "<<maxprim(a)<<"\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.15

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii din  matrice, separate prin spaţii ;

b)       Să se scrie un subprogram care să returneze elementul minim de pe diagonala secundară a matricei din fişierul date.in;

c)       Să se scrie un subprogram care să determine cel mai mare divizor comun al elementelor situate în colţul stânga sus şi colţul dreapta jos;

d)       Scrieţi în fişierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescător.

 

Exemplu:

Date de intrare:

                9   2  3  6  5  4  3  2  2  3  4  5  1  2  1  2

 

Date de ieşire :

                a) Fişierul text date.in  conţine matricea:

                                9  2  3  6

                                5  4  3  2

                                2  3  4  5

                                1  2  1  2

                b) Elementul minim de pe diagonala secundară a matricei din fişierul date.in este:1

                c) Cel mai mare divizor comun al elementelor situate în colţul stânga sus şi colţul dreapta jos este: 1

                d) Fişierul date.out conţine: 2 3 4 5

#include <iostream.h>

#include <fstream.h>

 

int cmmdc(int a,int b)

{

                while(a!=b)

                                if(a>b)

                                                a=a-b;

                                else

                                                b=b-a;

                                return a;

}

 

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<16)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

//elementul minim de pe diagonala secundara a matricei

int suprg(int a[10][10])

// ce are termenul general a[i][n-i+1] si am calculat maximul

{

                int min,i,j;

                min=32000;

                for(i=1;i<=4;i++)

                                if(min>a[i][5-i])

                                                                min=a[i][5-i];

                                                return min;

}

 

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=4;i++)

                                 for(int j=1;j<=4;j++)

                                 f>>a[i][j];

                 f.close();

 }

 

 

 // fct ce ordoneaza col 2 

 void ord(int a[10][10])

 {

                int i,aux,j;

                for(i=1;i<=3;i++)

                                for(j=i+1;j<=4;j++)

                                                if(a[2][i]>a[2][j])

                                                {

                                                                aux=a[2][i];

                                                                a[2][i]=a[2][j];

                                                                a[2][j]=aux;

                                                }

 }

               

 

                                                 

 

 //scriere in date.out

 

 void scrieord(int a[10][10])

 {

                 fstream f;

                 ord(a);

                 f.open("data.out",ios::out);

                 for(int i=1;i<=4;i++)

                                  f<<a[2][i]<<"\t";

                 f.close();

 }

 

 void main()

 {

                 int a[10][10];

                 crearef();

                 citiremat(a);

     cout<<"Elem min de pe diag sec "<<suprg(a)<<"\n";

                 cout<<"Cmmdc-ul cerut: "<<cmmdc(a[1][1],a[4][4])<<"\n";

                 scrieord(a);

 

 }

 

 

Subiectul nr.16

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram  care să returneze câte dintre elementele din fişierul date.in au trei divizori;

c)       Să se scrie un subprogram care să determine cel mai mare număr neprim din fişierul date.in;

d)       Scrieţi în fişierul text date.out şirul dat, ordonat descrescător.

 

Exemplu:

 Date de intrare:

                7  23  4  17  12  49  5  81   8  91

 

Date de ieşire :

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  49  5  81  8  91

                b) Două elemente din fişierul date.in au trei divizori

                c) Cel mai mare număr neprim din fişierul date.in este: 81

                d) Fişierul date.out conţine: 91  81  34  33  17  12  8  7  5  4

 

#include <iostream.h>

#include <fstream.h>

#include <math.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//functie ce afla daca un numar este prim

int prim(int nr)

{

                if(nr==0||nr==1)

                                return 0;

                for(int i=2;i<=nr/2;i++)

                                if(nr%i==0)

                                                return 0;

                                return 1;

}

 

//functie ce afla cel mai mare numar prim

int maxneprim( int v[10])

{

                int max=-32000;;

                for(int i=1;i<=10;i++)

                                if(prim(v[i])==0 && max<v[i])

                                                max=v[i];

                return max;

}

 

//functie ce afla numarul de elemente cu 3 divizori .

//UN NR ARE 3 DIVIZORI DACA ESTE PATRATUL UNUI NUMAR PRIM. ex 25=5*5,

int elemprime( int v[10])

{

                int c=0;

                for(int i=1;i<=10;i++)

                {

                                int y=sqrt(v[i]);

                                if(y==sqrt(v[i])) //daca v[i] e patrat perfect

                                if(prim(y)==1)  //si e patratul unui numar prim

                                                                                c++;

                }

                                return c;

}

 

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]<v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int a[11];

               

                crearef();

                citirevect(a);

                cout<<"elementele din fisier cu trei divizori "<<elemprime(a)<<"\n";

                cout<<"Cel mai mare numar neprim "<<maxneprim(a)<<"\n";

                ordonare(a);

 

               

}

 

 

Subiectul nr.17

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram  care să returneze elementele din fişierul date.in care sunt divizibile cu o valoare x citită de la tastatură;

c)       Să se scrie un subprogram care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze între ultimul şi penultimul element al tabloului media lor aritmetică;

d)       Scrieţi în fişierul text date.out şirul creat mai sus, ordonat descrescător.

 

Exemplu:

Date de intrare :

                7  23  4  17  12  49  5  81  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  49  5  81  8  9

                b) Pentru x=4 elementele din fişierul date.in divizibile cu x citit de la tastatură sunt: 4  12  8

                c)Tabloul unidimensional: 7  23  4  17  12  49  5  81  8  8.5  9

                d) Fişierul date.out conţine: 81  49  23  17  12  9  8.5  8  7  5  4 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//adaug intre penultimul si ultimul elem media lor aritmetica

 

void inserez_ma(int a[11])

{

                fstream f("data.out", ios::out);

                int i,j;

                float v[20];

                //copiez primele 9 elemente din vectorul citit din fisier

                for( i=1;i<10;i++)

                                v[i]=a[i];

                //realizez inserarea

                v[10]=((float)a[9]+a[10])/2.;

                v[11]=a[10];

                //ordonez vectorul nou

                for( i=1;i<10;i++)

                                for(j=i+1;j<=11;j++)

                                                if(v[i]<v[j])

                                                {

                                                int c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

                                                }

                //il scriu in fisier

                for(i=1;i<=11;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void divizibile_k(int a[11],int k)

 {

               

                 for(int i=1;i<=10;i++)

                                 if(a[i]%k==0)

                                                 cout<<a[i]<<"\t";

               

 }

 

 

void main()

{

                int a[11];

                crearef();

                citirevect(a);

                inserez_ma(a);

                cout<<"k=";

                int k;

                cin>> k;

                cout<<"elementele din fisier divizibile cu k ";

                divizibile_k(a,k);

               

}

 

 

Subiectul nr.18

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze cel mai mare divizor comun al  elementelor din fişierul date.in;

c)       Să se scrie un subprogram care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze între ultimul şi penultimul element al tabloului o valoare x citită de la tastatură;

d)       Scrieţi în fişierul text date.out şirul creat mai sus, ordonat descrescător.

 

Exemplu:

Date de intrare:

                7  23  4  17  12  33  5  99  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  33  5  99  8  9

                b) Cel mai mare divizor comun al  elementelor din fişierul date.in este 1

                c) Pentru x=41 tabloul unidimensional  devine: 7  23  4  17  12  33  5  99  8  41  9

                d) Fişierul date.out conţine: 99  34  33  17  12  9  8  7  5  4   

 

 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//adaug intre penultimul si ultimul elem media lor aritmetica

 

void inserez(int a[11],int x)

{

                fstream f("data.out", ios::out);

                int i,j;

                int v[20];

                //copiez primele 9 elemente din vectorul citit din fisier

                for( i=1;i<10;i++)

                                v[i]=a[i];

                //realizez inserarea

                v[10]=x;

                v[11]=a[10];

                //ordonez vectorul nou

                for( i=1;i<10;i++)

                                for(j=i+1;j<=11;j++)

                                                if(v[i]<v[j])

                                                {

                                                                int c;

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

                                                }

                //il scriu in fisier

                for(i=1;i<=11;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

int cmmdc(int a,int b)

{

                while(a!=b)

                                if(a>b)

                                                a=a-b;

                                else

                                                b=b-a;

                                return a;

}

 

int cmmdcvector(int a[11])

{

                int c=a[1];

                for(int i=2;i<=10;i++)

                                c=cmmdc(c,a[i]);

                return c;

}

 

 

void main()

{

                int a[11];

                crearef();

                citirevect(a);

                cout<<"x=";

                int x;

                cin>>x;

                inserez(a,x);

                cout<<"Cmmdc-ul elementelor din fisier "<<cmmdcvector(a)<<"\n";

}

 

Subiectul nr.19

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze câte dintre elementele din fişierul date.in sunt prime cu o valoare x citită de la tastatură;

c)       Să se scrie un subprogram care să calculeze media aritmetică a numerelor din şir şi să o insereze la jumătatea şirului;

d)       Scrieţi în fişierul text date.out şirul de mai sus ordonat descrescător.

 

Exemplu:

Date de intrare :

                7  23  4  17  12  49  5  81  8  91

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  23  4  17  12  49  5  81  8  91

                b) Pentru x=3 opt elemente din fişierul date.in sunt prime cu 3

                c) Şirul după inserare: 7  23  4  17  12  29.7  49  5  81  8  91

                d) Fişierul date.out conţine: 91  81  49  29.7  23  17  12  8  7  5  4

 #include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//adaug intre penultimul si ultimul elem media lor aritmetica

 

void inserez_ma(int a[11])

{

                fstream f("data.out", ios::out);

                int i,j;

                float v[20],ma=0;

                //calcul medie

                for( i=1;i<=10;i++)

                                ma=ma+a[i];

                ma=ma/10.;

                //copiez primele 9 elemente din vectorul citit din fisier

                for( i=1;i<=5;i++)

                                v[i]=a[i];

                                //realizez inserarea

                v[6]=ma;

                for( i=6;i<=10;i++)

                                v[i+1]=a[i];

               

                //ordonez vectorul nou

                for( i=1;i<10;i++)

                                for(j=i+1;j<=11;j++)

                                                if(v[i]<v[j])

                                                {

                                                                int c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

                                                }

                //il scriu in fisier

                for(i=1;i<=11;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

int cmmdc(int a,int b)

{

                while(a!=b)

                                if(a>b)

                                                a=a-b;

                                else

                                                b=b-a;

                                return a;

}

//              Sa se scrie un subprogram care sa returneze câte dintre elementele

// din fisierul date.in sunt prime cu o valoare x citita de la tastatura;

int contor(int a[11],int x)

{

                int c=0;

                for(int i=1;i<=10;i++)

                                if(cmmdc(x,a[i])==1)

                                                c++;

                return c;

}

 

 

void main()

{

                int a[11];

                crearef();

                citirevect(a);

                inserez_ma(a);

                cout<<"x=";

                int x;

                cin>>x;

                cout<<"Nr elementelor din fisier prime cu x ==> "<<contor(a,x)<<"\n";

}

 

 

Subiectul nr.20

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să determine elementul minim şi elementul maxim din fişierul date.in şi poziţiile pe care le ocupă în şirul numerelor date;

c)       Să se scrie un subprogram care să determine câte dintre elementele şirului cuprinse într-un interval citit de la tastatură sunt numere pare;

d)       Scrieţi în fişierul text date.out şirul de mai sus ordonat  crescător.

 

Exemplu:-

Date de intrare :

                7  24  4  17  12  33  5  99  8  9

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 7  24  4  17  12  33  5  99  8  9

                b) Elementul minim: 4 şi ocupă poziţia 3; elementul maxim: 99 şi ocupă poziţia 8

                c) Pentru intervalul [10, 40] două numere sunt pare

                d) Fişierul date.out conţine: 4  5  7  8  9  12  17  24  33  99   

 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//calculez min si max si aflu pozitia lor din fisier cu aj vectorului

void minmax(int v[11],int &max, int &min, int &m,int &n)

{

 

                max=-32000;

                min=32000;

                for(int i=1;i<=10;i++)

                                if(v[i]>max)

                                {

                                                max=v[i];

                                                m=i;

                                }

                                else

                                                if(v[i]<min)

                                                {

                                                                min=v[i];

                                                                n=i;

                                                }

}

 

//numara elem pare din intervalul a b

int contor(int x[11],int a, int b)

{

 

int c=0;

for(int i=1;i<=10;i++)

                if(x[i]>=a && x[i]<=b && x[i]%2==0)

                c++;

return c;

}

 

//ordonare+afisare in fisier

void ordonare(int v[11])

{

                fstream f("data.out", ios::out);

                int i,j,c;

                //ordonez vectorul

                for( i=1;i<10;i++)

                                for(j=i+1;j<=10;j++)

                                                if(v[i]>v[j])

                                                {

                                                                c=v[j];

                                                                v[j]=v[i];

                                                                v[i]=c;

 

                                                }

                //il scriu in fisier

                for(i=1;i<=10;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

 

void main()

{

                int v[11];

                crearef();

                citirevect(v);

                int min,max,pmin,pmax;

                minmax(v,max,min,pmax,pmin);

                cout<<"Elementul minim: "<<min<<" si ocupa pozitia "<<pmin<<" elementul maxim: "<<max<<" si ocupa pozitia "<<pmax<<"\n";

                int a,b;

                cout<<"Introduceti capetele intervalului\n";

                cin>>a>>b;

                cout<<"Pentru intervalul ["<<a<<","<<b<<"] sunt "<< contor(v,a,b)<<" numere sunt pare\n";

                ordonare(v);

}

 

 

 

 

               

 

 

 

Subiectul nr.21

 

Se citeşte de la tastatură un şir de 10 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină pe o linie cele 10 valori, separate prin spaţiu;

b)       Să se scrie un subprogram care să returneze cel mai mare divizor comun al elementelor din fişierul date.in;

c)       Să se scrie un subprogram care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze între ultimul şi penultimul element al tabloului media lor aritmetică;

d)       Scrieţi în fişierul text date.out şirul de mai sus ordonat descrescător.

 

Exemplu:

Date de intrare :

                6  3  24  27  12  9  15  81  18  21

 

Date de ieşire:

                a) Fişierul text date.in conţine pe o linie: 6  3  24  27  12  9  15  81  18  21

                b) Cel mai mare divizor comun al elementelor din fişierul date.in este 3

                c) Sirul după inserare: 6  3  24  27  12  9  15  81  18  19.5  21

                d) Fişierul date.out conţine: 81  27  24  21  19.5  18  15  12  9  6  3 

 

#include <iostream.h>

#include <fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<10)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

 

//citirea vector din fisier

 void citirevect(int a[11])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=10;i++)

                                 f>>a[i];

                 f.close();

 }

 

//adaug intre penultimul si ultimul elem media lor aritmetica

 

void inserez_ma(int a[11])

{

                fstream f("data.out", ios::out);

                int i,j;

                float v[20];

                //copiez primele 9 elemente din vectorul citit din fisier

                for( i=1;i<10;i++)

                                v[i]=a[i];

                //realizez inserarea

                v[10]=((float)a[9]+a[10])/2.;

                v[11]=a[10];

                //ordonez vectorul nou

                for( i=1;i<10;i++)

                                for(j=i+1;j<=11;j++)

                                                if(v[i]<v[j])

                                                {

                                                                int c=v[j];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

                                                                v[j]=v[i];

                                                                v[i]=c;

                                                }

                //il scriu in fisier

                for(i=1;i<=11;i++)

                                                f<<v[i]<<"\t";

                f.close();

                               

}

 

int cmmdc(int a,int b)

{

                while(a!=b)

                                if(a>b)

                                                a=a-b;

                                else

                                                b=b-a;

                                return a;

}

 

int cmmdcvector(int a[11])

{

                int c=a[1];

                for(int i=2;i<=10;i++)

                                c=cmmdc(c,a[i]);

                return c;

}

 

 

void main()

{

                int a[11];

                crearef();

                citirevect(a);

                inserez_ma(a);

                cout<<"Cmmdc-ul elementelor din fisier "<<cmmdcvector(a)<<"\n";

}

 

Subiectul nr.22

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii dintr-o  matrice 4x4, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze elementul minim al matricei şi numărul lui de apariţii;

c)       Să se scrie un subprogram care să determine numărul elementelor de tip palindrom de sub diagonala principală a matricei (palindrom este un număr de cel puţin două cifre care citit de la dreapta la stânga este identic cu numărul citit de la stânga la dreapta);

d)       Scrieţi în fişierul text date.out elementele de pe prima linie a matricei de mai sus ordonate crescător.

 

Exemplu:

Date de intrare :

                1  2  33  6  5  4  3  2  22  3  44  5  1  2  1  2

 

Date de ieşire:

                a) Fişierul text date.in conţine matricea:

                                1  2  33  6

                                5  4  3  2

                                22  3  44  5

                                1  2  1  2

                b) Elementul minim al matricei  este 1 şi numărul lui de apariţii este 3

                c) Există un singur element palindrom sub diagonala principală

                d) Fişierul date.out conţine: 1 2 6 33

 

#include<iostream.h>

#include<fstream.h>

 

 

void crearef()

{

        fstream f;

        f.open("data.in",ios::out);

        int c=0,m;

        cout<<"introduceti numerele ";

        while(c<16)

        {

                        do

                        {

                                        cin>>m;

                        }while(m>100);

 

                        f<<m<<"\t";

                        c++;

        }

        f.close();

}

 

//elementul min

int minim(int a[10][10])

{

        int min,i,j;

        min=32000;

        for(i=1;i<=4;i++)

                        for(j=1;j<=4;j++)

                        if(min>a[i][i])

                                                        min=a[i][i];

        return min;

}

 

//nr de aparitii al lui x in matrice

int contorx(int a[10][10],int x)

{

        int m=0,i,j;

                        for(i=1;i<=4;i++)

                        for(j=1;j<=4;j++)

                           if(x==a[i][j])

                                                        m++;

        return m;

}

 

 

 

//prg ce verifica daca un nr e perfect

//parcurgem toti divizorii unui numar "n"

//si verificam daca suma divizorilor lui este egala cu el insusi

int palindrom(int nr)

{

  int c,v=0;

  if(nr<=9)

          return 0;

 c=nr;

 while(c!=0)

 {

         v=c%10+v*10;

         c=c/10;

 }

  if(nr==v)

     return 1;

  else

          return 0;

}

 

 

// nr palindrom de sub diag pp

int pal(int a[10][10])

{

        int c=0,i,j;

       

        for(i=1;i<=4;i++)

        for(j=1;j<i;j++)

                        if(palindrom(a[i][j])==1)

                                        c++;

return c;

}

 

 

 

 // fct ce ordoneaza linia 1 

 void ord(int a[10][10])

 {

        int i,aux,j;

        for(i=1;i<=3;i++)

                        for(j=i+1;j<=4;j++)

                                        if(a[1][i]>a[1][j])

                                        {

                                                        aux=a[1][i];

                                                        a[1][i]=a[1][j];

                                                        a[1][j]=aux;

                                        }

 }

       

 

                                         

 

 //scriere in date.out

 

 void scrieord(int a[10][10])

 {

         fstream f;

         ord(a);

         f.open("data.out",ios::out);

         for(int i=1;i<=4;i++)

                          f<<a[1][i]<<"\t";

         f.close();

 }

 

 void main()

 {

         int a[10][10],min,n=4,c;

         crearef();

         citiremat(a);

     min=minim(a);

         cout<<"Elem min  "<<min<<" ce apare de "<<contorx(a,min)<<"\n";

         cout<<"Nr palindroamelor de sub diag pp "<<pal(a)<<"\n";

                         scrieord(a);

 

 }

 

Subiectul nr.23

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii unei linii dintr-o  matrice 4x4, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze elementul maxim de sub diagonala secundară a matricei din fişierul date.in;

c)       Să se scrie un subprogram care să determine câte dintre elementele matricei sunt numere perfecte (un număr este perfect dacă este egal cu suma divizorilor săi fara el însuşi);

d)       Scrieţi în fişierul text date.out elementele de pe coloana a doua din matricea de mai sus ordonate crescător.

 

Exemplu:

Date de intrare:

                1  2  3  6  5  4  3  2  2  3  4  5  1  2  1  2

Date de ieşire:

                a) Fişierul text date.in conţine matricea:

                                1  2  3  6

                                5  4  3  2

                                2  3  4  5

                                1  2  1  2

                b) Elementul maxim de sub diagonala secundară a matricei din fişierul date.in este 5

                c) Există un singur număr perfect (6=1+2+3)

                d) Fişierul date.out conţine: 2  2  3  4

 

 

 

#include<iostream.h>

#include<fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<16)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

//elementul maxim de sub diagonala secundara a matricei

int suprg(int a[10][10])//am parcurs toate elem de sub diagonala secundara

// ce are termenul general a[i][n-i+1] si am calculat maximul

{

                int max,i,j;

                max=-32000;

                for(i=1;i<4;i++)

                                for(j=4-i+1;j<4;j++)

                                                if(max<a[i][j])

                                                                max=a[i][j];

                                                return max;

}

//prg ce verifica daca un nr e perfect

//parcurgem toti divizorii unui numar "n"

//si verificam daca suma divizorilor lui este egala cu el insusi

int perfect(int n)

{

                int k,s;

                s=0;

                for(k=1;k<=n/2;k++)

                                if(n%k==0)

                                                s=s+k;

                return s==n;

}

//verificam cate numere deacest gen se regasesc in fisier

int contorperfect(int a[10][10])

{

                int i,j,c=0;

                for(i=0;i<4;i++)

                                for(j=0;j<4;j++)

                                                if(perfect(a[i][j])==1)

                                                                c++;

                                                return c;

}

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=0;i<4;i++)

                                 for(int j=0;j<4;j++)

                                 f>>a[i][j];

                 f.close();

 }

 

 

 // fct ce ordoneaza col 2 

 void ord(int a[10][10])

 {

                int i,aux,j;

                for(i=0;i<3;i++)

                                for(j=i+1;j<4;j++)

                                                if(a[i][1]>a[j][1])

                                                {

                                                                aux=a[i][1];

                                                                a[i][1]=a[j][1];

                                                                a[j][1]=aux;

                                                }

 }

               

 

                                                 

 

 //scriere in date.out

 

 void scrieord(int a[10][10])

 {

                 fstream f;

                 ord(a);

                 f.open("data.out",ios::out);

                 for(int i=0;i<4;i++)

                                  f<<a[i][1]<<"\t";

                 f.close();

 }

 

 void main()

 {

                 int a[10][10],max,n=4,c;

                 crearef();

                 citiremat(a);

     max=suprg(a);

                 cout<<"Elem max de sub diag sec "<<max<<"\n";

                 c=contorperfect(a);

                 cout<<"Nr elem perfecte: "<<c<<"\n";

                 scrieord(a);

 

 }

 

 

Subiectul nr.24

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii dintr-o  matrice 4x4, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze suma elementelor pare de pe marginea exterioară a matricei;

c)       Să se scrie un subprogram care să determine numărul elementelor matricei egale cu o valoare x dată de la tastatură;

d)       Scrieţi in fişierul text date.out elementele de pe coloana a treia din matricea de mai sus, ordonate descrescător.

 

Exemplu:

Date de intrare:

1  2  3  6  5  4  3  2  2  3  4  5  1  2  1  2

 

Date de ieşire:

                a) Fişierul text date.in conţine matricea:

                                1  2  3  6

                                5  4  3  2

                                2  3  4  5

                                1  2  1  2

                b) Suma elementelor pare de pe marginea exterioară a matricei este:16

                c) Pentru x=5 se va afişa: 2

                d) Fişierul date.out conţine: 4 3 3 1

 

#include<iostream.h>

#include<fstream.h>

 

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<16)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

 

                f.close();

}

 

 

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=4;i++)

                                 for(int j=1;j<=4;j++)

                                 f>>a[i][j];

                 f.close();

 }

 

 

 

//suma elem pare de pe marginea exterioara

 

int suma(int a[10][10])

{

                int j,s=0;

                //linia 1

                for(j=1;j<=4;j++)

                                if(a[1][j]%2==0)

                                  s=s+a[1][j];

                                //col 4

                for(j=2;j<=4;j++)

                  if(a[j][4]%2==0)

                                s=s+a[j][4];

                  //linia 4

                for(j=3;j>=1;j--)

                                if(a[4][j]%2==0)

                                                s=s+a[4][j];

                                //col 4

                for(j=3;j>=2;j--)

                                if(a[j][1]%2==0)

                                                s=s+a[j][1];

                return s;

}

 

 

//numarul elem matricei egala cu o valoare x

 

int numar(int a[10][10],int x)

{

               

                int i,j,c=0;

 

                for(i=1;i<=4;i++)

                                for(j=1;j<=4;j++)

                                                if(a[i][j]==x)

                                                                c++;

                return c;

}

 

  // fct ce ordoneaza col 2 

 void ord(int a[10][10])

 {

                int i,aux,j;

                for(i=1;i<4;i++)

                                for(j=i+1;j<=4;j++)

                                                if(a[i][3]<a[j][3])

                                                {

                                                                aux=a[i][3];

                                                                a[i][3]=a[j][3];

                                                                a[j][3]=aux;

                                                }

 }

               

 

                                                 

 

 //scriere in date.out

 

 void scrieord(int a[10][10])

 {

                 fstream f;

                 ord(a);

                 f.open("data.out",ios::out);

                 for(int i=1;i<=4;i++)

                                  f<<a[i][3]<<"\t";

                 f.close();

 }

 

 void main()

 {

                 int a[10][10],s,c,x;

                 crearef();

                 citiremat(a);

     s=suma(a);

                 cout<<"Suma elem pare de pe margine exterioara "<<s<<"\n";

                 cout<<"x=";

                cin>>x;

                c=numar(a,x);

                cout<<x<<"apare de "<<c<<" ori\n";

                 citiremat(a);

                 scrieord(a);

 

 }

 

 

Subiectul nr.25

 

Se citeşte de la tastatură un şir de 16 numere întregi mai mici decât 100.

a)       Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie afişată conţine elementele unei linii dintr-o  matrice 4x4, separate prin spaţii;

b)       Să se scrie un subprogram care să returneze elementul maxim de pe diagonala principală a matricei din fişierul date.in;

c)       Să se scrie un subprogram care să determine câte dintre elementele matricei sunt numere perfecte (un număr e perfect dacă este egal cu suma divizorilor săi fara el însuşi);

d)       Scrieţi în fişierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescător.

 

Exemplu:

Date de intrare:

1  2  3  6  5  4  3  2  2  3  4  5  1  2  1  2

 

Date de ieşire:

                a) Fişierul text date.in conţine matricea:

                                1  2  3  6

                                5  4  3  2

                                2  3  4  5

                                1  2  1  2

                b) Elementul maxim de pe diagonala principală a matricei din fişierul date.in este: 4

                c) Există un singur număr perfect (6=1+2+3)

                d) Fişierul date.out conţine: 2 3 4 5

#include<iostream.h>

#include<fstream.h>

 

void crearef()

{

                fstream f;

                f.open("data.in",ios::out);

                int c=0,m;

                cout<<"introduceti numerele ";

                while(c<16)

                {

                                do

                                {

                                                cin>>m;

                                }while(m>100);

 

                                f<<m<<"\t";

                                c++;

                }

                f.close();

}

 

//elementul maxim de pe diagonala pp a matricei

int suprg(int a[10][10])

{

                int max,i,j;

                max=-32000;

                for(i=1;i<=4;i++)

                                if(max<a[i][i])

                                                                max=a[i][i];

                return max;

}

//prg ce verifica daca un nr e perfect

//parcurgem toti divizorii unui numar "n"

//si verificam daca suma divizorilor lui este egala cu el insusi

int perfect(int n)

{

                int k,s;

                s=0;

                for(k=1;k<=n/2;k++)

                                if(n%k==0)

                                                s=s+k;

                return s==n;

}

//verificam cate numere deacest gen se regasesc in fisier

int contorperfect(int a[10][10])

{

                int i,j,c=0;

                for(i=1;i<=4;i++)

                                for(j=1;j<=4;j++)

                                                if(perfect(a[i][j])==1)

                                                                c++;

                                                return c;

}

//citirea matricei din fisier

 void citiremat(int a[10][10])

 {

                 fstream f;

                 f.open("data.in",ios::in);

                 for(int i=1;i<=4;i++)

                                 for(int j=1;j<=4;j++)

                                 f>>a[i][j];

                 f.close();

 }

 

 

 // fct ce ordoneaza linia 2 

 void ord(int a[10][10])

 {

                int i,aux,j;

                for(i=1;i<=3;i++)

                                for(j=i+1;j<=4;j++)

                                                if(a[2][i]>a[2][j])

                                                {

                                                                aux=a[2][i];

                                                                a[2][i]=a[2][j];

                                                                a[2][j]=aux;

                                                }

 }

               

 

                                                 

 

 //scriere in date.out

 

 void scrieord(int a[10][10])

 {

                 fstream f;

                 ord(a);

                 f.open("data.out",ios::out);

                 for(int i=1;i<=4;i++)

                                  f<<a[2][i]<<"\t";

                 f.close();

 }

 

 void main()

 {

                 int a[10][10],max,n=4,c;

                 crearef();

                 citiremat(a);

     max=suprg(a);

                 cout<<"Elem max de pe diag pp "<<max<<"\n";

                 c=contorperfect(a);

                 cout<<"Nr elem perfecte: "<<c<<"\n";

                 scrieord(a);

 

 }

 

 

 

Colectivul de autori: 

-          Prof. Ştefania Penea – Colegiul Naţional „Spiru Haret”, sector 2

-          Prof. Doina Druţă – Grup Şcolar „Nichita Stănescu”, sector 3

-          Prof. Anca Ileana – Liceul Teoretic „Grigore Moisil”, sector 6

 

Coordonator:

Prof. Brânduşa Bogdan – Inspector de specialitate informatică, Inspectoratul Şcolar al Municipiului Bucureşti