Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Tipul struct în C++. Ce sunt structurile de date neomogene

În clasa a IX-a, am învățat despre numeroasele tipuri de date ale limbajului C++. Cu toate acestea, există momente când am vrea să grupăm mai multe tipuri de date într-un tip unitar. Spre exemplu, să zicem că avem mai multe informații despre un elev, pe care am vrea să le grupăm cumva:

  • Numele și prenumele (pe care le putem salva într-un șir de caractere char[]);
  • Vârsta (int);
  • Clasa (int);
  • Media la informatică (double);

Tipul de date struct ne ajută în acest sens.

Ce este struct în C++?

O structură de date neomogene (un struct) reprezintă o colecție de informații grupate sub un singur nume. Tipurile grupate pot fi de diferite tipuri (cum am demonstrat mai devreme, unde am salvat șiruri de caractere, numere naturale și reale, etc.).

Declararea unei structuri

O structură se declară astfel:

struct nume_struct {
    tip variabila1;
    tip variabila2;
    …
} nume_variabila;

Spre exemplu, structura ce definește un elev poate fi reprezentată astfel:

struct elev {
    char nume[30], prenume[30];
    int varsta;
    double medieInfo;
} a[30];

În exemplul de mai sus, am declarat un vector de elevi — fiecare elev în parte poate avea diferite valori:

nume prenume varsta medieInfo
a[1] Lazăr Alexandra 17 8.66
a[2] Enescu Șerban 16 8.5
a[3] Rusu Jean 17 9.5

Dacă vrem, putem să declarăm structura și doar mai încolo să declarăm o variabilă de tipul acelei structuri. În acest caz, după acolada de la declararea structuri este necesar să punem ; (punct și virgulă). Iată un exemplu:

struct elev {
    char nume[30], prenume[30];
    int varsta;
    double medieInfo;
}; //Aici trebuie punct și virgulă!

elev e1;

Accesarea unei proprietăți dintr-o structură

Să zicem că am declarat un elev de tipul de mai sus, numit e1. Pentru a selecta, spre exemplu, varsta elevului, vom apela e1.varsta. Similar, dacă am fi avut un vector de elevi și am fi vrut să selectăm numele celui de al treila elev, am fi apelat e[3].nume.

Citirea și afișarea unei structuri în C++

Citirea unei structuri constă în citirea tuturor proprietăților sale. Spre exemplu, programul C++ de mai jos declară un elev și citește de la tastatură proprietățile sale:

#include <iostream>

using namespace std;

struct elev {
    char nume[30], prenume[30];
    int varsta;
    double medieInfo;
};

int main()
{
    elev e1; //Elevul nu trebuie numit "elev", altfel s-ar confunda cu structura noastră; e ca și cum am numit un număr "int", s-ar confunda cu tipul de date int

    cout << "Introdu numele si prenumele elevului:";
    cin >> e1.nume >> e1.prenume;

    cout << "Introdu varsta elevului:";
    cin >> e1.varsta;

    cout << "Introdu media la info a elevului:";
    cin >> e1.medieInfo;
    return 0;
}

Afișarea unei structuri este similară cu citirea: afișăm pe ecran, pe rând, proprietățile sale:

cout << e1.nume << " " << e1.prenume << " are " << e1.varsta << " ani si are media " << e1.medieInfo << " la info.";

Probleme propuse

# Problemă Dificultate
376. Data mai mica Ușoară (2 )
384. Ora valida Ușoară (2 )
367. Bine platit Ușoară (2 )
374. Cate sunt ireductibile Ușoară (2 )
372. Fractie minima Ușoară (2 )
Vrei mai multe probleme? Pe această pagină găsești întreaga listă de probleme propuse.

