LECTIA 1

26
LECTIA 1 TIPUL INREGISTRARE

description

TIPUL INREGISTRARE. LECTIA 1. S tudiu de caz : fie o linie dintr -un tabel. TIPUL INREGISTRARE. Cum se stocheaza in memoria unui calculator o linie a unui tabel ? R: folosind o structura de date, ce poate stoca date diferite - PowerPoint PPT Presentation

Transcript of LECTIA 1

Page 1: LECTIA 1

LECTIA 1TIPUL INREGISTRARE

Page 2: LECTIA 1

TIPUL INREGISTRAREStudiu de caz: fie o linie dintr-un tabel

Nume Prenume Clasa telefon adresa varstaIonescu Maria 4 7321234 florilor 3 10Popescu Ana 5 97323234 florilor 4 12Vasilescu Maria 9 8321234 florilor 5 14

Cum se stocheaza in memoria unui calculator o linie a unui tabel?

R: folosind o structura de date, ce poate stoca date diferiteAceasta structura poarta numele de inregistrareDupa cum se poate observa, o inregistrare are mai multe componente, fiecare componenta fiind de alt tip, componente ce poarta numele de campuriO inregistrare poate primi un nume care sa defineasca intreaga inregistrare. In exemplul nostru, am putea alege numele “elev” deoarece toate campurile definesc in totalitatea lor“proprietatile” ale unui elev

Page 3: LECTIA 1

TIPUL INREGISTRARE

Definitie: tip structurat de date, neomogen, un ansamblu format din una sau mai multe date de tipuri diferite, grupate împreună sub un singur nume. Datele pot fi: Date elementare: numerice, caracter, booleene (logice)(int, long, float, char, double)Ex: varsta unui elev poate fi un numar intreg, inatimea, un numar real; Structuri de date: vectorii numerici, siruri de caractere

(structuri omogene), si inregistrarile (structuri neomogene)

Ex: numele unui elev este un sir de caractere, notele unui elev pot fi stocate intr-un vector numeric,

Page 4: LECTIA 1

CUM LUCRAM CU TIPUL INREGISTRARE Pentru a lucra cu inregistrari, este necesar sa:

definim structura sa;declaram variabile de tipul definit anterior.

Definitia: se va folosi cuvantul cheie struct, urmat de numele tipului definit de noi, si apoi intre acolade se vor defini datele care intra in componenta structurii, fiecare data avand un tip si un nume. Definitia structurii poate fi atat in main cat si inaintea definirii functiei main

Declaram cate variabile dorim de tipul definit anterior

Page 5: LECTIA 1

FORMA GENERALAstruct [nume structura]{ [<tip> <nume variabila [, nume variabila, ……]>]; [<tip> <nume variabila [, nume variabila, ……]>]; …} [lista de variabile];

Page 6: LECTIA 1

Definitia structuraFORMA 1 DE DECLARARE//definirea structurii este separata destruct elev{

char nume [ 20 ], prenume [ 20 ];float nota_mate, nota_info;int varsta;};

// declararea variabilelor separat de definiteelev x, y;

Page 7: LECTIA 1

Declarare obiecte de tipul definit

FORMA 2 DE DECLARAREstruct elev{

char nume[20], prenume[20];float nota_mate, nota_info;int varsta;

} x, y;

Page 8: LECTIA 1

Accesarea campurilorFiind data o structura elev definita astfel:struct elev{

char nume [20], prenume[20];float nota_mate,nota_info;int varsta;} popescu;

Vom accesa elementele inregistrarii, folosind operatorul de acesare

directa “.”; Atfel vom avea:

popescu.nume reprezinta campul nume al variabilei popescu

popescu.nume[0] reprezinta primul caracter din numepopescu.nota_mate reprezinta nota la mate a lui popescu

Page 9: LECTIA 1

Diferenta intre struct si tablouri

elementele unei structuri pot avea tipuri diferite

structurile pot fi atribuite direct ( x=y )

elementele unui structuri nu sunt variabile

anonime ci au câte un nume fiecare

referirea unui element al unei structuri se

realizează cu operatorul de selecţie ( . ) şi nu cu

operatorul de indexare ( [ ] ).

Page 10: LECTIA 1

Problema1: Se citeste si se afiseaza o variabila de tip elev#include<iostream>struct elev{

char nume [20], prenume[20];float nota_mate,nota_info;int varsta;};

int main(){elev inr;cout<“Nume “;cin>>inr.nume;cout<<“prenume “;cin>>inr.prenume;cout<<“nota

mate”;cin>>inr.nota_mate;cout<<“nota info”;cin>>inr.nota_info;

cout<<“varsta”;cin>>inr.varsta;cout<<“Am citit:”<<endl<<

inr.nume<< “ ”<<inr.prenume<<endl<<inr.nota_mate<<endl<< inr.nota_info<<endl<<inr.varsta;

Return 0;}

Page 11: LECTIA 1

TEMA Problema2: Cititi o variabila cu urmatoarea structura:

