PROGRAMARE
Subiectul nr.1
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu.
b) Sa se scrie un subprogram care sa returneze elementul minim din fisierul date.in;
c) Sa se scrie un subprogram care sa creeze un tablou unidimensional cu elementele fisierului date.in si sa se insereze între ultimul si penultimul element al tabloului media lor aritmetica;
d) Scrieti în fisierul text date.out sirul nou obtinut, ordonat crescator.
#include <fstream.h>
void creare()
f.close();
int minim()
void crearet(float a[11],int &n)
void ordon(float a[11],int n)
}while (ok==0);
void scrie()
void main()
Subiectul nr.2
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu.
b) Sa se scrie un subprogram care sa returneze elementul maxim din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime continute de fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();}
int maxim()
int prim(int a)
int nr_prime()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.3
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor elementelor pare din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor patrate perfecte din fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat decrescator.
#include <fstream.h>
#include <math.h>
void creare()
f.close();}
int suma_cifre(int a)
return s;}
int suma_nr_pare()
int nr_perfecte()
void crearet(int a[10],int &n)
void ordon(int a[10],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.4
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa determine suma elementelor impare continute de fisierul date.in;
c) Sa se scrie un subprogram care sa returneze câte elemente din fisierul date.in sunt numere de tip palindrom cu cel putin doua cifre (palindrom este un numar de cel putin doua cifre care citit de la dreapta la stânga este identic cu numarul citit de la stânga la dreapta);
d) Scrieti în fisierul text date.out sirul dat, ordonat descrescator.
#include <fstream.h>
#include <math.h>
void creare()
f.close();}
int palindrom(int a)
if (x==b) return 1;else return 0;}
int suma_nr_impare()
int nr_palindrom()
void crearet(int a[10],int &n)
void ordon(int a[10],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.5
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma elementelor pare de pe pozitiile impare din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime continute de fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();}
int suma_nr(int a[10])
int prim(int a)
int nr_prime()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie(int a[10])
void main()
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa determine suma elementelor impare aflate pe pozitiile pare continute de fisierul date.in;
c) Sa se scrie un subprogram care sa returneze un mesaj prin care sa se comunice daca un element x citit de la tastatura exista sau nu în sirul din fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();
int suma_nr(int a[10])
void caut()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie(int a[10])
void main()
Subiectul nr.7
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii din matrice, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala principala a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor de tip palindrom continute de fisierul date.in (palindrom este un numar de cel putin doua cifre care citit de la dreapta la stânga este identic cu numarul citit de la stânga la dreapta);
d) Scrieti în fisierul text date.out elementele de pe linia a doua din matricea de mai sus, ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl; }
f.close();}
int palindrom(int a)
if (x==b) return 1;
else return 0;}
int maxim()
else j++;
if ((i==j)&&(m<x)) m=x; }
f.close(); return m;}
int nr_palindrom()
void crearet(int a[4])
void ordon(int a[4])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.8
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala secundara a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor super prime continute de fisierul date.in (un numar este superprim daca este prim atât el cât si rasturnatul lui);
d) Scrieti în fisierul text date.out elementele de pe linia a treia din matricea de mai sus, ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl;
}
f.close();
int rasturnat(int a)
return b;
int maxim()
else
j++;
if ((i+j==5)&&(m<x))
m=x;
}
f.close();
return m;
int prim(int a)
int nr_superprim()
}
for(i=0;i<n;i++)
if ((a[i]>9)&&prim(a[i])&&prim(rasturnat(a[i])))
m++;
f.close();
return m;
void crearet(int a[4])
void ordon(int a[4])
}while (ok==0);
void scrie()
void main()
Subiectul nr.9
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor elementului maxim din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime continute de fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();}
int maxim()
int suma_cif(int a)
return s;}
int prim(int a)
int nr_prime()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.10
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze numarul de elemente din fisierul date.in care au ultima cifra egala cu 3;
c) Sa se scrie un subprogram care sa determine numarul elementelor continute de fisierul date.in care au suma cifrelor numar par;
d) Scrieti în fisierul text date.out sirul dat, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int ult3()
int suma_cif(int a)
return s;}
int sum_cif_par()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);
void scrie()
void main()
Subiectul nr.11
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor pare ale numerelor din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime de doua cifre continute de fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();}
int suma_cifp(int a)
return s;}
int nr()
int prim(int a)
int nr_prime()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.12
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze elementele din fisierul date.in care apartin intervalului [a,b] unde a si b sunt numere întregi mai mici decât 100 citite de la tastatura;
c) Sa se scrie un subprogram care sa determine cel mai mare numar prim din fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
void nrab()
cout<<"Numerele din intervalul ["<<a<<", "<<b<<"] sunt:";
while(f>>x)
if ((a<=x)&&(x<=b)) cout<<x<<" ";
f.close();}
int prim(int a)
int nr_prim_max()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.13
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor impare ale numerelor din fisierul date.in;
c) Sa se scrie un subprogram care sa determine cel mai mare numar palindrom din fisierul date.in (numar palindrom este un sir de cel putin doua cifre care citit de la dreapta la stânga este identic cu numarul citit de la stânga la dreapta);
d) Scrieti în fisierul text date.out sirul dat, ordonat crescator.
#include <fstream.h>
void creare()
f.close();
int suma_cifi(int a)
return s;
int nr()
int palindrom(int a)
if (x==b) return 1;
else return 0;
int nr_pal_max()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);
void scrie()
void main()
Subiectul nr.14
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma elementelor pare de pe pozitiile impare din fisierul date.in;
c) Sa se scrie un subprogram care sa determine cel mai mare numar prim din fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int suma_nr(int a[10])
int prim(int a)
int nr_prim_max()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie(int a[10])
void main()
Subiectul nr.15
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii din matrice, separate prin spatii ;
b) Sa se scrie un subprogram care sa returneze elementul minim de pe diagonala secundara a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine cel mai mare divizor comun al elementelor situate în coltul stânga sus si coltul dreapta jos;
d) Scrieti în fisierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl; }
f.close();}
int minim()
else j++;
if ((i+j==5)&&(m>x)) m=x;
}
f.close(); return m;}
int cmmdc(int a,int b)
int cmmdc_nr()
void crearet(int a[4])
void ordon(int a[4])
}while (ok==0);}
void scrie()
void main()
Subiectul nr.16
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze câte dintre elementele din fisierul date.in au trei divizori;
c) Sa se scrie un subprogram care sa determine cel mai mare numar neprim din fisierul date.in;
d) Scrieti în fisierul text date.out sirul dat, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int suma_nr()
f.close();
return s;}
int prim(int a)
int nr_prim_max()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);}
void scrie(int a[10])
void main()
Subiectul nr.17
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze elementele din fisierul date.in care sunt divizibile cu o valoare x citita de la tastatura;
c) Sa se scrie un subprogram care sa creeze un tablou unidimensional cu elementele fisierului date.in în care sa se insereze între ultimul si penultimul element al tabloului media lor aritmetica;
d) Scrieti în fisierul text date.out sirul creat mai sus, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
void divizibil(int a[10],int &m)
f.close();}
void crearet(float a[11])
void ordon(float a[11],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.18
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze cel mai mare divizor comun al elementelor din fisierul date.in;
c) Sa se scrie un subprogram care sa creeze un tablou unidimensional cu elementele fisierului date.in în care sa se insereze între ultimul si penultimul element al tabloului o valoare x citita de la tastatura;
d) Scrieti în fisierul text date.out sirul creat mai sus, ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int cmmdc(int a,int b)
int cmmdcf()
void crearet(float a[11])
void ordon(float a[11],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.19
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) 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;
c) Sa se scrie un subprogram care sa calculeze media aritmetica a numerelor din sir si sa o insereze la jumatatea sirului;
d) Scrieti în fisierul text date.out sirul de mai sus ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int cmmdc(int a,int b)
int prime_x()
void crearet(float a[11])
for (int i=10;i>5;i--) a[i]=a[i-1];
a[i]=s/n;
n++;
f.close();
cout<<"Tabloul unidimensional este:";
for(i=0;i<11;i++)cout<<a[i]<<" ";}
void ordon(float a[11],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.20
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa determine elementul minim si elementul maxim din fisierul date.in si pozitiile pe care le ocupa în sirul numerelor date;
c) Sa se scrie un subprogram care sa determine câte dintre elementele sirului cuprinse într-un interval citit de la tastatura sunt numere pare;
d) Scrieti în fisierul text date.out sirul de mai sus ordonat crescator.
#include <fstream.h>
void creare()
f.close();
void minmax(int &m,int &pm, int &M, int &pM)
if (M<x)
i++;
}
f.close();
int intpar()
void crearet(int a[10])
void ordon(int a[10])
}while (ok==0);
void scrie()
void main()
Subiectul nr.21
Se citeste de la tastatura un sir de 10 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze cel mai mare divizor comun al elementelor din fisierul date.in;
c) Sa se scrie un subprogram care sa creeze un tablou unidimensional cu elementele fisierului date.in în care sa se insereze între ultimul si penultimul element al tabloului media lor aritmetica;
d) Scrieti în fisierul text date.out sirul de mai sus ordonat descrescator.
#include <fstream.h>
void creare()
f.close();}
int cmmdc(int a,int b)
int cmmdcf()
void crearet(float a[11])
a[n]=a[n-1];
a[n-1]=s/n;
n++;
f.close();
cout<<"Tabloul unidimensional este:";
for(int i=0;i<11;i++)cout<<a[i]<<" ";}
void ordon(float a[11],int n)
}while (ok==0);}
void scrie()
void main()
Subiectul nr.22
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul minim al matricei si numarul lui de aparitii;
c) Sa se scrie un subprogram care sa determine numarul elementelor de tip palindrom de sub diagonala principala a matricei (palindrom este un numar de cel putin doua cifre care citit de la dreapta la stânga este identic cu numarul citit de la stânga la dreapta);
d) Scrieti în fisierul text date.out elementele de pe prima linie a matricei de mai sus ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl;
}
f.close();
int palindrom(int a)
if (x==b) return 1;
else return 0;
int minim()
void nr_min(int &m,int &nm)
f.close();
int nr_palindrom()
else
j++;
if ((i<j)&&(x>9)&&(palindrom(x)))a++;
}
f.close();
return a;
void crearet(int a[4])
void ordon(int a[4])
}while (ok==0);
void scrie()
void main()
Subiectul nr.23
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul maxim de sub diagonala secundara a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine câte dintre elementele matricei sunt numere perfecte (un numar este perfect daca este egal cu suma divizorilor sai fara el însusi);
d) Scrieti în fisierul text date.out elementele de pe coloana a doua din matricea de mai sus ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl;
}
f.close();
int nr_perfect(int a)
int maxim()
else
j++;
if ((i>=2)&&(j>=6-i)&&(m<x))
m=x;
}
f.close();
return m;
int nr_perfecte()
void crearet(int a[4])
}
f.close();
void ordon(int a[4])
}while (ok==0);
void scrie()
void main()
Subiectul nr.24
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze suma elementelor pare de pe marginea exterioara a matricei;
c) Sa se scrie un subprogram care sa determine numarul elementelor matricei egale cu o valoare x data de la tastatura;
d) Scrieti in fisierul text date.out elementele de pe coloana a treia din matricea de mai sus, ordonate descrescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl;
}
f.close();
int suma_pare()
i=2;
while (f>>x)
else
if (i==4)
if (x%2==0)
s=s+x;
}
f.close();
return s;
int nr_val()
void crearet(int a[4])
}
f.close();
void ordon(int a[4])
}while (ok==0);
void scrie()
void main()
Subiectul nr.25
Se citeste de la tastatura un sir de 16 numere întregi mai mici decât 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala principala a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine câte dintre elementele matricei sunt numere perfecte (un numar e perfect daca este egal cu suma divizorilor sai fara el însusi);
d) Scrieti în fisierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescator.
#include <fstream.h>
#include <math.h>
void creare()
f<<endl;
}
f.close();
int nr_perfect(int a)
int maxim()
else
j++;
if ((i==j)&&(m<x))
m=x;
}
f.close();
return m;
int nr_perfecte()
void crearet(int a[4])
void ordon(int a[4])
}while (ok==0);
void scrie()
void main()
BAZE DE DATE
Subiectul nr.1
Sa se creeze o tabela cu structura Cod_numeric_personal, Numele, Data_angajarii, Data_nasterii si sa se introduca 8 articole cu date care sa corespunda cerintelor urmatoare:
a. Sa se afiseze pe ecran toti angajatii cu o vechime mai mare de 10 ani;
b. Sa se afiseze toate persoanele a caror zi de nastere se sarbatoreste astazi.
*use angajati
browse for year(date())-year(data_angaj)>10 title "Angajatii cu o vechime de peste 10 ani"
browse for (day(date())=day(datanast)) and (month(date())=month(datanst))
Subiectul nr.2
Sa se creeze o tabela cu structura Numar_bilet, Oras, Pret, Numar_vagon si sa se introduca 8 articole. Cerinte:
a. Sa se calculeze suma realizata în urma vânzarii tuturor biletelor înregistrate în tabela;
b. Sa se afiseze pe ecran numarul de bilete vândute cu destinatia un anumit oras X, citit de la tastatura.
use bilete
*a
sum(pret) to a
?'Suma adunata este ', a
*b
accept "Dati orasul: " to x
count to b for oras=x
?'Nr biletelor vandute spre orasul ',x,' este ',b
Subiectul nr.3
Sa se creeze o tabela cu structura Cod_caseta, Nume_film, Actor_principal, Tip. Sa se introduca în tabela minimum 8 articole, cu date care sa corespunda urmatoarelor cerinte:
a. Sa se stearga din tabela toate filmele de tip HORROR;
b. Sa se listeze pe monitor toate filmele în care joaca actorul RICHARD GERE.
use filme
*a
delete for tip='horror'
*pack
*b
browse for actor='richard gere'
Subiectul nr.4
Sa se creeze o tabela cu urmatoarea structura Cod_furnizor, Cod_material, Nume_material, Pret, Cantitate. Sa se introduca în tabela minimum 8 articole. Cerinte:
a. Sa se afiseze toate ofertele pentru materialul X - dat de la tastatura, crescator, dupa pretul oferit;
b. Sa se afiseze pretul total al materialelor oferite de furnizorul Y - citit de la tastatura.
Datele introduse în tabela trebuie sa corespunda cerintelor enuntate mai sus
use materiale
index on pret tag pret ascending
*a
accept 'Dati numele materialului ' to x
browse for nume_mat=x
*b
input 'Dati codul furnizorului ' to y
sum pret*cant to b for cod_furniz=y
?'Pretul total al materialelor furnizate de ',y,' este ',b
Subiectul nr.5
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze numarul atelierelor din tabela;
b. Sa se afiseze numarul de piese produse de fiecare atelier.
use muncitori
*a
index on cod_atel tag cod unique
count to q
?'Sunt ',q,' ateliere'
*b
delete tag cod
index on cod_atel tag cod
for i=1 to 9
sum nr_piese to y for cod_atel=i
if y>0
?'Numarul de piese produs de atelierul ',i,' este ',y
endif
endfor
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze codul atelierului din tabela cu cei mai multi muncitori;
b. Sa se afiseze codurile atelierelor în care numarul de piese produse este mai mare decît o valoare data de la tastatura.
set talk off
use muncitori
*a
dimension a[9] &&retine numarul de muncitori din fiecare atelier din cele 9
for i=1 to 9
count to a[i] for cod_atel=i
endfor
max=0
for i=1 to 9 &&determin maximul
if max<a[i]
max=a[i]
endif
endfor
?'Codurile atelierelor cu cei mai multi muncitori sunt: '
for i=1 to 9
if max=a[i]
?i, ' '
endif
endfor
*b
input 'Dati valoarea dorita ' to y
?'Codurile atelierelor cu numarul de piese lucrate mai mare decat ',y,' este '
for i=1 to 9
sum nr_piese to x for cod_atel=i &&calc numarul de piese executate in atelierul i
if x>y
?i, ' '
endif
endfor
Subiectul nr.7
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Se sterg articolele pentru care productia unui muncitor este mai mica decât o valoare data de la tastatura. Sa se afiseze numele acestora si codurile atelierelor din care faceau parte;
b. Sa se afiseze numarul atelierelor ce au ramas cu cel mult doi muncitori în urma stergerii articolelor de la cerinta a).
set deleted on
use muncitori
*a
input 'Dati valoarea ' to x
browse fields nume, cod_atel for nr_piese<x
delete for nr_piese<x
*b
b=0
for i=1 to 9
count to x for cod_atel=i
if (x<=2) and (x>0)
b=b+1
endif
endfor
?'Numarul atelierelor cu cel mult 2 muncitori este ',b
Subiectul nr.8
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Salariul si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Toti muncitorii ce au produs un numar de piese mai mare cu cel putin 10% decât o valoare citita de la tastatura vor avea salariul majorat cu 10%. Sa se afiseze salariile acestora (dupa marirea salariilor) si codul atelierelor din care faceau parte;
b. Sa se afiseze suma totala necesara maririi salariilor de la cerinta a) si codul atelierului cu cei mai multi muncitori cu salarii marite.
use muncitori
*a
input 'Dati valoarea ' to x
replace sal with sal*1.10 for nr_piese>1.1*x
browse fields sal, cod_atel for nr_piese>1.1*x
*b
sum sal to x for nr_piese>1.1*x
?'Suma cu care s-a majorat este ',10*x/110
dimension b[9] &&retin numarul de muncitori din fiecare atelier cu salarii majorate
max=0
for i=1 to 9
count to b[i] for (cod_atel=i) and (nr_piese>1.1*x)
if max<b[i]
max=b[i]
endif
endfor
?'Codurile atelierelor cu cei mai mult muncitori cu salarii majorate sunt'
for i=1 to 9
if max=b[i]
?i, ' '
endif
endfor
Subiectul nr.9
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Varsta si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Pentru a putea lucra în strainatate, un muncitor trebuie sa aiba o varsta cel mult egala cu o valoare citita de la tastatura si sa produca un numar de piese cel putin egal cu o valoare data de la tastatura. Sa se afiseze numele celor ce îndeplinesc ambele conditii si atelierele în care lucreaza acestia;
b. Sa se afiseze numarul mediu de piese produse de toti cei selectati la prima cerinta.
use muncitori
*a
input 'Dati varsta maxima ' to x
input 'Dati numarul de piese minim ' to y
browse fields nume, cod_atel for (varsta<x) and (nr_piese>y)
*b
average nr_piese to z for (varsta<x) and (nr_piese>y)
?'Numarul mediu de piese este ', z
Subiectul nr.10
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Numar_copii_minori si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze o lista cu muncitorii din fiecare atelier (codul atelierului si apoi toti muncitorii din acel atelier si la fel pentru fiecare atelier);
b. Sa se afiseze numarul tuturor copiilor minori ai tuturor muncitorilor din tabela.
use muncitori
*a
index on cod_atel tag cod
&& browse
* alta variante mai apropiata de cerinta problemei
c=cod_atel
?'Muncitorii din atelierul ',c
scan
if c=cod_atel
?nume
else
c=cod_atel
?'Muncitorii din atelierul ',c
?nume
endif
endscan
*b
sum nr_copii to x
?'Numarul de copii minori este ', x
Subiectul nr.11
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze numarul mediu de piese produse de un muncitor (numar total piese / numar muncitori);
b. Sa se afiseze numarul mediu de piese produse în fiecare atelier (numar total piese / numar ateliere).
use muncitori
*a
average nr_piese to x
?'Numarul mediu de piese produse de un muncitor este ',x
*b
x=0
for i = 1 to 9
locate for cod_atel=i
if found()
x=x+1
endif
endfor
sum nr_piese to y
?'Numarul mediu de piese produse de un atelier este ', y/x
Subiectul nr.12
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Sa se stearga articolele referitoare la muncitorii ce produc un numar de piese mai mai mic decât un numar dat de la tastatura si sa se depuna intr-o tabela noua (cu structura: Nume_muncitor, Numar_piese), apoi sa se sorteze alfabetic noua tabela dupa câmpul Nume_muncitor si sa se afiseze sortata;
b. Sa se afiseze tabela initiala, dupa transferul precizat la cerinta a).
use muncitori
*a
input 'Dati numarul minim de piese ' to x
copy to lenesi fields nume, nr_piese for nr_piese<x
delete for nr_piese<x
use lenesi
index on nume tag nume
browse
*b
use muncitori
browse
Subiectul nr.13
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Se citeste de la tastatura un cod de atelier existent în tabela. În acel atelier se angajeaza un muncitor nou pentru care se introduc date de la tastatura. Câmpul Numar_piese se va completa cu valoarea 0. Sa se afiseze apoi numarul minim necesar de piese pe care noul venit trebuie sa le produca astfel încât productia medie a acelui atelier sa nu scada;
b. Se citeste de la tastatura un nume de muncitor si un cod de atelier. Daca muncitorul figureaza in acel ateler din tabela, atunci sa i se schimbe codul atelierului sau cu un alt cod dat (existent în tabela) de la tastatura (se muta de la un atelier la altul). Daca acel muncitor nu figureaza în atelierul dat, atunci se va da un mesaj.
use muncitori
*a
input 'Dati numarul unui atelier care exista ' to x
average nr_piese to nr for cod_atel=x
append blank
accept 'Dati numele munictorului nou ' to a
replace cod_atel with x, nr_piese with 0, nume with a
?'Numarul minim de piese pe care trebuie sa le execute este ', nr
*b
accept 'Dati numele muncitorului ' to q
input 'dati codul atelierului ' to w
locate for (nume=q) and (cod_atel=w)
if found()
input 'dati codul atelierului unde va fi mutat ' to e
replace cod_atel with e
else
?"Muncitorul nu se gaseste in acel altelier"
endif
Subiectul nr.14
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori într-un atelier si toti au nume diferite). Cerinte:
a. Muncitorul/muncitorii cu numar maxim de piese produse se va / se vor transfera la alt loc de munca. Sa se afiseze în ordine alfabetica numele celor transferati;
b. Sa se afiseze numarul mediu de piese produse de catre cei ramasi în vechile ateliere.
use muncitori
*a
calculate max(nr_piese) to q
index on nume tag nume
browse for nr_piese=q
*b
average nr_piese to w for nr_piese<q
?"Numarul mediu de piese al celor ramasi este ",w
Subiectul nr.15
Sa se creeze o tabela cu structura: Cod_material, Pret_unitar, Cantitate, Stoc_necesar si sa se introduca 8 articole (un articol-un produs dintr-un depozit; cantitate = existentul în depozit; stoc_necesar = cantitatea minima necesara în depozit; valoarea unui produs = cantitatea * pret_unitar). Cerinte:
a. Sa se afiseze codurile produselor pentru care cantitatea existenta este mai mica decât stocul necesar. Pentru fiecare dintre aceste produse se va afisa ce cantitate trebuie adaugata pentru a se realiza o cantitate egala cu acel stoc_ necesar;
b. Sa se afiseze codurile produselor ce au cantitate mai mare cu cel putin 20% decât stoc_necesar, în ordinea codurilor.
use stoc
index on cod tag cod
*a
scan
if cant<stoc
?'Din codul ', cod, ' mai trebuie ' stoc-cant
endif
endscan
*b
browse for cant>=1.2*stoc
Subiectul nr.16
Sa se creeze o tabela cu structura: Cod_material, Pret_unitar, Cantitate, Stoc_necesar si sa se introduca 8 articole (un articol-un produs dintr-un depozit; cantitate = existentul in depozit; stoc_necesar = cantitatea minima necesara în depozit; valoarea unui produs = cantitatea * pret_unitar). Cerinte:
a. Se citesc de la tastatura un cod de material si o cantitate. Daca acel produs este în tabela si daca se poate livra (cantitatea din depozit este cel putin egala cu cea citita), atunci sa se afiseze cantitatea ramasa în depozit dupa livrare. Daca acea cantitate ramasa în depozit este mai mica decât stocul_necesar, se va da un mesaj. Daca nu exista acel produs, sau nu e în cantitatea dorita, se va da un alt mesaj;
b. Se citesc de la tastatura un cod de material ( c ) si o cantitate (k). Daca acel cod corespunde unui produs existent, atunci se va mari pentru el cantitatea existenta în depozit cu valoarea k. Daca nu exista, atunci se va adauga un nou articol cu câmpurile pret_unitar si stoc_necesar citite de la tastatura.
use stoc
*a
input 'Dati codul materialului ' to x
input 'Dati cantitatea dorita ' to y
locate for (cod=x) and (cant>=y)
if found()
if cant-y>=stoc
?'Au mai ramas ', cant-y
else
?'Nu e suficient material'
endif
else
?'Nu exista'
endif
*b
input 'Dati codul materialului ' to c
input 'Dati cantitatea dorita ' to k
locate for cod=c
if found()
replace cant with cant+k
else
input 'Dati pretul unitar al produsului ' to p
input 'Dati stocul necesar ' to s
append blank
replace cod with c, cant with k, pret with p, stoc with s
endif
browse
Subiectul nr.17
Sa se creeze o tabela cu structura: Nume_autor, Titlu, Nr_exemplare_imprumutate, Data_imprumut si sa se introduca cel putin 8 articole. Cerinte:
a. Sa se afiseze numele autorului cu cele mai multe titluri;
b. Sa se afiseze numele autorului cu cele mai putine carti solicitate pentru împrumut în luna curenta.
use imrpum1
*a
index on autor tag autor
dimension t[20] &&retin autorii
n=1
t[n]=autor
scan
if t[n]<>autor
n=n+1
t[n]=autor
endif
endscan
dimension a[20] &&retin numarul de titluri ale unui autor
max=0
for i=1 to n
count to a[i] for (autor=t[i])
if a[i]>max
max=a[i]
endif
endfor
?'Autorii cu cele mai multe titluri'
for i = 1 to n
if a[i]=max
?t[i]
endif
endfor
*b
dimension b[20] &&retin numarul de carti ale unui autor imprumutate in luna curenta
min=10000
for i=1 to n
sum nr_ex to b[i] for (autor=t[i])and (month(date())=month(data_impru))
if b[i]<min
min=b[i]
endif
endfor
?'Cel mai putin solicitat autor'
for i = 1 to n
if b[i]=min
?t[i]
endif
endfor
Subiectul nr.18
Sa se creeze o tabela cu structura: Nume_angajat, Salariu, Numar_copii_minori, Numar_zile_concediu_medical si sa se introduca cel putin 8 articole. Un articol reprezinta un angajat din intreprindere. Cerinte:
a. Sa se afiseze numele angajatului cu cele mai multe zile de concediu medical;
b. Sa se afiseze salariul mediu al celor ce au avut concediu medical si care au cel putin un copil minor.
use concediu
*a
calculate max(nr_zile) to x
browse fields nume for nr_zile=x
*b
average sal to y for (nr_zile>0) and (nr_copii>=1)
?'Salariu mediu al persoanelor care au avut concediu medical si cel putin un copil este ', y
Subiectul nr.19
Sa se creeze o tabela cu structura: Nume_medic, Nume_pacient, Diagnostic, Data_consultului, si sa se introduca cel putin 8 articole. Un articol reprezinta un pacient dintr-o policlinica (un consult - un articol). Cerinte:
a. Sa se afiseze numarul pacientilor consultati în luna curenta de catre un medic al carui nume se introduce de la tastatura;
b. Sa se afiseze diagnosticul cel mai frecvent pus în luna curenta.
use pacienti
*a
accept 'Dati numele medicului ' to a
count to x for (numem=a) and (month(date())=month(data_c))
?'Numarul pacientilor este ', x
*b
index on diag tag diag
dimension b[20],y[20]&&b retine diagnosticul, iar y numarul de pacienti cu un diagnostic din una curenta
n=1
b[1]=diag
scan
if diag<>b[n]
n=n+1
b[n]=diag
endif
endscan
max=0
for i=1 to n
count to y[i] for (diag=b[i]) and(month(date())=month(data_c))
if y[i]>max
max=y[i]
endif
endfor
for i=1 to n
if y[i]=max
?b[i]
endif
endfor
Subiectul nr.20
Sa se creeze o tabela cu structura: Nume_elev, Clasa, Promovat si sa se introduca cel putin 8 articole. Un articol reprezinta un elev dintr-o clasa a unei scoli. Cerinte:
a. Sa se afiseze clasa cu cel mai mare procent de promovabilitate.
b. Sa se afiseze numele elevilor nepromovati dintr-o clasa data de la tastatura.
use elev
*a
index on clasa tag clasa
dimension a[10],p[10]&&a retine clasele, iar p procentul elevilor promovati
n=1
a[1]=clasa
scan
if a[n]<>clasa
n=n+1
a[n]=clasa
endif
endscan
max=0
for i=1 to n
count to x for (clasa=a[i])and(promov=.t.)&&numarul elevilor promovati
count to y for clasa=a[i]&&numarul elevilor din clasa
p[i]=x/y*100
if p[i]>max
max=p[i]
endif
endfor
?'Clasele cu cei mai multi elevi promovati sunt'
for i=1 to n
if p[i]=max
?a[i]
endif
endfor
*b
accept 'Dati clasa ' to b
browse fields nume for (clasa=b) and (promov=.f.)
Subiectul nr.21
Sa se creeze o tabela cu urmatoarea stuctura:Cod_aliment, Den_aliment, Calorii în care introduceti minimum 8 articole. Cerinte:
a. Sa se adauge la sfârsitul tabelei 3 înregisrari noi;
b. Sa se afiseze o lista având câmpurile: den_aliment, calorii, în ordinea descrescatoare a caloriilor.
use alim
*a
for i=1 to 3
append blank
@2,2 say 'Dati cod aliment' get cod
@3,2 say 'Dati denumire aliment' get nume
@4,2 say 'Dati numarul de calorii' get cal
read
endfor
browse
*b
index on cal tag cal
browse fields nume, cal
Subiectul nr.22
Sa se creeze la nivel de întreprindere o tabela cu urmatoarea stuctura: Nume, Cod_pers, Adresa, Salariul în care introduceti minimum 8 articole. Cerinte:
a. Sa se modifice adresa angajatului al carui nume a fost citit de la tastatura;
b. Sa se afiseze salariul mediu pe intreprindere.
use sal
*a
accept 'Dati numele angajatului' to a
locate for nume=a
if found()
accept 'Dati noua adresa ' to x
replace adresa with x
endif
*b
average sal to b
?"Salariul mediu este ", b
Subiectul nr.23
Sa se creeze o tabela cu rezultatele sportivilor la Campionatul European de fotbal în care introduceti minimum 8 articole. Sructura tabelei este urmatoarea: Nume_sportiv, Tara, Goluri_marcate. Cerinte:
a. Sa se afiseze numarul tarilor participante;
b. Sa se afiseze numele sportivilor, numarul de goluri marcate ale unei tari citite de la tastatura.
use fotbal
*a
index on tara tag t unique
count to a
?'Numarul tarilor participante este ',a
*b
delete tag t &&sterg indexul pt a reveni iar la toate inregistrarile din baza de date
accept 'Dati tara ' to b
browse fields nume, gol for tara=b
Subiectul nr.24
Un depozit aprovizioneaza cu produse mai multe magazine. Sa se creeze o tabela cu urmatoarea structura: Cod_produs, Data_livrare, Pret_unitar, Cantitate, Unitate_masura, Cod_magazin în care introduceti minimum 8 articole. Cerinte:
a. Pentru o data_livrare Y (citita de la tastatura) sa se afiseze toate codurile magazinelor si produsele cu care au fost aprovizionate;
b. Sa se determine produsul cel mai solicitat în data_livrare X (citita de la tastatura) si sa se afiseze valoarea totala obtinuta prin vânzarea lui.
use livrare
*a
input 'Dati data livrarii ' to y
browse fields codm, codp for data_l=y
*b
index on codp tag c unique
count to n
dimension p[10],s[10]&& p retine codurile produselor, iar s cate produse de fiecare fel au fost solicitate la data x
i=0
scan
i=i+1
p[i]=codp
endscan
delete tag c
input 'Dati data livrarii ' to x
max=0
for i=1 to n
count to s[i] for (codp=p[i]) and (data_l=x)
if max<s[i]
max=s[i]
endif
endfor
for i=1 to n
if max=s[i]
?p[i]
sum pret*cant to z for (codp=p[i]) and (data_l=x) &&retin cantitatea solicitata din produsul p[i]
?z
endif
endfor
Subiectul nr.25
Un magazin se aprovizioneaza cu produse de la mai multe depozite. Creati tabela cu urmatoarea structura: Cod_produs, Cantitate, Pret_unitar, Unitate_masura, Cod_depozit, Data_aprovizionare în care introduceti minimum 8 articole. Cerinte:
a. Pentru un produs dat, afisati cantitatea cu care s-a aprovizionat magazinul în luna X (citita de la tastatura);
b. Afisati valoarea totala a marfurilor transferate de la un depozit cu codul Z (citit de la tastatura).
use livrare
*a
accept 'Dati codul produsului ' to a
input 'Dati luna ' to x
list cant for (codp=a) and (month(data_a)=x)
*b
accept 'Dati codul depozitului ' to z
sum pret*cant to b for codd=z
?b
|