REZOLVARE PROBA PRACTICA ATESTAT



Subiectul nr. 1  C++
      Fişierul atestat.în conţine două linii. Pe prima linie sunt  scrise trei  numere naturale nenule, separate prin câte un spațiu: n,(5<n<30), p≤9, k≤9 (k<p). Pe cea de-a două linie a fişierului sunt scrise n numere naturale separate prin câte un spaţiu, reprezentând un şir de numere formate fiecare din cel mult 4 cifre.

Să se scrie un program în limbajul Pascal/C/C++, care:
a)      afişează pe ecran, în linie, separate printr-un spaţiu, toate numerele din șir care împărţite la p dau restul k;

REZOLVARE
Apasati tasta WINDOWS si apoi litera T – o sa apara TURBO C++
Dati FILE->NEW pana gasiti un ecran fara text
Se scrie programul .
Se salveaza cu tasta F2 .
Se creaza un nou fisier atestat.in .
se scriu in el valorile cerute de subiect
Se compileaza si se ruleaza cu combinatia CTRL-F9
PENTRU CODEBLOCKS se creeaza un proiect in CONSOLE APPLICATION .
SE adauga la proiect cu File-->new --->empty file fisierele atestat.in si atestat.out . Redactarea programului numai in main .

#include<fstream.h>
int i,n,p,k,a[10];
ifstream f(“atestat.in”);
int main()
{
f>>n>>p>>k;
for(i=0;i<n;i++) { f>>a[i]; if (a[i]%p==k) cout<<a[i]<<”  “; }
return 0;
}




Subiectul nr. 2
      Fişierul atestat.în conţine două linii. Pe prima linie este scris un număr natural nenul n, (5<n<30). Pe cea de-a două linie a fişierului sunt scrise n numere naturale separate prin câte un spaţiu, reprezentând un şir de numere formate fiecare din cel mult 4 cifre.

Să se scrie un program, în limbajul Pascal/C/C++, care:
a)    afişează pe ecran, în linie, separate printr-un spaţiu, toate cifrele de rang 2 din scrierea numerelor; dacă numerele sunt formate dintr-o singură cifră se va afişa valoarea zero;  R
RANGUL unei cifre este pozitia sa incepand numerotarea de la dreapta la stanga .
123 – are ca cifra de rang 2 pe 2 si de rang 1 pe 3 .
(a[i]/10)%10 – e penultima cifra a lui a[i] , adica cea de rang 2 !


#include<fstream.h>
int i,n,a[10];
ifstream f(“atestat.in”);
int main()
{
f>>n;
for(i=0;i<n;i++) { f>>a[i]; if ((a[i]/10)%10) cout<<(a[i]/10)%10<<”  “;
                                         else cout<<”0 ”; }
return 0;
}

Subiectul nr. 3

     Fişierul atestat.în conţine două linii. Pe prima linie este scris un număr natural nenul n, (5<n<30). Pe cea de-a două linie a fişierului sunt scrise n numere naturale separate prin câte un spaţiu, reprezentând un şir de numere formate fiecare din cel mult 4 cifre.
Să se scrie un program, în limbajul Pascal/C/C++, care:
a)      afişează pe ecran, în linie, separate printr-un spaţiu, suma divizorilor pozitivi  (proprii și improprii ) pentru fiecare număr ;
REZOLVARE
Apasati tasta WINDOWS si apoi litera T – o sa apara TURBO C++
Dati FILE->NEW pana gasiti un ecran fara text
Se scrie programul .
Se salveaza cu tasta F2 .
Se creaza un nou fisier atestat.in .
se scriu in el valorile cerute de subiect
Se compileaza si se ruleaza cu combinatia CTRL-F9

#include<fstream.h>
int i,n,s,a[10];
ifstream f(“atestat.in”);
int main()
{
f>>n>>p>>k;
for(i=0;i<n;i++) { f>>a[i]; s=0;
if(a[i]>1) for(j=2;j<a[i]/2;j++) if((a[i]%j==0) s=s+j;
cout>>s>>” “;
                       }
return 0;
}


SUBIECTUL 1 - BAZE DE DATE-model  pt toate celelalte subiecte
1. Pentru întocmirea orarului se stabilește la început de an încadrarea profesorilor la clase: pentru fiecare clasă și fiecare disciplină se va stabili profesorul care va preda disciplina respectivă și numărul de ore pe care le va avea săptămânal la acea clasă. Fiecare clasă este identificată prin nivelul clasei (9, 10, 11, 12) și litera sa (A, B, C, etc.). Fiecare clasă are o specializare (mate-info, filologie etc.) și este eventual desemnată o sală unde se desfășoară majoritatea orelor acelei clase. Fiecare profesor are un număr de identificare intern, numele, prenumele și specilaizarea principală. Pentru simplificare, se consideră că orice clasă are orar săptămânal (nu există semigrupe cu profesori diferiți și nici discipline cu număr diferit de ore de la o săptămână la alta).
4) Să se afișeze numărul total de ore de la clasa a 9-a A.
SE creaza o DIAGRAMA IN WORD si se trece si pe o coala .

CERINTE
1)      Deduceţi din enunţ entităţile necesare şi determinaţi atributele lor semnificative;
2)      Stabiliţi relaţiile dintre aceste entităţi şi reprezentaţi ansamblul entităţi-relaţii sub forma unei diagrame;
3)      Pentru fiecare entitate daţi exemplu de minimum două înregistrări aparţinând tabelului care corespunde entităţii, înregistrări care conţin date fictive.
4)      Scrieţi instrucţiunea SQL corespunzătoare unei cerinţe specificate în enunţul problemei.


REZOLVAREA
OBSERVAM ca ENTITATEA modelata este CLASA .
ATRIBUTELE ESENTIALE –DENUMIRE si Profesor1,..Profesor n .
Adaugati la diagrama si atributele specializarea , sala .
LINK-->DIAGRAMA-MODEL
La professor se adauga si nume , prenume , specializare
Valori  ce ies usor in evidenta sunt 9A , 4 ore etc
SE DESCHID XAMPP , phpmyadmin , se face baza de date CLASA cu tabela tot clasa si cu campurile denumire(text :10), profesor1 (numeric:2),…..
  SELECT sum(MateX,RomY…..) FROM clasa WHERE denumire=”9A”;