APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia

Slides:



Advertisements
Presentazioni simili
Esercitazioni If nidificati
Advertisements

Uso avanzato di C.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Tail recursion: esempio
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
APPUNTI SUL LINGUAGGIO C
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Le liste dinamiche La ricorsione
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
void binario(int n); …………………
Creazione progetto in C++/DEV
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercizi su File.
Esercizi Liste.
Tail recursion: esempio
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
CORSO DI PROGRAMMAZIONE II
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
APPUNTI SUL LINGUAGGIO C
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Gestione della memoria
Esercitazioni di Prog. II (esercizi su alberi ennari)
Struct, enum, Puntatori e Array dinamici
Il linguaggio C Strutture Moreno Marzolla
10. Programmazione Ricorsiva Ing. Simona Colucci
SWITCH – CASE LINGUAGGIO C.
Le postcondizioni specificano l’output della funzione.
ELEMENTI DI INFORMATICA
ELEMENTI DI INFORMATICA
Record.
Ambienti di Programmazione per il Software di Base
APPUNTI SUL LINGUAGGIO C Strutture Dati e Puntatori
Programmazione e Laboratorio di Programmazione
Alberi n-ary Lezioni di C.
APPUNTI SUL LINGUAGGIO C
Gestione di un banco di magliette
Gestione di un ristorante
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
LINGUAGGIO C Alberi e livelli
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

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

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");

Strutture Dati candidato.h

Strutture Dati voto.h

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");

Strutture Dati stringhe.h

Progetto voto.h stringhe.h candidato.h

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

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

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

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

Progetto voto.h stringhe.h candidato.h

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

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

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

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

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;

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

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

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; }

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

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; }

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

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;

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;

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;

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 "";

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

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); }

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

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; }

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