Advertisement
Guest User

Apartament C

a guest
Feb 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct Apartament {
  4.     float suprafata;
  5.     int nr_camere;
  6.     char *proprietar;
  7. };
  8.  
  9. struct Hotel {
  10.     int nr_apartamente;
  11.     Apartament *apartamente;
  12. };
  13.  
  14. Apartament citesteApartament(void) {
  15.     Apartament a;
  16.  
  17.     printf("Introduceti suprafata apartamentului: ");
  18.     scanf("%f", &a.suprafata);
  19.     printf("Introduceti numar camere: ");
  20.     scanf("%d", &a.nr_camere);
  21.    
  22.     char buffer[20];
  23.     printf("Introduceti nume proprietar: ");
  24.     scanf("%s", buffer);
  25.     //alocare dinamica pt string - sintaxa C
  26.     a.proprietar = (char*)malloc(sizeof(char) * (strlen(buffer) + 1)); //new char[strlen(buffer) + 1];
  27.     strcpy(a.proprietar, buffer);
  28.  
  29.     return a;
  30. }
  31.  
  32. void afisareApartament(Apartament a) {
  33.     printf("Apartamentul lui %s are o suprafata de %5.2f si %d camere.\n", a.proprietar, a.suprafata, a.nr_camere);
  34. }
  35.  
  36.  
  37. void citesteHotel(Hotel *h) {
  38.     printf("Introduceti numar de apartamente: ");
  39.     scanf("%d", &h->nr_apartamente);
  40.     h->apartamente = (Apartament*)malloc(sizeof(Apartament) * h->nr_apartamente);
  41.     for (int i = 0; i < h->nr_apartamente; i++) {
  42.         h->apartamente[i] = citesteApartament();
  43.     }
  44. }
  45.  
  46. void afisareHotel(Hotel hotel) {
  47.     printf("Hotelul are %d apartamente.\n", hotel.nr_apartamente);
  48.     for (int i = 0; i < hotel.nr_apartamente; i++) {
  49.         afisareApartament(hotel.apartamente[i]);
  50.     }
  51. }
  52.  
  53. Apartament copiazaApartament(Apartament apartament) {
  54.     Apartament a;
  55.     a.nr_camere = apartament.nr_camere;
  56.     a.suprafata = apartament.suprafata;
  57.     a.proprietar = (char*)malloc(sizeof(char) * strlen(apartament.proprietar) + 1);
  58.     strcpy(a.proprietar, apartament.proprietar);
  59.  
  60.     return a;
  61. }
  62.  
  63.  
  64. void main() {
  65.  
  66.     Apartament apartament;
  67.  
  68.     apartament = citesteApartament();
  69.     afisareApartament(apartament);
  70.  
  71.     Hotel hotel;
  72.     citesteHotel(&hotel);
  73.  
  74.     if (hotel.apartamente[0].proprietar)
  75.         free(hotel.apartamente[0].proprietar);
  76.  
  77.     hotel.apartamente[0] = copiazaApartament(apartament);
  78.  
  79.     for (int i = 0; i < hotel.nr_apartamente; i++) {
  80.         free(hotel.apartamente[i].proprietar);
  81.     }
  82.  
  83.     free(hotel.apartamente);
  84.     free(apartament.proprietar);
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement