Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*scrivere un programma che accetti in ingresso una sequenza di valori interi
- * terminante con lo zero, e la memorizzi in una lista lineare.
- * successivamente il programma deve determinare il numero di pari e dispari
- * presenti nella lista.*/
- #include <stdio.h>
- #include <stdlib.h>
- //funzione crea una lista partendo da una sequenza di interi inseriti in input
- struct elemento {
- int num;
- struct elemento *next;
- };
- //funzione uno crea lista con una seq di interi in input
- struct elemento *creaListaSeq(){
- int numero;
- struct elemento *primo=NULL;
- struct elemento *puntatore;
- printf("Inserisci il primo numero:\n");
- scanf("%d",&numero);
- if(numero==0)
- return primo;
- if(numero!=0){
- primo=malloc(sizeof(struct elemento));
- primo->num=numero;
- }
- puntatore=primo;
- //ora faccio gli altri elementi
- //lettura del prosssimo numero
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- while(numero!=0){
- puntatore->next=malloc(sizeof(struct elemento));
- puntatore=puntatore->next;
- puntatore->num=numero;
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- }
- puntatore->next=NULL;
- return primo;
- }
- //conta pari e dispari in una lista
- void contaDisparPari(struct elemento *lista, int *dispari, int *pari){
- *dispari=0;
- *pari=0;
- while(lista->next!=NULL){
- if(lista->num%2==0){
- *pari+=1;
- }
- else{
- *dispari+=1;
- }
- lista=lista->next;
- }
- //ora mi trovo sull'ultima cella, perche il while si e' fermato
- //controlli l'ultimo numero
- if(lista->num%2==0)
- *pari+=1;
- else
- *dispari+=1;
- }
- //
- int main(){
- struct elemento *lista;
- lista=creaListaSeq();
- int pari,dispari;
- contaDisparPari(lista,&dispari,&pari);
- printf("ci sono %d pari, %d dispari", pari,dispari);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment