Algoritmi Elementari Agenda Operazioni Elementari Somma dei primi
- Slides: 26
Algoritmi Elementari
Agenda Operazioni Elementari • Somma dei primi n numeri naturali • Fattoriale • Zero di una funzione • Conversione di base (da decimale a binario) • • Operazioni su Vettori Massimo in un vettore Ricerca lineare Somma di due vettori Prodotto scalare
Somma de primi N Numeri Naturali Problema: Dato un Valore N in ingresso, calcolare la somma dei numeri naturali tra 1 ed N Input: • N Output: • 1+2+3+…. +N Elementi di Programmazione
Somma de primi N Numeri Naturali
Somma de primi N Numeri Naturali • Chi Non gambe…. ha testa ha • E’ possibile ottimizzare almeno il ciclo?
Somma de primi N Numeri Naturali • Chi Non gambe…. ha testa ha • E’ possibile ottimizzare almeno il ciclo? 1 • Con N>1 • … quando N=2 entra, somma 1 e poi esce…
Calcolo del Fattoriale Problema: Dato un Valore N in ingresso, calcolare il valore di N! Input: • N Output: • F=N!=N*(N-1)*(N-2)… Elementi di Programmazione
Calcolo del Fattoriale
Calcolo del Fattoriale int main(void) { int n, f; printf("Inserisci un numero: "); fflush(stdout); scanf ("%d", &n); f=n; while(n>2) { n--; f*=n; } printf("Fattoriale: %d", f); return EXIT_SUCCESS; }
Zeri di una funzione Metodo di Bisezione Problema: Data l'equazione f(x)=0, assunto che f(x) sia definita e continua in un intervallo [a, b], assunto che f(a)*f(b)<0 e che la funzione è una funzione polinomiale di ordine n: f(x)= a+a 1*x 1+a 2*x 2+a. . *x. . +an*xn Calcolare almeno uno zero della funzione nell’intervallo [a, b] Input: • N ed i parametri ai Output: • x: f(x)=0 Per semplicità fissiamo N=2 Elementi di Programmazione
Zeri di una funzione Metodo di Bisezione Metodo Risolutivo: Suddividiamo [a, b] in due intervalli. I’=[a, z] I’’=[z, b] z=(a+b)/2 Se f(z)=0, abbiamo trovato la soluzione. Altrimenti si sceglie I’ se f(a)*f(z)<0 I’’ se f(z)*f(b)<0 E si procede nuovamente. L’algoritmo termina quando f(z)<Ɛ Elementi di Programmazione
Zeri di una funzione Metodo di Bisezione
Zeri di una funzione Metodo di Bisezione • Il Codice riporta solo la parte di elaborazione • (Niente I/O) fl=(a+a 1*low+a 2*low); fh=(a+a 1*high+a 2*high); do { z=(low+high)/2; fz=(a+a 1*z+a 2*z*z); if((fz*fl)<0) { high=z; fh=fz; } else { low=z; fl=fz; } i++; } while((fz>0. 001)&&(i<20));
Esercizio per casa • Volendo applicare il metodo ad un qualsiasi polinomio • Come cambia il diagramma di flusso? • Come cambia il codice? • Realizzare un programma che calcola lo zero di una funzione per un polinomio di ordine n qualsiasi.
Conversione di base Problema: Dato un numero rappresentato in base b calcolare la rappresentazione dello stesso numero in base B Input: • Il numero in base b Output: • Il numero in base B Per semplicità fissiamo b=2 B=10 Elementi di Programmazione
Conversione di base unsigned int peso = 1; n 2 = n; n 10=0; while (n 2 > 0) { cifra = n 2 % 10; if (cifra > BASE 1) { printf(“Errore"); return 1; } n 10 = n 10 + cifra * peso; peso = peso * base; n 2 = n 2 / 10; }
Esercizio per casa • Realizzare un programma che effettua la conversione di base richiedendo in ingresso sia la base del numero in ingresso che quella del numero in uscita.
Massimo in un vettore Problema: Dato un vettore di N elementi, trovare il massimo Input: • N ed i valore del vettore Output: • Il massimo del vettore Elementi di Programmazione
Massimo in un vettore for (i=0; i<N; i++){ printf("Elemento %d: ", i); fflush(stdout); gets(tmp); V[i]=atof(tmp); } max=V[0]; for (i=0; i<N; i++){ if(max<V[i]) { max=V[i]; } }
Ricerca in un vettore Problema: Dato un vettore di N elementi ed un elemento E, trovare la posizione di quell’elemento Input: • N ed i valore del vettore • Elemento da cercare E Output: • La posizione del vell’elemento nel vettore Elementi di Programmazione
Ricerca in un vettore • C’è un errore. • Quale?
Ricerca in un vettore i=0; while ((el!=V[i])&&(i<N)){ i++; } if(i>=N) printf("Elemento assenten"); else printf("Posizione: %d", i);
Somma di due vettori Problema: Dati due vettori V 1 e V 2 calcolare il vettore dato dalla somma dei suoi elementi Input: • V 1 e V 2 Output: • V=V 1+V 2: Ɐi V[i]=V 1[i]+V 2[i] Elementi di Programmazione
Somma di due vettori
Prodotto scalare di due vettori Problema: Dati due vettori V 1 e V 2 calcolare il prodotto scalare di due vettori Input: • V 1 e V 2 Output: • v=V 1*V 2= ∑i V 1[i]*V 2[i] Elementi di Programmazione
Inversione di un vettore Problema: Dato un vettore V generare il vettore V 2 i cui elementi hanno posti invertiti rispetto a V Esempio: V 1= [1, 2, 3, 4] V 2=[4, 3, 2, 1] Input: • V Output: • V 2 Elementi di Programmazione
- Algoritmi elementari
- Bfs algoritmo
- Algoritmi elementari
- Algoritmi elementari c++ rezolvate
- Regola di cartesio
- Definizione quadrilateri
- Primo istituto per ciechi 1784
- Agenda sistemica y agenda institucional
- Indicatori di anomalia antiriciclaggio
- Limiti
- Operazioni con parti correlate nota integrativa esempio
- Operazioni musicali
- Semplifica i radicali
- Retta orientata numeri relativi
- Esercizi monomi zanichelli
- Proprietà distributiva
- Mappa sui monomi e polinomi
- Divisione tra numeri in notazione scientifica
- Operazioni coi vettori
- Operazioni triangolari extra ue
- Intero diviso in 1000 parti
- Quando una frazione algebrica è irriducibile
- Proprietà delle operazioni
- Scomposizioni matematica
- Operazioni cifre significative
- La marcia dei diritti dei bambini testo pdf
- Immagini poligoni regolari