AleksandarArkan

L- input + determina se numeri pari e dispari

Apr 16th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.80 KB | None | 0 0
  1. /*scrivere un programma che accetti in ingresso una sequenza di valori interi
  2.  * terminante con lo zero, e la memorizzi in una lista lineare.
  3.  * successivamente il programma deve determinare il numero di pari e dispari
  4.  * presenti nella lista.*/
  5.  
  6.  #include <stdio.h>
  7.  #include <stdlib.h>
  8.  
  9.  //funzione crea una lista partendo da una sequenza di interi inseriti in input
  10.  
  11.  struct elemento {
  12.      int num;
  13.      struct elemento *next;
  14.      };
  15.      
  16. //funzione uno crea lista con una seq di interi in input
  17.  
  18. struct elemento *creaListaSeq(){
  19.     int numero;
  20.     struct elemento *primo=NULL;
  21.     struct elemento *puntatore;
  22.    
  23.     printf("Inserisci il primo numero:\n");
  24.     scanf("%d",&numero);
  25.    
  26.     if(numero==0)
  27.         return primo;
  28.    
  29.     if(numero!=0){
  30.         primo=malloc(sizeof(struct elemento));
  31.         primo->num=numero;
  32.         }
  33.     puntatore=primo;
  34.     //ora faccio gli altri elementi
  35.     //lettura del prosssimo numero
  36.     printf("Inserisci il numero:\n");
  37.     scanf("%d",&numero);
  38.    
  39.     while(numero!=0){
  40.         puntatore->next=malloc(sizeof(struct elemento));
  41.         puntatore=puntatore->next;
  42.         puntatore->num=numero;
  43.         printf("Inserisci il numero:\n");
  44.         scanf("%d",&numero);
  45.         }
  46.     puntatore->next=NULL;
  47.    
  48.     return primo;
  49.     }
  50.  
  51.  //conta pari e dispari in una lista
  52.  void contaDisparPari(struct elemento *lista, int *dispari, int *pari){
  53.      *dispari=0;
  54.      *pari=0;
  55.      while(lista->next!=NULL){
  56.          if(lista->num%2==0){
  57.             *pari+=1;
  58.         }
  59.         else{
  60.             *dispari+=1;   
  61.         }
  62.     lista=lista->next;
  63.     }
  64.     //ora mi trovo sull'ultima cella, perche il while si e' fermato
  65.     //controlli l'ultimo numero
  66.      if(lista->num%2==0)
  67.         *pari+=1;
  68.     else
  69.         *dispari+=1;
  70. }
  71.  
  72. //
  73.  
  74. int main(){
  75.      struct elemento *lista;
  76.      lista=creaListaSeq();
  77.      int pari,dispari;
  78.      contaDisparPari(lista,&dispari,&pari);
  79.      printf("ci sono %d pari, %d dispari", pari,dispari);
  80.    
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment