Să se creeze o coadă ce conține datele despre elevii unei clase : numele, prenumele și anul nașterii. Să se afișeze coada la ecran precum și vărsta fiecărui elev.
Programul să fie creat în limbajul C cu ajutorul la Prelucrarea tipurilor de date stivă, coadă. Dau Coroana!!!
Răspunsuri la întrebare
Răspuns:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_NAME_LENGTH 100
struct node {
char nume[MAX_NAME_LENGTH];
char prenume[MAX_NAME_LENGTH];
int anul_nasterii;
struct node *next;
};
/* Functie pentru adaugarea unui element in coada */
void enqueue(struct node **front, struct node **rear, char nume[], char prenume[], int anul_nasterii)
{
struct node *new_node = (struct node*) malloc(sizeof(struct node));
strcpy(new_node->nume, nume);
strcpy(new_node->prenume, prenume);
new_node->anul_nasterii = anul_nasterii;
new_node->next = NULL;
if (*front == NULL && *rear == NULL)
{
*front = *rear = new_node;
return;
}
(*rear)->next = new_node;
*rear = new_node;
}
/* Functie pentru afisarea cozii */
void afiseazaCoada(struct node *front)
{
time_t current_time;
struct tm *local_time;
/* Obtinem data si ora curenta */
current_time = time(NULL);
local_time = localtime(¤t_time);
printf("Coada elevilor:\n");
while (front != NULL)
{
printf("Nume: %s, Prenume: %s, Anul nasterii: %d, Varsta: %d\n", front->nume, front->prenume, front->anul_nasterii, local_time->tm_year + 1900 - front->anul_nasterii);
front = front->next;
}
}
int main()
{
struct node *front, *rear;
front = rear = NULL;
/* Adaugam elemente in coada */
enqueue(&front, &rear, "Popescu", "Ion", 1995);
enqueue(&front, &rear, "Ionescu", "Maria", 2000);
enqueue(&front, &rear, "Vasilescu", "Alex", 2003);
/* Afisam coada */
afiseazaCoada(front);
return 0;
}
Explicație:
Sper să ajute!