Advertisement
danpalol

esame intercorso es 2

Jun 25th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. //strutture
  5. typedef struct nodo *Lista;
  6. typedef struct nodo {
  7.         char nome[26];
  8.         Lista next;
  9. }   nodo;
  10.  
  11.  
  12. char * acronimo(Lista list);
  13. Lista inserimento(void);
  14. void stampalista(Lista list);
  15. Lista invertilista(Lista list);
  16. void inserisci_in_file (char * list);
  17.  
  18. int main ()
  19. {
  20.     Lista listaccia, reverse;
  21.     char *output;
  22.  
  23.     listaccia=inserimento();
  24.  
  25.     reverse=invertilista(listaccia);
  26.     stampalista(reverse);
  27.     output=acronimo(reverse);
  28.     inserisci_in_file(output);
  29.     printf("%s", output);
  30.     return 0;
  31. }
  32.  
  33. //inserimento di elementi in lista
  34.  
  35. Lista inserimento(void)
  36. {
  37.     Lista l=NULL;
  38.     char nome[26];
  39.     nodo *N;
  40.     while(1)
  41.     {
  42.         printf("inserisci un valore  ($ PER TERMINARE)\n");
  43.         scanf("%s", nome);
  44.         if(strcmp(nome, "$")==0) break;
  45.         N=malloc(sizeof(nodo));
  46.         if(!N) {
  47.         printf("memoria esaurita\n");
  48.         return l;}
  49.         strcpy(N->nome, nome);
  50.         N->next=l;
  51.         l=N;
  52.     }
  53.     return l;
  54. }
  55.  
  56. //stampa elementi in lista
  57.  
  58. void stampalista(Lista list)
  59. {
  60.     while(list!=NULL)
  61.     {
  62.     printf("%s\n",list->nome);
  63.     list=list->next;
  64.     }
  65.  
  66. }
  67.  
  68.  
  69. Lista invertilista(Lista list)
  70. {
  71.     Lista l=NULL;
  72.     nodo *N;
  73.     while(list)
  74.     {
  75.         N=malloc(sizeof(nodo));
  76.         strcpy(N->nome,list->nome);
  77.         N->next=l;
  78.         l=N;
  79.         list=list->next;
  80.     }
  81.     return l;
  82. }
  83.  
  84. char* acronimo(Lista list)
  85. {
  86.     char *output;
  87.     int cont=0;
  88.     Lista tmp=list;
  89.     while(tmp)
  90.     {
  91.         cont++;
  92.         tmp=tmp->next;
  93.     }
  94.     output=malloc(sizeof(char)*cont);
  95.  
  96.     cont=0;
  97.     while(list)
  98.     {
  99.         output[cont]=list->nome[0];
  100.         cont++;
  101.         list=list->next;
  102.     }
  103.     output[cont]='\0';
  104.     return output;
  105. }
  106.  
  107. void inserisci_in_file (char *list)
  108. {
  109.     FILE *lol;
  110.     lol=fopen("vettore di iniziali.txt", "w");
  111.     if (!lol)
  112.     {
  113.       printf("\nERRORE IN APERTURA FILE DI SALVATAGGIO, TERMINO\n\n");
  114.       return;
  115.    }
  116.     fprintf(lol,"%s", list);
  117.     fclose(lol);
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement