CATEGORII DOCUMENTE |
Structuri
SCOPUL LUCRARII
In aceasta lucrare se vor studia structuri si vectori de structuri.
2. BREVIAR TEORETIC
2.1. Structuri
Structurile sunt folosite pentru a grupa sub acelasi nume, mai multe date de acelasi tip sau de tipuri diferite. Sunt denumite si inregistrari. In limbajul C, pentru a declara o structura, se foloseste cuvantul cheie struct. In mod uzual, numele unei structuri se declara cu ajutorul cuvantului cheie typedef.
Sintaxa:
typedef structnumeStructra;
Exemplu:
typedef structcomplex;
Dupa ce a fost definit cuvantul cheie typedef, numele asociat structurii poate fi folosit pentru a declara variabile.
Exemplu:
complex c1,c2;
angajat a1;
2.2. Accesul la componentele unei structuri
Pentru accesarea membrilor unei structuri, pe baza numelui ei, se foloseste operatorul punct.
Exemple:
c1.re = 0.2;
c1.im = 0.7;
modulC1 = sqrt(c1.re* c1.re + c1.im* c1.im);
2.3. Vectori de structuri
In mod frecvent se folosesc tablouri ce au drept componente structuri. Astfel, un vector ce contine 100 de numere complexe, se declara in felul urmator:
typedef structcomplex;
complex tab[100];
Accesam un camp dintr-o structura componenta a unui vector, tot prin intermediul operatorului punct, aflat la dreapta componentei.
Astfel prin instructiunea:
tab[0].re = 0.5;
se atribuie campului re al primei componente din vectorul tab valoarea 5.
3. DESFASURAREA LUCRARII
Se vor edita si apoi executa programele descrise in continuare.
Programul nr. 1
Se defineste structura punct, ce are doua campuri x si y (coordonatele reprezentarii in plan a unui punct). Sa se scrie un program in care se citesc coordonatele a doua puncte, de la tastatura si se afiseaza distanta intre aceste puncte.
Sursa programului:
#include<conio.h>
#include<stdio.h>
#include<math.h>
typedef structpunct;
void main(void)
Programul nr. 2
Se defineste in acest program structura complex, ce consta din doua numere reale: partea reala si partea imaginara a unui numar complex. Se va scrie o functie in care se calculeaza modulul unui numar complex, o functie in care se calculeaza conjugatul unui numar complex si o alta functie in care se calculeaza suma a trei numere complexe.
Sursa programului:
#include<conio.h>
#include<stdio.h>
#include<math.h>
typedef structcomplex;
double modulComplex(complex c);
complex sumaComplex(complex c1, complex c2,complex c3);
complex complexConjugat(complex c);
void afisareComplex(complex c);
void main(void)
double modulComplex(complex c)
complex sumaComplex(complex c1,complex c2,complex c3)
complex complexConjugat(complex c)
void afisareComplex(complex c)
Programul nr. 3
Se citesc de la tastatura mai multe numere de tip complex, care se memoreaza intr-un vector de numere complexe. Sa se realizeze un program care sa calculeze si afiseze numarul de modul maxim.
Sursa programului:
#include<conio.h>
#include<stdio.h>
#include<math.h>
typedef structcomplex;
double modulComplex(complex c);
#define N 2
void main(void)
for(i=0;i<N;i++)
Modul[i]=modulComplex(A[i]);
ModulMaxim=Modul[0];
indexMax=0;
for(i=1;i<N;i++)
if(Modul[i]>ModulMaxim)
printf('%lfn',A[indexMax].re);
printf('%lf',A[indexMax].im);
getch();
double modulComplex(complex c)
Programul nr. 4
Folosind structura punct, se vor citi de la tastatura N puncte, care vor fi introduse intr-un vector. Sa se realizeze un program care sa afiseze daca toate cele N puncte sunt diferite intre ele sau nu.
Sursa programului:
#include<stdio.h>
#include<conio.h>
typedef struct punct;
#define N 3 //numarul de puncte
void main(void)
int suntDiferite=1;//presupunem ca sunt
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if((p[i].x==p[j].x)&&(p[i].x==p[j].y))
if(suntDiferite)printf('Sunt diferite.');
else printf('Nu sunt diferite.');
getch();
Programul nr. 5
Folosind structura punct, se vor citi de la tastatura N puncte, care vor fi introduse intr-un vector. Sa se realizeze un program care sa afiseze distanta maxima dintre doua puncte.
#include<stdio.h>
#include<conio.h>
#include <math.h>
typedef struct punct;
#define N 3 //numarul de puncte
double dist(punct a, punct b); //distanta intre doua puncte
void main(void)
//Toate distantele sunt pozitive, deci initializam
// distMax cu 0:
double distMax=0;
//Formam toate perechile de puncte posibile:
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
printf('Distanta maxima=%lf',distMax);
getch();
double dist(punct a, punct b)
Programul nr. 6
Se defineste structura elev, ce contine doua campuri: numele de familie unui elev (de tipul string) si nota obtinuta de elev (de tipul int). Se citesc de la tastatura si se memoreaza intr-un vector de structuri elev, elevii unei clase si notele obtinute de ei. Sa se sorteze acest vector in ordinea descrescatoare a notelor elevilor.
Sursa programului:
#include <stdio.h>
#include <conio.h>
#define NR_ELEVI 20
typedef struct elev;
void main(void)
//sortarea, prin metoda bubble sort:
do//if
}while(existaInversiuni==1);
//Afisarea elevilor:
for(i=0;i<NR_ELEVI;i++)
printf('%s %dn',tab[i].numetab[i].nota);
4. PROBLEME PROPUSE
1. Cu ajutorul structurii punct, definita anterior, sa se realizeze un program care afiseaza daca trei puncte ale caror coordonate se introduc de la tastatura, sunt sau nu coliniare.
2. Sa se scrie o functie in care se realizeaza inmultirea a doua numere complexe.
3. Se citesc N puncte intr-un vector. Sa se afiseze daca sunt coliniare.
4. Folosind structura elev definita anterior, citim N elevi intr-un vector. Sa se afiseze toti elevii care au nota > 7.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 961
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved