LECTIA 1

Post on 07-Feb-2016

28 views 0 download

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

LECTIA 1TIPUL INREGISTRARE

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

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,

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

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

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;

Declarare obiecte de tipul definit

FORMA 2 DE DECLARAREstruct elev{

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

} x, y;

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

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 ( [ ] ).

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;}

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

LECTIA 2TIPUL INREGISTRARE

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; }

Aplicatii Exercitii din variantele de bac:variantele:

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

LECTIA 3TIPUL INREGISTRARE

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

LECTIA 4TIPUL INREGISTRARE

15 febr

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

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

LECTIA 5TIPUL INREGISTRARE

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: ….”

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

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;}

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;}

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

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