Nume_elev: 30 caractereData_nasterii: sir de caractere, maxim 12Zi: intreg;Luna : intregAn: intregNota mate realNota info realNota engleza realMedia realOBS!!!!: Media se calculeaza nu se citeste

Page 12: LECTIA 1

LECTIA 2TIPUL INREGISTRARE

Page 13: LECTIA 1

Corectura tema #include<iostream> using namespace std; struct elev{ char nume[31], data_nastere[13]; float nota_mate, nota_info, nota_engl, media; int zi,luna,an; } ; int main(){ //citire date cout<<"Nume:"; cin>>inr.nume; cout<<"data nasteri:"; cin>>inr.data_nastere; cout<<"nota mate:"; cin>>inr.nota_mate; cout<<"nota info:"; cin>>inr.nota_info; cout<<"nota engl:" ; cin>>inr.nota_engl; //calcul medie inr.media=(inr.nota_mate+inr.nota_info+inr.nota_engl)/3; //afisare cout<<"Elevul "<<inr.nume<<" a obtinut "; cout<<"media: "<<inr.media; cout<<" Felicitari!!"; return 0; }

Page 14: LECTIA 1

Aplicatii Exercitii din variantele de bac:variantele:

2,3 (vezi anexa) Tema: variantele de bac: 5,6,7

Page 15: LECTIA 1

LECTIA 3TIPUL INREGISTRARE

Page 16: LECTIA 1

Aplicatii Corectura tema:5,6,7 variante bac Exercitii din variantele de bac: 8-20 Tema: variantele de bac: variante bac

22,31,33,37

Page 17: LECTIA 1

LECTIA 4TIPUL INREGISTRARE

15 febr

Page 18: LECTIA 1

Inregistrari Imbricatestruct elev{

char nume[20], prenume[20];struct {

int clasa;float note [20];

} situatie;int varsta;} ;

elev inr;inr.situatie.note[0]inr.situatie.clasainr.varsta

Page 19: LECTIA 1

Aplicatii Variantele de bac cu inregistrari imbricate: Variantele: 21, 64, Tema: 73, 92

Page 20: LECTIA 1

LECTIA 5TIPUL INREGISTRARE

Page 21: LECTIA 1

Aplicatii Corectura tema: variantele de bac:

variante 73, 92 Lucru pe echipe de cate 2 elevi: Compuneti 2 probleme cu tipul

inregistrare: “Alegeti raspunsul/raspunsurile corecte:” sau

“scrieti instructiunea/instructiunile care…”“Realizati un algoritm care sa: ….”

Page 22: LECTIA 1

Vectori de inregistrari Problema 1: Fie urmatoarea structura:Nume: 30 caractereInaltime: numar realGreutate: numar intregCititi n inregistrari de tipul celei de mai sus si afisati-le in ordinea alfabetica a numelui, fiecare inregistrare pe cate o linie:Ex: n=2Ionescu 1.62 70Antonescu 1.72 80Se vor afisa:Antonescu 1.72 80Ionescu 1.62 70

Page 23: LECTIA 1

Rezolvare:#include<fstream>#include<string.h>using namespace std;struct elev{ char nume[31]; float h; int g;} v[10],aux;int main(){ int n,i,j,x; ifstream fin("date.in"); ofstream fout("date.out"); fin>>n; for(i=0; i<n; i++){ fin>>v[i].nume; fin>>v[i].h; fin>>v[i].g;}

Page 24: LECTIA 1

Rezolvare://sortare vector de structurifor(i=0;i<n-1;i++) for(j=i+1;j<n;j++){ x=strcmp(v[i].nume,v[j].nume);if(x>0) { aux=v[i]; v[i]=v[j]; v[j]=aux; } } for(i=0;i<n;i++){ fout<<v[i].nume<<" "<<v[i].h<<" "<<v[i].g<<endl; } return 0;}

Page 25: LECTIA 1

Vectori de inregistrari Problema 2: Fie urmatoarea structura:Nume: 30 caracterePrenume: 30 caractereInaltime: numar realGreutate: numar intregCititi n inregistrari de tipul celei de mai sus si afisati-le in ordine descrescatoare dupa campul inaltime, fiecare inregistrare pe cate o linie:Ex: n=2Ionescu Vlad 1.62 70Antonescu Ciprian 1.72 80Se vor afisa:Antonescu Ciprian 1.72 80Ionescu Vlad 1.62 70

Page 26: LECTIA 1

Vectori de inregistrari Problema 3: Fie urmatoarea structura:Nume: 30 caracterePrenume: 30 caracteremedie: numar realNota1,nota2: numare intregiCititi n inregistrari de tipul celei de mai sus si afisati-le in ordine descrescatoare dupa campul medie, fiecare inregistrare pe cate o linie:Ex: n=2Antonescu Ciprian 8.50 8 9Ionescu Vlad 9.50 10 9

Se vor afisa:Ionescu Vlad 9.50 10 9Antonescu Ciprian 8.50 8 9