03/19/09E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2009 Codici.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
String c++.
PROGRAMMARE IN PASCAL (le basi)
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Informatica Generale Marzia Buscemi
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Programmazione Procedurale in Linguaggio C++
Tail recursion: esempio
Corso di Fondamenti di programmazione a.a.2009/2010
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
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.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
CORSO DI PROGRAMMAZIONE II
Scomposizione di stringhe
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
Selezione (=scelta) con “if-else”
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
AN Fondam98 Sorting Ricerca in un vettore ordinato.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
INFORMATICA APPLICATA A.A ° semestre.
void binario(int n); …………………
Massimo Comun Divisore
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
1 Applet ed HTML Fondamenti di Informatica Corso D.
Ricerca sequenziale in un array di interi
Cammini minimi da un sorgente
11/21/2014E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
1/11/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
s STRINGHE DI CARATTERI a p e \0
3/31/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
4/4/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Un.
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Javascript Istruzioni di ciclo: for(inizio; condizione; incremento ) {blocco istruzioni} istruzione seguente; – inizio e incremento possono contenere più.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
4/19/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Gestione dei thread in Java
Programmazione in Java
Olimpiadi di Informatica 2010 Giornate preparatorie
4/25/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
comprensione e modifica di codice
comprensione e modifica di codice
Transcript della presentazione:

03/19/09E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2009 Codici e pizzini.

19/03/ E. Giovannetti - AlgELab Lez.??2 Suggerimenti Per ogni riga bisogna stabilire quanti anagrammi possiede. Per stabilire se due stringhe sono anagrammi basterebbe contare il numero delle diverse cifre di ciascuna stringa (cioè quanti 0, quanti 1, quanti 2, ecc.), e stabilire se sono identici; ciò si può fare in tempo lineare rispetto alla lunghezza della stringa. Ad esempio: void contaCifre(string a, int count[10]) { for(int k = 0; k < 10; k++) count[k] = 0; int lun = a.size(); for(int i = 0; i < lun; i++) count[a[i] - '0']++; }

19/03/ E. Giovannetti - AlgELab Lez.??3 Allora la funzione sonoAnagrammi è: bool sonoAnagrammi(string a, string b) { int m = a.size(); int n = b.size(); if(m != n) return false; int aconti[10]; int bconti[10]; contaCifre(a, aconti); contaCifre(b, bconti); for(int i = 0; i < 10; i++) if(aconti[i] != bconti[i]) return false; return true; }

Per scrivere in fretta il programma... … forse meglio usare una funzione predefinita di sorting...: due stringhe sono anagrammi se, ordinando i caratteri, esse risultano uguali: bool sonoAnagrammi(string a, string b) { if(a.size() != b.size()) return false; sort(a.begin(), a.end()); sort(b.begin(), b.end()); return a == b; }

Raffinamenti … non necessari. La funzione sonoAnagrammi verrà richiamata molte volte su uno stesso argomento, e ogni volta si riesegue l'ordinamento della stringa, Allora sarebbe più efficiente, ma più complicato, creare un array “parallelo” con le versioni ordinate di tutte le stringhe; int main() { fin >> n; string righe[n]; for(int i = 0; i > righe[i]; string righeOrd[n]; for(int i = 0; i < n; i++) { righeOrd[i] = righe[i]; sort(righeOrd[i].begin(), righeOrd[i].end()); } int counters[n];...