Data la sequenza di N numeri interi, calcola la somma dei pari e il prodotto dei dispari
Data la sequenza di N numeri interi, calcola la somma dei pari e il prodotto dei dispari
se qualche passaggio non risultasse chiaro basta chiedere. Inoltre se puoi specificare anche il linguaggio da utilizzare in questione.
Sarebbe stato meglio se tu ti fossi dilungato un pochino di più. cosa devi fare? un diagramma di flusso o scrivere un programma che faccia quello che chiede l'esercizio? se devi scrivere un programma, in quale linguaggio?
@sebastiano mi scusi devo fare un diagramma di flusso per fare l’esercizio
come mai mi avete votato negativamente? cosa non vi è piaciuto nella mia risposta?
L'elemento neutro dell'addizione è lo zero.
L'elemento neutro della moltiplicazione è lo zero.
Perciò
* la somma di zero numeri pari vale zero
* il prodotto di zero numeri dispari vale uno
Fin qui è aritmetica, indipendente dai paradigmi di prorammazione.
Questi sono i valori con cui inizializzare le due variabili di output in una codifica imperativa o con cui innescare la ricorsione in una codifica funzionale.
------------------------------
Interpreto la frase "Data la sequenza di N numeri interi" con N intero non negativo (la cardinalità di un insieme può essere zero o positiva) nel senso che esiste un'entità globale S con le seguenti minime capacità d'ispezione e modifica.
* vuoto(S): vale falso se S ha almeno un elemento, vero altrimenti.
* estratto(S): se non vuoto(S) vale un elemento di S, con l'effetto collaterale che S ne viene privato, se non vuoto(S); se invece vuoto(S), abortisce tutto.
nell'ipotesi che l'insieme S sia una sequenza invece di estratto(S) si può definire una coppia di funzioni (che, se vuoto(S), abortiscono tutto)
* testa(S): se non vuoto(S) vale il primo elemento di S
* coda(S): se non vuoto(S) S privato del primo elemento
Nell'ipotesi che S possa anche essere un'entità non di memoria, ma di input occorre anche prevedere la possibilità di "abort" e/o di "break" e/o di "continue" per errore di tipo di un elemento: o un linguaggio con variabili tipizzate o funzioni boolean d'ispezione: ai fini di questo esercizio, basta avere sull'elemento E la funzione
* intero(E): vale falso se E non è un intero relativo, vero altrimenti.
In ogni caso occorre almeno una di
* pari(E)
* dispari(E)
con ovvio significato.
------------------------------
ESEMPIO IMPERATIVO
0) definire "esercizioClaudineAgostino" come segue.
1) porre SommaPari = 0
2) porre ProdottoDispari = 1
3) se vuoto(S) proseguire da 4
3a) porre n = estratto(S)
3b) se non intero(n) proseguire da 3
3c) se pari(n) proseguire da 3d
3c1) porre ProdottoDispari = n*ProdottoDispari
3c3) proseguire da 3
3d) porre SommaPari = n + SommaPari
3d1) proseguire da 3
4) emettere all'ambiente i valori di SommaPari e ProdottoDispari
5) terminare
------------------------------
ESEMPIO FUNZIONALE: si attiva il calcolo con "esercizioCA(S, 0, 1)"
--------
0) definire "esercizioCA(S, Somma, Prodotto)" come segue.
1) se vuoto(S): (Somma, Prodotto)
2) se pari(testa(S)): esercizioCA(coda(S), Somma + testa(S), Prodotto)
3) se dispari(testa(S)): esercizioCA(coda(S), Somma, Prodotto*testa(S))