Compiti Vacanze Obbligatorio per chi ha conseguito un voto < 6: PUNTO A) // ESEMPIO: accetta un numero solo se non e' nullo int n; do { printf(“Valore <> da 0 ->”); scanf(“%d”,&n”); } while(n == 0); printf("Valore accettato = %d\n",a); CONTROLLI su INPUT (scrivi i seguenti controlli sull'input da tastiera) 1) // accetta un numero solo se e' positivo o nullo 2) // accetta un numero se il valore e' compreso fra a e b (estremi esclusi) 4) // accetta un numero se il valore e' compreso fra a e b (estremi inclusi) 5) // accetta un numero se il valore e' esterno all'intervallo [a,b] (estremi esclusi) 6) // accetta solo i valori contenuti in un array di N valori 7) // accetta i valori solo se NON contenuti in un array di N valori ____________________________________________________________________________________________________ PUNTO B) Obbligatorio per chi ha conseguito voto < 6 Letto N da tastiera, calcolare il risultato della serie: 1+2+3+...N // Esecizio svolto: double risultato=0; while(N > 0) { risultato=risultato+N; N--; } printf("%10.0lf",risultato); // Da fare (codificare ognuno in una funzione che riceve N in ingresso come parametro) 1) 2 + 4 + 6 + 8 + … N (accettare N solo pari) 2) 1 – 3 + 5 – 7 + 9 ...N 3) 1 + 8 + 27 + ….N^3 4) 1 + ½ + 3 +1/4 + 5 + 1/6 + ….... N 5) 1 + 2 + 3 + 5 + 7 + 11 + 13 + …. N (primi N numeri primi) ______________________________________________________________________________________________________ PUNTO C) Obbligatorio per chi ha voto <= 7 Vettori e funzioni: Svolgere tutti gli esercizi, codificando una funzione per ogni esercizio // 1 // riempire v[] con N elementi random fra 1 ed M ( M >= N) // in modo che il vettore NON contenga valori ripetuti //2 // Dati due vettori ordinati di N elementi v1[] e v2[] mettere in // un terzo vettore (di dimensione 2*N) i valori di v1 e v2, mantenendo l'ordinamento in V3 // (non ordinare v3 dopo averlo riempito - usare un solo ciclo) //3 // dato v[] vettore di prezzi di N prodotti, q[] vettore di quantita' di N prodotti // produrre in s[] i totali ottenuto moltiplicando ciascun prezzo di prodotto per la sua quantita' // es: v[]= [1.10, 2.15, 0.50] , q=[2,1,4] allora in s ci viene messo: s[]=[2.20,2.15,2.00] //3.2 // come sopra ma con in piu' il vettore sconti[] che contiene la percentuale di sconto per quel prodotto // es: se v[]= [1.10, 2.15, 0.50], sconto=[50, 0, 10] e q=[2,1,4] allora s[] = [1.10,2.15,1.80] //4 // // visualizza sullo schermo quelle parti di vettore con sequenze consecutive // esempio: // se v=[1,2,5,3,4,5,-2,-1,0,7,4,5,6] // visualizza: // 1,2 // 3,4,5 // -2,-1,0 // 4,5,6 //5 // // Scrive vero se, per ogni numero il successivo e' uno in piu' o uno in meno // es: se v[]=[1,2,3,2,1,0,1] vero // se v[]=[1,2,4,3,2,1,0] falso //6 // // il vettore v[] contiene numeri fra zero e 50 // Si produca il disegno a schermo che rappresenta, per ogni numero del vettore, la sua // quantita', in orizzontale, in asterischi // es: v=[1,4,7,2,0,1] // Ottengo il disegno: // * // **** // ******* // ** // // * //7 // disordina... // dato un vettore v[] di n elementi ordinato // renderlo "ben disordinato" con gli stessi elementi // esempio: se v[] e' [1,4,5,6,12,32], puo' diventare [4,32,1,5,12,6] oppure [6,32,4,12,5,1] //8 Leggi un vettore v[] di 11 elementi e poi scrivi: A) "Contiene la tabellina del X" (con X fra 1 e 10) se il vettore contiene perfettamente la tabellina (es. v=[0,2,4,6,8,10,12,14,16,18,20] allora X=2) B) "Non contiene nessuna tabellina", in caso contrario //(10)(2) Dati 2 vettori v1 e v2, di N elementi (N da tastiera, fra 1 e 100) // legge da v2 e copia in v1 solo i valori pari; scrive poi a video il numero // di elementi effettivamente copiati //11 Dato un vettore v[] di N elementi (N fra 1 e 100) // codificare una funzione che ritorni 1 se il vettore e' ordinato in senso crescente, -1 se ordinato in senso decrescente, // 0 altrimenti //12 somma dei precedenti: Dati 2 vettori V1 e V2 di identica dimensione N (N fra 1 e 100) // legge da v2 e copia in v1 la somma dei numeri precedenti; // es: se v2=[1,2,2,3,5] v1 diventa [1,3,5,8,13] //13 Conta gli impulsi: Dato un vettore di N elementi (N da tastiera, fra 1 e 100) riempirlo casualmente con valori binari (0 o 1). Contare poi gli "impulsi" del vettore e scriverne il valore a video. (esempio: se v[]="0111001011000" ci sono 3 impulsi ) xxx x xx //14 Rotazione di un vettore (destra) // ruotare a destra il vettore v[] di N elementi (N<=10), di pos (pos < N) posizioni // es se v=[1,2,3,4,5] e pos = 2, v diventa [4,5,1,2,3] //15 Rotazione di un vettore (sinistra) // ruotare a sinistra il vettore v[] di N elementi (N<=10), di pos (pos < N) posizioni //16 ESERCIZI SU MATRICI Obbligatorio per chi ha voto < 9 Caricare da file una matrice quadrata di N elementi interi A) Visualizzare il contorno della matrice (i numeri che sono sulla prima o ultima riga o sulla prima o ultima colonna) B) Visualizzare le due diagonali C) Ordinare la matrice in senso crescente D) Visualizzare la matrice dove ogni elemento e' composto dalla dalla somma degli elementi precedenti E) Ruotare la matrice di 90 gradi a destra F) Scrivere una funzione che ruoti la matrice di 180, 270 Gradi, usando la funzione del punto E) G) Data una matrice di interi in cui ogni elemento identifica l'altezza (quota) del terreno, e date due coordinate della matrice (r1,c1 e r2,c2) Verificare se esiste un percorso tutto in discesa fra il punto r1,c1 e r2,c2 E) Dette G le giornate di campionato di calcio, S le squadre partecipanti, costruire la matrice che contiene i risultati conseguiti da ogni squadra in ogni giornata (0==perdita, 1==pareggio, 3==vittoria). Stampare le squadre (numero delle squadre) e il punteggio conseguito da ogni squadra. Stabilire quali squadre (identificate per numero) vanno in serie B (le ultime tre classificate).