Programarea Calculatoarelor, seria CC

Laborator 9

Structuri

În acest laborator veţi învăţa să:



Structuri - scurt breviar de sintaxă

Sintaxa de definire a unei variabile de tip structură este următoarea:
struct {...} variabila;
Variabilele definite cu această sintaxă au un tip de dată anonim (nu se pot face atribuiri între ele).

Putem rezolva mai elegant problema dacă definim un tip de dată structură cu următoarea sintaxă:
typedef struct TIP_STRUCTURA {...};
TIP_STRUCTURA variabila1, variabila2, vector_structuri[100];


Membrii unei structuri se accesează folosind operatorul . astfel:
typedef struct{
   int a, b;
   float c;
   } TRIPLET;
TRIPLET t;
...
   if (t.a==0) ...
...


Două variabile de acelaşi tip structură se pot atribui una alteia, dar nu se pot compara între ele!


Problema 1 - Problemă rezolvată.

Scrieți un program în care să se definească o structură Punct ce are ca membrii coordonatele x și y. Să se citească de la tastatură coordonatele pentru un Punct p și să se afișeze sub forma (x,y).

Observați folosirea structurilor (definire, accesare membrii).

#include <stdio.h>

typedef struct {
     float x, y;
} Punct;

int main ()
{
     Punct p;

     printf("Introduceti x: ");
     scanf("%f", &p.x);
     printf("Introduceti y: ");
     scanf("%f", &p.y);

     printf("(%.2f,%.2f)\n", p.x, p.y);

     return 0;
}

Exemplu:

Intrare Ieşire
8.6
3.5
(8.60,3.50)

Problema 2.

Moduri în care timpul poate fi exprimat într-un program C:

Pentru a facilita lucrul cu date ce reprezintă timpul sunt declarate în biblioteca time.h mai multe funcții. Câteva funcții din time.h:

Să se scrie un program pentru afișarea orei și datei folosind funcțiile din time.h descrise mai sus.


Problema 3.

Să se scrie și să se verifice o funcție pentru transformarea orei din struct tm în șir de caractere (se vor afișa oră, minut, secundă) :

char* timestr(struct tm t, char* time);

Rezultatul funcției este același cu al doilea argument și reprezintă adresa unde se depune șirul de caractere rezultat.


Problema 4.

Să se definească o structură pentru un vector struct vector de întregi alocat dinamic care conține:

Să se scrie funcții pentru: Testaţi programul adăugând pe rând, şi afişând vectorul după fiecare adăugare, numerele de la 0 la 100.


Problema 5.

Să se definească o structură pentru un număr complex cu componente reale (de tip float) şi funcţii pentru operatorii aritmetici cu numere complexe:

Folosind funcţiile anterioare, să se scrie un program pentru calulul valorii unui polinom de variabilă complexă cu coeficienţi reali.


Problema 6.

Să se scrie un program pentru citirea unor cuvinte și afișarea numărului de apariții al fiecărui cuvânt.

Problema se va rezolva în două variante diferite:

Exemplu:

Intrare Ieşire
unu doi
trei doi trei trei
unu 1
doi 2
trei 3