Alx09

Untitled

May 15th, 2020
1,296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef struct Stelian // definim structura Stelian
  5. {
  6.     int a; // numarul pe care i l vom salva
  7.     struct Stelian *urm; // pointerul catre urmatorul numar
  8. }Stelian;
  9.  
  10. Stelian * AdaugareNumar(Stelian *prim, int a) { // functia de aduagare
  11.     Stelian *q, *p; // pointeri de tip structura ajutatori
  12.     p = prim; // atribum lui p adresa lui prim
  13.     q = (Stelian *)malloc(sizeof(Stelian)); // initialiam pointerul q
  14.     q->a = a; // atribui lui q valaorea a
  15.     q->urm = NULL; // intitalizam cu NULL uramtorul pointer din lista
  16.     if (prim == NULL) // daca este primul numar adaugat in lista
  17.         return q;// atunci returnam q
  18.    
  19.     while (p->urm != NULL) // altfel mergem pana la ultimul numar din lista
  20.         p = p -> urm; // trecem la urmatorul numar din lista
  21.     p->urm = q; // ii atribuim adresa q penntru ultimul numar din lista
  22.     q->urm = NULL;
  23.     return prim;// returnam tot primul nod
  24. }
  25. void AfisareNumere(Stelian *prim) {
  26.     Stelian *q = prim; // atribuim pointerul q adresa primului element
  27.     printf("Numerele sunt: "); // mesaj interactiv cu utilizatorul
  28.     while (q != NULL) {
  29.         printf("%d ", q->a); // afisam elementele pana s-a ajuns la NULL
  30.         q = q->urm; // trecem la urmatorul numar din lista
  31.     }
  32. }
  33.  
  34.  
  35. void AfisareFiser(Stelian *prim) {
  36.     Stelian * q = prim;
  37.     int a, b, c, nr = 0, aux;
  38.     FILE *f;// variabila de tip fiser
  39.     f = fopen("Numar_numere.txt", "w");
  40.     a = q->a; // citim variabile din lista
  41.     q = q->urm;
  42.     b = q->a;
  43.     q = q->urm;
  44.     c = q->a;
  45.     if (a > b) // le sortam
  46.     {
  47.         aux = a;
  48.         a = b;
  49.         b = aux;
  50.     }
  51.     if (b > c)
  52.     {
  53.         aux = b;
  54.         b = c;
  55.         c = aux;
  56.     }
  57.     if (a > b)
  58.     {
  59.         aux = a;
  60.         a = b;
  61.         b = aux;
  62.     }
  63.     if (a != b) // acum daca sunt sortate si diferite se gasesc diferanta lor -1 numere in ace=l interval
  64.         nr = nr + b - a - 1;
  65.     if(a != c)
  66.         nr = nr + c - a - 1;
  67.     if (b != c)
  68.     nr = nr + c - b - 1;
  69.     fprintf(f, "%d", nr);
  70. }
  71.  
  72. int main()
  73. {
  74.     Stelian *prim = NULL;
  75.     int a, opt, i;
  76.     do {
  77.         printf("\n1. Adaugare numar\n");
  78.         printf("2. Afisare numere\n"); // mesae interactive
  79.         printf("3. Aflare numar intregi\n");
  80.         printf("optiunea: "); scanf("%d", &opt);
  81.         switch (opt)
  82.         {
  83.         case 0: exit(0);
  84.         case 1:
  85.  
  86.             printf("Introduceti numerele:\n");
  87.             for (i = 1; i < 4; i++) { // citim cele 3 numere
  88.                 printf("Numarul %d  = ", i);
  89.                 scanf("%d", &a);
  90.                 prim = AdaugareNumar(prim, a);
  91.             }
  92.             break;
  93.         case 2:
  94.             AfisareNumere(prim);
  95.             break;
  96.         case 3:
  97.             AfisareFiser(prim);
  98.             break;
  99.         default:
  100.             break;
  101.         }
  102.     } while (1);
  103.      
  104.     system("pause");
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment