Lezione 5 Sottoarray di somma massima
|
|
|
- Mario Ferri
- 8 anni fa
- Visualizzazioni
Transcript
1 Lezione 5 Sottoarray di somma massima Rossano Venturini [email protected] Pagina web del corso
2 Esercizio 1 My strcat 1 Esercizio Implementare la funzione char* my strcat1(char *s1, char *s2) che restituisce un puntatore alla nuova stringa ottenuta concatenando le stringhe puntate da s1 e s2. Scrivere un programma che legga due stringhe da tastiera e stampi la stringa ottenuta concatenandole. Si può assumere che le stringhe in input contengano non più di 1000 caratteri. Notare che il comportamento di my strcat1() è diverso da quello della funzione strcat() presente nella libreria string. L input è formato da due stringhe di lunghezza non maggiore di 1000 caratteri. L unica riga dell output contiene la stringa ottenuta concatenando nell ordine le due stringhe inserite.
3 Esercizio 1 #include <stdio.h> #include <stdlib.h> #include <string.h> char* my_strcat(char *x, char *y) int xlen = strlen(x); int ylen = strlen(y); char* str = malloc(sizeof(char)*(xlen + ylen + 1)); if (str == NULL) exit(1); int pos = 0, i= 0; for (i = 0; i < xlen; i++) str[pos++] = x[i]; for (i = 0; i < ylen; i++) str[pos++] = y[i]; str[pos] = '\0'; return str;
4 int main(void) char *cat; char x[maxlen]; char y[maxlen]; scanf("%s", x); scanf("%s", y); cat = my_strcat(x, y); printf("%s\n",cat); return 0; Esercizio 1
5 Esercizio 5 My strcpy Esercizio Scrivere una funzione char* my strcpy(char* dest, char* src) che copi src in dest (incluso il terminatore \0 ) e restituisca un puntatore a dest. La funzione assume che in dest vi sia spazio su ciente per contenere src (è compito del chiamante assicurarsi che ciò sia vero). Si noti che il comportamento di my strcpy() è uguale a quello della funzione strcpy() presente nella libreria string. Scrivere poi un programma che: legga una stringa da tastiera (di lunghezza non maggiore di 1000 caratteri); allochi spazio su ciente per una seconda stringa destinata a contenere la prima; copi la prima stringa nella seconda; stampi la seconda stringa. L input è formato da una sola riga contenente una stringa di lunghezza non maggiore di 1000 caratteri. L unica riga dell output contiene la stampa della seconda stringa.
6 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLEN (1001) char* my_strcpy(char* dest, char* src) char *s = src, *d = dest; while ((*d = *s) = '\0') d++; s++; return dest; Esercizio 5
7 int main(void) char y[maxlen], *x; int len; scanf("%s", y); len = strlen(y); x = malloc(sizeof(char) * (len+1)); x = my_strcpy(x, y); printf("%s\n", x); return 0; Esercizio 5
8 Esercizio 6 Moltiplicazione di stringhe Esercizio Si scriva una funzione char* product(char *str, int k) che data una stringa str e un intero k restituisca una stringa ottenuta concatenando k volte la stringa str. Si scriva un programma che legga in input: una stringa (assumendo che la stringa sia non più lunga di 1000 caratteri); un intero, che indica quante volte ripetere la stringa. e infine stampi l output di product(). L input è costituito, nell ordine, da: una stringa di lunghezza non superiore a 1000 caratteri; un intero k che indica quante volte ripetere la stringa inserita. L unica riga dell output è formata da una stringa contenente k concatenazioni della stringa data in input.
9 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE (1001) char* product(char *str, int k) int i; int len = strlen(str); int plen = len*k+1; char *prod = malloc(plen*sizeof(char)); for(i = 0; i < plen-1; i++) prod[i]= str[ i%len ]; prod[plen-1] = \0'; return prod; Esercizio 6
10 int main(void) char str[maxsize], *prod; int k; scanf("%s", str); scanf("%d", &k); prod = product(str, k); printf("%s\n", prod); return 0; Esercizio 6
11 Sottoarray di Somma Massima
12 Sottoarray di Somma Massima Problema: Dato un array a di n interi (positivi e negativi) individuare il sottoarray di somma massima. Input: un array a di interi Output: la somma del sottrarray di somma massima
13 Sottoarray di Somma Massima Problema: Dato un array a di n interi (positivi e negativi) individuare il sottoarray di somma massima. Input: un array a di interi Output: la somma del sottrarray di somma massima Esempio
14 Sottoarray di Somma Massima Problema: Dato un array a di n interi (positivi e negativi) individuare il sottoarray di somma massima. Input: un array a di interi Output: la somma del sottrarray di somma massima Esempio a
15 Sottoarray di Somma Massima Problema: Dato un array a di n interi (positivi e negativi) individuare il sottoarray di somma massima. Input: un array a di interi Output: la somma del sottrarray di somma massima Esempio a
16 Sottoarray di Somma Massima Problema: Dato un array a di n interi (positivi e negativi) individuare il sottoarray di somma massima. Input: un array a di interi Output: la somma del sottrarray di somma massima Esempio a output: 13
17 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) somma+=a[k]; if(somma > max) max=somma;
18 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) somma+=a[k]; if(somma > max) max=somma; a i j
19 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) somma+=a[k]; O(1) if(somma > max) max=somma; a i j
20 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) O(n) somma+=a[k]; O(1) if(somma > max) max=somma; a i j
21 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) O(n) somma+=a[k]; O(1) if(somma > max) max=somma; O(n 2 ) a i j
22 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) O(n) somma+=a[k]; O(1) if(somma > max) max=somma; O(n 2 ) O(n 3 ) a i j
23 Soluzione 1 max = a[0]; for(i=0; i<n; i++) for(j=i; j<n; j++) somma=0; for(k=i; k<=j; k++) O(n) somma+=a[k]; O(1) if(somma > max) max=somma; O(n 2 ) O(n 3 ) a i Tempo: O(n 3 ) :-( j
24 Soluzione 2 max = a[0]; for(i=0; i<n; i++) somma=0; for(j=i; j<n; j++) somma+=a[j]; if(somma > max) max=somma; a i j
25 Soluzione 2 max = a[0]; for(i=0; i<n; i++) somma=0; for(j=i; j<n; j++) somma+=a[j]; if(somma > max) max=somma; O(1) a i j
26 Soluzione 2 max = a[0]; for(i=0; i<n; i++) somma=0; for(j=i; j<n; j++) somma+=a[j]; if(somma > max) max=somma; O(1) O(n) a i j
27 Soluzione 2 max = a[0]; for(i=0; i<n; i++) somma=0; for(j=i; j<n; j++) somma+=a[j]; if(somma > max) max=somma; O(1) O(n) O(n 2 ) a i j
28 Soluzione 2 max = a[0]; for(i=0; i<n; i++) somma=0; for(j=i; j<n; j++) somma+=a[j]; if(somma > max) max=somma; O(1) O(n) O(n 2 ) a i Tempo: O(n 2 ) :- j
29 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima
30 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo).
31 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a
32 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a
33 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a
34 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a 2) Il valore immediatamente precedente al primo valore del sottoarray ottimo è negativo, se così non fosse potremmo aggiungere tale valore ottenendo un sottoarray di somma maggiore (assurdo) 3)
35 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a 2) Il valore immediatamente precedente al primo valore del sottoarray ottimo è negativo, se così non fosse potremmo aggiungere tale valore ottenendo un sottoarray di somma maggiore (assurdo) 3) a
36 Come fare meglio? Possiamo sfruttare due proprietà del sottrarray di somma massima 1) La somma dei valori in ogni prefisso del sottoarray ottimo è positiva, se così non fosse potremmo eliminare tale prefisso ottenendo un sottoarray di somma maggiore (assurdo). a 2) Il valore immediatamente precedente al primo valore del sottoarray ottimo è negativo, se così non fosse potremmo aggiungere tale valore ottenendo un sottoarray di somma maggiore (assurdo) 3) a
37 Soluzione 3 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma;
38 Soluzione 3 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; O(1)
39 Soluzione 3 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; O(1) O(n)
40 Soluzione 3 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; O(1) O(n) Tempo: O(n) :-)
41 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma -1 Tempo: O(n) :-)
42 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma -1 5 Tempo: O(n) :-)
43 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma Tempo: O(n) :-)
44 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma Tempo: O(n) :-)
45 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma Tempo: O(n) :-)
46 max = A[0]; somma = 0; for(i=0; i<n; i++) if(somma > 0) somma+=a[i]; else somma=a[i]; if(somma > max) max=somma; Soluzione 3 O(1) O(n) somma Tempo: O(n) :-)
47 Esercizio 1 Intersezione tra array Scrivere un programma che accetti in input due array di interi distinti e restituisca in output il numero di elementi che occorrono in entrambi gli array. Si assuma che la lunghezza di ogni array sia fornita prima dell immissione degli elementi. Una volta scritto il codice e superata la verifica sul sito, scaricare e decomprimere il file a questo indirizzo: set.zip La directory contiene input diversi (file.in) insieme agli output attesi (file.out). Ad esempio: 100.in contiene 2 array di lunghezza cento, ed è possibile usarlo come input al programma utilizzando la redirezione dell input vista a lezione:./esercizio.o < 100.in Si provi a lanciare il programma su input diversi e per ogni input si controlli che l output sia giusto confrontandolo col valore nel rispettivo file.out, che è possibile stampare sul terminale col comando cat, ad esempio: cat 100.out 45 Infine, si provi a misurare quanto tempo impiega il programma su input diversi utilizzando il comando time, che restituisce in output il tempo impiegato dal programma, ad esempio: time./esercizio.o < 100.in 45 real user sys pcpu Come varia il tempo impiegato a seconda della dimensione dell array?
48 Esercizio 2 Intersezione tra array ordinati Scrivere un programma che accetti in input due array di interi distinti e restituisca in output il numero di elementi che occorrono in entrambi gli array. Si assuma che la lunghezza di ogni array sia fornita prima dell immissione degli elementi. Si assuma che questa volta gli array vengano inseriti ordinati in maniera strettamente crescente. Si può calcolare l intersezione in maniera più e ciente? Dopo aver superato i test sul sito, si ripetano gli esperimenti sul dataset utilizzato nel precedente esercizio (gli array vengono forniti in ordine crescente) e si confrontino i risultati ottenuti. set.zip
49 Esercizio 3 Sottoarray di somma massima Dato un array A di n interi (positivi e negativi), scrivere un programma che identifichi il sottoarray di A i cui elementi hanno somma massima tra tutti gli altri sottoarray di A e ne stampi la somma. Una volta scritto il codice e superata la verifica sul sito, scaricare i files di test diponibili all indirizzo maxsum.zip e valutare l e cienza della propria soluzione. La soluzione implementata dovrebbe avere complessità lineare, in base all algoritmo visto a lezione. Come utile esercizio facoltativo, implementare una soluzione di complessità non ottimale (ad esempio quadratica), misurare il tempo impiegato e notare la di erenza tra le diverse soluzioni.
50 Esercizio 4 Fusione di array ordinati Scrivere un programma che accetti in input due array ordinati di interi e restituisca in output l unione ordinata dei due array. Si assuma che la lunghezza di ogni array sia fornita prima dell immissione degli elementi. Per semplicità si assuma che l intersezione tra i due array sia vuota.
51 Puzzle L intero mancante Viene dato un array di dimensione N contenente (non ordinati) tutti gli interi compresi tra 1 e N + 1 ad eccezione di uno di essi e si vuole stabilire l elemento mancante. Sono possibili almeno 4 soluzioni aventi le seguenti complessità: Tempo Spazio aggiuntivo O(n 2 ) O(1) :-(( O(n log n) O(n) :-( O(n) O(n) :-) O(n) O(1) :-D Input Output 5
Lezione 6 Selection/Insertion Sort su interi e stringhe
Lezione 6 Selection/Insertion Sort su interi e stringhe Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Tutoraggio Venerdì 14
Lezione 9 Esercizi d esame
Lezione 9 Esercizi d esame Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Qsort su interi Scrivere un programma
STRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
Corso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
Caratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche
Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore
Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
Gestione di stringhe. Le stringhe in C/C++
Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una
Lab 10 Gestione file di testo
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 10 Gestione file di testo Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Argomenti di questa esercitazione Stringhe Strutture ESERCIZIO 1 (stringhe) Scrivere una funzione che date tre stringhe A, B e C concateni in C il contenuto di A e B e restituisca
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
Esercizio 1: Puntatori impiegati che sono manager
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si
n deve essere maggiore di 0, altrimenti il metodo restituisce null.
Esercizio 1 di classe Intersezione che presi in input due Array di int A e B, restituisce in output un array contenente gli elementi presenti sia in A che in B. Esercizio 2 di classe identità che prende
Gestione delle stringhe in C
Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato
Le stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
IL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
Scrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
Esempio di Prova Scritta
Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: [email protected] sito: users.iol.it/genna18 Risoluzione di un problema Dato
ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -
ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri
Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247
Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri
Linguaggi di programmazione + laboratorio a.a. 2012/2013
Linguaggi di programmazione + laboratorio a.a. 2012/2013 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a
Esercizi di programmazione in linguaggio C - Costrutto iterazione
Esercizi di programmazione in linguaggio C - Costrutto iterazione prof. Roberto uligni 1. [potenze1] Scrivere un programma che visualizzi il valore di tutte le prime n potenze di 2 con n richiesto all'utente
Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
RICERCA DI UN ELEMENTO
RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare
Esercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
Da infissa a Postfissa
Da infissa a Postfissa Facciamo vedere come si può convertire un'espressione aritmetica infissa in una equivalente postfissa, come secondo esempio di uso della pila e per completare il nostro primo caso
ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -
ESERCIZI DI PROGRAMMAZIONE - condizionali e cicli - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1: dal tema d esame ING-INF del 28 gennaio 2009 Si sviluppi un programma in
Esempio: Array di struct
Esempio: Array di struct Scrivere un programma C che definisca la struttura esame, composta dal nome dell esame (stringa) e dal voto (intero). Si leggano poi da terminale n esami, con n definito dall utente
HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.
HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
Esercizio 1 Liste: calcolo perimetro di un poligono
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Variabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
Fondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice
4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione
Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate
Linguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
Le funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
Esercizi di programmazione in linguaggio C Ordinamento
Esercizi di programmazione in linguaggio C Ordinamento Nota: memorizzare i programmi in cartelle separate. Ogni cartella deve contenere, oltre al codice sorgente e al file eseguibile, gli eventuali file
Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
Lezione 9 Alberi binari di ricerca
Lezione 9 Alberi binari di ricerca Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere
Funzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
Problema: calcolare il massimo tra K numeri
Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti
Array multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
Esercizi Svolti di Programmazione
Esercizi Svolti di Programmazione Walter Cazzola DICo - Dipartimento di Informatica e Comunicazione Università degli Studi di Milano [email protected] Introduzione Di seguito sono riportati alcuni
Breve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle
Input/Output di numeri
Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include
Esercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
stringhe array monodimensionali char. libreria < string.h>
Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite
Le Funzioni e la Ricorsione
Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
puntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
Esercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
Laboratorio di programmazione
Laboratorio di programmazione 9 novembre 2016 Sequenze di Collatz Considerate la seguente regola: dato un numero intero positivo n, se n è pari lo si divide per 2, se è dispari lo si moltiplica per 3 e
Esercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