Alte resurse sau bibliografie

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Numărul de cifre ale factorialului unui numărNumere triunghiulare. Verificarea unui număr triunghiularIndicatorul lui Euler în C++Copiuțe: Cifrele unui numărComplexitatea unui algoritm (timp și spațiu) în C++Verifică dacă un număr aparține șirului Fibonacci în C++Cel mai puțin semnificativ bit în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Instrucțiunea break (structuri repetitive)Aria și circumferința unui cerc în C++Radicalul unui număr în C++ (rădăcina pătrată)Mediana unui șir de valori în C++Cel mai mic număr cu suma cifrelor N în C++Transformarea unei litere mari în literă mică în C++Numărul combinărilor în C++ (formula combinărilor)Cum să calculezi instant 2 la puterea N în C++Divide et Impera (metodă de programare C++)Verificare dacă șir de caractere este palindrom în C++Află secolul unui an citit de la tastatură în C++Vectori de frecvență (de apariții) în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Verificare dacă un număr este palindrom în C++Verificarea unui an bisect în C++Verifică dacă o literă este vocală în C++Numărul de apariții al unui număr într-un vector în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Instrucțiunea while (structuri repetitive)Afișarea divizorilor primi ai unui număr în C++Instrucțiunea for (structuri repetitive)Citirea și afișarea matricelor în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortCe înseamnă endl în C++?Citește un șir de caractere cu spații în C++Al N-lea termen dintr-o progresie geometricăDistanța dintre două puncte în C++Matrice pătratice în C++. Diagonala principală și secundarăOperații cu numere mari în C++ - Toate funcțiile explicateSuma 1 + 2 + 3 + ... + N în C++Cel mai semnificativ bit în C++Pointer în C++. Variabile de tipul char * (char steluță)Transformarea unui număr din baza 2 în baza 10 în C++Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleMaximul și minimul unui vector în C++Verifică dacă o literă este mică sau mare în C++Șirul lui Fibonacci în C++Căutare binară în C++Șiruri de caractere în C++. Tot ce trebuie să știiCe este o funcție void în C++?Cum să afișezi partea întreagă a unui număr real în C++Cea mai lungă secvență de elemente crescătoare în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Transformarea unei litere mici în literă mare în C++Verifică dacă un număr este par sau impar fără modulo în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorInversarea unui vector în C++Vectorii în C++: declarare și parcurgereFuncții în C++. Ce sunt subprogrameleValoarea absolută (modulul) unui număr în C++Generarea șirului Fibonacci generalizat în C++Numărul permutărilor în C++ (formula permutărilor)Cifra de control a unui numărDe ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Suma elementelor unui vector recursiv în C++Numărul de divizori al unui număr în C++Bordarea unei matrice în C++Instrucțiunea de decizie în C++: if, else, switch, caseRecursivitate în C++Combinatorică în C++: permutări, aranjamente, combinări și alteleCiurul lui Eratostene în C++CMMDC recursiv a două numere naturale în C++Inversarea unui șir de caractere în C++Verifică dacă un număr dat este o putere de 2 în C++Suma divizorilor unui număr în C++Cifra maximă și minimă a unui număr în C++Verifică dacă un caracter este literă în C++Interschimbarea a două variabile în C++ (3 metode)Al N-lea termen Fibonacci în C++Rădăcina cubică a unui număr în C++ (cube root)Cum să citești și să afișezi în fișiere în C++Calculul combinărilor de n luate câte k (nCk) în C++Prima cifră a unui număr în C++Cel mai frecvent element dintr-un șir în C++Ce înseamnă variabilă globală și locală în C++?Structuri repetitive (while, do while, for, etc)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicAlgoritm recursiv pentru căutare binară (clasa a X-a)Maximul și minimul a două valori în C++Cifra maximă a unui număr recursiv în C++Suma numerelor naturale dintr-un interval dat în C++Câte numere naturale sunt într-un interval dat? (C++)Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăTransformarea unui număr din baza 10 în baza 2 în C++Maximul și minimul a n valori în C++Ce este o variabilă unsigned în C++?Tipul struct în C++. Ce sunt structurile de date neomogeneNumărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Factorialul unui număr în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Instrucțiunea continue (structuri repetitive)Numărul minim de peroane pentru o gară în C++Afișarea elementelor unui vector recursiv în C++Comentarii în C++Verifică dacă trei puncte sunt coliniare C++Aflarea sumei primelor N sume GaussFuncții predefinite în C++ (matematice, șiruri de caractere)Do while vs while în C++ - Care e diferența?Interclasarea a doi vectori în C++Tipuri de date în C++: numere întregi, reale, caractere și alteleCodul ASCII (tabel complet)Oglinditul recursiv al unui număr în C++Verifică dacă un caracter este cifră în C++Verificare număr prim în C++ (Clasa a IX-a)Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Numărul de divizori primi ai unui număr în C++Instrucțiunea do while (structuri repetitive)Al N-lea termen dintr-o progresie aritmeticăCel mai mare divizor comun (CMMDC) a două numere în C++Vectorii în C++: citire și afișareMaximul și minimul a trei valori în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiOglinditul unui număr în C++Aria unui triunghi folosind coordonatele acestora în C++

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont