La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia

Presentazioni simili


Presentazione sul tema: "APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia"— Transcript della presentazione:

1 APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia

2 Strutture Dati Candidati e Voti
Candidati: ("abc","Barack","Obama"), (123","Mitt","Romney") Voti: ("abc","Roberto","De Virgilio"), ("abc","Andrea","Rossi"), ("123","Mario","Verdi"), ("aaa","Mario","Neri");

3 Strutture Dati candidato.h

4 Strutture Dati voto.h

5 Non è possibile utilizzare <string.h>
Strutture Dati Candidati e Voti Non è possibile utilizzare <string.h> Candidati: ("abc","Barack","Obama"), (123","Mitt","Romney") Voti: ("abc","Roberto","De Virgilio"), ("abc","Andrea","Rossi"), ("123","Mario","Verdi"), ("aaa","Mario","Neri");

6 Strutture Dati stringhe.h

7 Progetto voto.h stringhe.h candidato.h

8 Funzionalità funzioni per aggiungere una votazione e un candidato ai rispettivi insiemi #include "stringhe.h" typedef struct { string codice; string nome; string cognome; } candidato; typedef struct elem{ candidato info; struct elem* next; } cnode; typedef cnode* candidati; void addcandidato(candidati*, string, string, string); candidato.h

9 Funzionalità funzioni per aggiungere una votazione e un candidato ai rispettivi insiemi #include "stringhe.h" typedef struct { string codice; string nomev; string cognomev; } voto; typedef struct elem2{ voto info; struct elem2* next; } vnode; typedef vnode* voti; void addvoto(voti*, string, string, string); voto.h

10 Funzionalità dato l’insieme di voti, ritornare la dimensione dell’insieme (numero di voti). #include "stringhe.h" typedef struct { string codice; string nomev; string cognomev; } voto; typedef struct elem2{ voto info; struct elem2* next; } vnode; typedef vnode* voti; void addvoto(voti*, string, string, string); int numbervoti(voti); voto.h

11 Funzionalità dato l’insieme di voti e l’insieme di candidati, contare quanti voti non sono validi (voti che hanno un codice che non corrisponde ad alcun candidato nell’insieme dei candidati). #include "candidato.h” typedef struct { string codice; string nomev; string cognomev; } voto; typedef struct elem2{ voto info; struct elem2* next; } vnode; typedef vnode* voti; void addvoto(voti*, string, string, string); int numbervoti(voti); int checkvoti(voti, candidati); voto.h

12 Progetto voto.h stringhe.h candidato.h

13 Funzionalità dato l’insieme dei voti, l’insieme dei candidati e nome e cognome di un candidato, contare quanti voti ha ottenuto quel candidato #include "candidato.h” typedef struct { string codice; string nomev; string cognomev; } voto; typedef struct elem2{ voto info; struct elem2* next; } vnode; typedef vnode* voti; void addvoto(voti*, string, string, string); int numbervoti(voti); int checkvoti(voti, candidati); int count(voti, candidati, string, string); voto.h

14 Funzionalità dato l’insieme dei voti e l’insieme dei candidati, rimuovere dall’insieme dei voti tutti gli elementi non validi (quei voti che hanno un codice che non corrisponde ad alcun candidato nell’insieme dei candidati). #include "candidato.h” typedef struct { string codice; string nomev; string cognomev; } voto; typedef vnode* voti; void addvoto(voti*, string, string, string); int numbervoti(voti); int checkvoto(voto, candidati); int checkvoti(voti, candidati); int count(voti, candidati, string, string); void removeinvalid(voti*, candidati); typedef struct elem2{ voto info; struct elem2* next; } vnode; voto.h

15 Progetto voto.h stringhe.h candidato.h main.c

16 Stringhe.c #include "stringhe.h" int lung(string s){ int i=0;
while(s[i] != '\0'){ i++; } return i;

17 Stringhe.c int confronta(string s1, string s2){
if (lung(s1) == lung(s2)){ int i = 0; while ((s1[i] == s2[i]) && (s1[i] != '\0') && (s2[i] != '\0')) i++; return (s1[i] == '\0') && (s2[i] == '\0'); } else return 0;

18 Stringhe.c void copia(string s1, string s2){ int i=0;
while (s2[i] != '\0'){ s1[i] = s2[i]; i++; } s1[i] = '\0';

19 Progetto voto.h stringhe.h candidato.h main.c

20 candidato.c #include "candidato.h" #include <stdlib.h>
#include <stdio.h> void addcandidato(candidati* cds, string cod, string n, string m){ candidati nc = (candidati)malloc(sizeof(cnode)); copia(nc->info.codice, cod); copia(nc->info.nome, n); copia(nc->info.cognome, m); nc->next = *cds; *cds = nc; }

21 Progetto voto.h stringhe.h candidato.h main.c

22 Voto.c #include "voto.h" #include <stdlib.h>
#include <stdio.h> void addvoto(voti* vs, string cod, string n, string m){ voti v = (voti)malloc(sizeof(cnode)); copia(v->info.codice, cod); copia(v->info.nomev, n); copia(v->info.cognomev, m); v->next = *vs; *vs = v; }

23 Voto.c int numbervoti(voti vs){ int count = 0; while (vs != NULL){
vs = vs->next; } return count;

24 Voto.c candidato.h candidato.c
int checkvoto(voto v, candidati cds){ return checkcandidato(cds, v.codice); } candidato.h int checkcandidato(candidati, string); candidato.c int checkcandidato(candidati cds, string cod){ int test = 0; while ((cds != NULL) && (!test)){ test = confronta(cds->info.codice, cod); cds = cds->next; } return test;

25 Voto.c int checkvoti(voti vs, candidati cds){ int cont = 0;
while (vs != NULL) { if (checkvoto(vs->info,cds)) cont++; vs = vs->next; } return cont;

26 Voto.c int count(voti vs, candidati cds, string n, string m){
string s; copia(s,getcodice(cds,n,m)); while (vs != NULL){ if (confronta(vs->info.codice,s)) count++; vs = vs->next; } return count;

27 char* getcodice(candidati, string, string);
candidato.h char* getcodice(candidati, string, string); candidato.c char* getcodice(candidati cds, string n, string m){ while (cds != NULL) { if (confronta(cds->info.nome,n) && confronta(cds->info.cognome,m)) return cds->info.codice; else cds = cds->next; } return "";

28 Voto.c void removeinvalid(voti *vs, candidati cds){
int l = numbervoti(*vs); if (l >= 2) { voti prev = *vs; voti curr = prev->next; while (curr != NULL) { if (!checkvoto(curr->info,cds)) { voti temp = curr; curr = curr->next; prev->next = curr; free(temp); } // end if else{ prev = prev->next; } // end else } // end while

29 Voto.c void removeinvalid(voti *vs, candidati cds){ …[continua]
if (l > 0) { if (!checkvoto((*vs)->info,cds)) { voti temp = *vs; *vs = (*vs)->next; free(temp); }

30 Progetto voto.h stringhe.h candidato.h main.c

31 main.c #include <stdio.h> #include "voto.h"
int main (int argc, const char * argv[]) { candidati cds = NULL; voti vs = NULL; addcandidato(&cds,"abc","Barack","Obama"); addcandidato(&cds,"123","Mitt","Romney"); addvoto(&vs,"abc","Roberto","De Virgilio"); addvoto(&vs,"abc","Andrea","Rossi"); addvoto(&vs,"123","Mario","Verdi"); addvoto(&vs,"aaa","Mario","Neri"); printf("Voti validi: %d\n", checkvoti(vs,cds)); removeinvalid(&vs,cds); printf("Voti di Barack Obama: %d\n", count(vs,cds,"Barack","Obama")); return 0; }

32 APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e strutture Dati APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia FINE


Scaricare ppt "APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia"

Presentazioni simili


Annunci Google