Stefanokj

Untitled

Sep 19th, 2022
998
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //Inserire in una lista n numeri, poi leggere dalla lista i numeri e dividere i pari dai dispari,
  4. //mettendo i pari in un vettore e i dispari in un file
  5. #define max 100
  6. struct node
  7. {
  8.   int dato;
  9.   struct node *next;
  10. };
  11. int main() {
  12.     FILE *z;
  13.     int V[max];
  14.     int i, j, a;
  15.     char c;
  16.     struct node *p, *prec, *head;
  17.     head = NULL;
  18.     printf("scegli i numeri per la lista\n");
  19.     while (1) {
  20.         p = malloc(sizeof(struct node));
  21.         p->next = NULL;
  22.         if (head == NULL)
  23.             head = p;
  24.         else
  25.             prec->next = p;
  26.         prec = p;
  27.         scanf("%d", &p->dato);
  28.         printf("vuoi digitarne altri 1 si, altri no\n");
  29.         scanf("%d", &a);
  30.         if (a != 1)
  31.             break;
  32.         printf("digita L'altro numero\n");
  33.     }
  34.     p = head;
  35.     i = 0;
  36.     z = fopen("zfile", "w");
  37.     while (p != NULL) {
  38.         printf("stampa lista:%d\n", p->dato);
  39.         if (p->dato % 2 == 0)
  40.         {
  41.             V[i] = p->dato;
  42.             i++;
  43.         } else
  44.         {
  45.             fprintf(z, "%d,", p->dato);
  46.         }
  47.         p = p->next;
  48.     }
  49.  
  50.     fclose(z);
  51.     z=fopen("zfile","r");
  52.  
  53.     printf("stampa vettore\n");
  54.     for(j=0;j<i;j++)
  55.         printf("%d\n",V[j]); //Qua avevamo sbagliato a stampare il vettore, stavamo stampando V[i]
  56.  
  57.     printf("stampa file\n");
  58.     while(1)   //Ciclo infinito
  59.     {
  60.         fscanf(z,"%d%c",&a,&c);  //Leggo dal file il numero e la virgola (o eventualmente non leggo nulla perchè il file è finito)
  61.         if(!feof(z))  //Chiedo se quello che ho appena letto sia un numero o se sono alla fine del file
  62.         printf("%d",a); //se ho letto un numero lo stampo
  63.         else break;  //se ero alla fine del file allora esco dal ciclo infinito
  64.     }
  65.     //N.B. La fine di un file può essere letta come se fosse un carattere, è per questo m
  66.     printf("\nciao");
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment