Structuri in C++ (Partea a III-a)
Acest al treilea tutorial despre structuri in c++ este destul de complex. Va recomand sa intelegeti mai intai foarte bine primele doua tutoriale din aceasta serie. Pana acum am citit datele unor elevi: numele, prenumele si media. Acum va voi explica metoda de sortare a acestor elevi dupa media lor. Codul sursa este urmatorul:
#include <stdio.h>
#include <conio.h>
// Declaram structura ELEV
typedef struct
{
char nume[50];
char prenume[50];
int medie;
}ELEV;
// Functia de sortare
void sortare(ELEV elem[], int m)
{
// Declararea variabilelor
int i, j;
ELEV t;
// Sortarea structurilor
for (i=0; i<(m-1); i++)
for (j=i+1; j elem[j].medie)
{
t = elem[i];
elem[i] = elem[j];
elem[j] = t;
}
}
void main()
{
// Declararea variabilelor
ELEV element[50];
FILE *f;
int i, j, n;
// Pregatirea fisierului binar pentru scriere
if((f=fopen("struct_elev.mzk","wb")) == NULL)
{
printf("Fisierul nu poate fi deschis");
exit(1);
}
// Citirea datelor de la tastatura
printf("Intruduceti numarul de structuri ce vor fi introduse: ");
scanf("%d", &n);
for (i=0; i<n; i++)
{
printf("Introduceti numele elevului: ");
scanf("%s", element[i].nume);
printf("Introduceti prenumele elevului: ");
scanf("%s", element[i].prenume);
printf("Introduceti media acestuia: ");
scanf("%d", &element[i].medie);
// Introducerea structurilor in fisierul binar
fwrite(&element[i], sizeof(element[i]), 1, f);
}
fclose(f);
// Pregatirea fisierului binar pentru citire
f = fopen("struct_elev.mzk", "rb");
// Aflarea numarului de structuri din fisier
fseek(f, 0L, 2);
n = ftell(f)/sizeof(ELEV);
fseek(f, 0L, 0);
// Citirea structurilor din fisier si afisarea lor
printf("Structurile nesortate: ");
for (i=0; i<n; i++)
{
fread(&element[i], sizeof(element[i]), 1, f);
printf("%s %s, %d.n", element[i].nume, element[i].prenume, element[i].medie);
}
fclose(f);
printf("n");
// Sortarea structurilor
sortare(element, n);
// Afisarea structurilor sortate
printf("Structurile sortate: ");
for (i=0; i<n; i++)
{
printf("%s %s, media %dn", element[i].nume, element[i].prenume, element[i].medie);
}
getch();
}
Nu trebuie sa va speriati de marimea acestui program. Repet, daca ati inteles Structuri in C++ (Part II) veti recunoaste cea mai mare parte din program. Mica diferenta o vom explica imediat.
Dupa cum probabil deja ati observat, nu mai lucram cu o singura structura, ci cu un vector de structuri. Acest lucru ne usureaza viata incredibil de mult in procesul de sortare. Un vector de structuri se declara astfel:
ELEV element[50];
Dupa cum vedeti, nu este foarte complicat. La citirea si afisarea structurilor, singura diferenta este ca am mentionat care element al vectorului il utilizam:
printf("Introduceti numele elevului: ");
scanf("%s", element[i].nume);
Pentru sortare, am creeat la inceputul programului o functie. Aceasta are ca parametru un vector de structuri si numarul de structuri:
void sortare(ELEV elem[], int m)
{
// Declararea variabilelor
int i, j;
ELEV t;
// Sortarea structurilor
for (i=0; i<(m-1); i++)
for (j=i+1; j elem[j].medie)
{
t = elem[i];
elem[i] = elem[j];
elem[j] = t;
}
}
Metoda de sortare este una simpla, utilizata si in Cum sa ordonezi un vector in C++ doar ca elementele sortate sunt de tipul unei structuri.
Cu putina atentie veti observa ca nu este foarte greu. Mult succes si spor la treaba!
Ti-a placut articolul Structuri in C++ (Partea a III-a)?
TweetAi nevoie de rezolvarea unei probleme la informatica?
Iti recomandam si urmatoarele articole:
Discuta articolul Structuri in C++ (Partea a III-a)
Contul tau
Categorii
- Atestat Info C/C++ (21)
- Atestat Info Pascal (21)
- Learn AJAX (3)
- Learn Android (5)
- Learn C++ (32)
- Learn CSS (11)
- Learn Database (9)
- Learn Flash (33)
- Learn HTML (14)
- Learn JAVA (9)
- Learn Javascript (14)
- Learn jQuery (17)
- Learn Pascal (28)
- Learn PHP (21)
- Learn SQL (5)
- Learn Visual FoxPro (4)
- Tips & Tricks (22)
Mozku Network
Ne gasesti si pe Facebook
Articole noi
- Cum sa detectati rezolutia telefonului intr-o aplicatie Android
- Cum se evita oprirea fortata a unei aplicatii
- Cum sa porniti o activitate noua in Android
- Cum sa adaugati un ImageView intr-o aplicatie Android
- Cum sa adaugati un Button intr-o aplicatie Android
- Cum sa utilizati un ArrayList in Java
- Bifeaza toate checkbox-urile folosind jQuery
- Validare formular folosind jQuery
Fisiere populare
- Proiect Atestat Informatica Visual FoxPro (439)
- Twitter Patterns (202)
- Flash Newsletter (126)
- hitTest Flash (99)
- Baza de date auto revizuita (98)
