| Fare il debugging è doppiamente difficile rispetto a scrivere direttamente il codice. Quindi, se scrivi il codice nel miglior modo possibile, sei, per definizione, non abbastanza intelligente per fare il debug.
Brian Wilson Kernighan
|
Esercizi Pascal/C vari
- Sequenza Pascal C
- Dati i due cateti di un triangolo rettangolo, stampare l'area e il perimetro del triangolo stesso
- dati due orari espressi in ore minuti secondi calcolare la differenza in secondi (hint: convertire tutto in secondi...)
- dati due orari espressi in ore minuti secondi calcolare la differenza in ore, minuti, secondi
- dati n chilometri percorsi con x litri di benzina calcolare quanti chilometri percorre una moto con 1 litro di benzina
- Sapendo che in un parcheggio la prima ora costa €2 mentre tutte le successive costano €1, scrivere un programma che richieda il numero complessivo delle ore e visualizzi il totale da pagare.
- La tassa per la raccolta dei rifiuti urbani in comune viene calcolata rispetto alle dimensioni dell'appartamento espresse in metri quadri, in ragione di X euro per ogni mq. All'importo cosi determinato viene poi aggiunta una cifra fissa di Y euro; sul totale, inoltre, viene calcolata un'addizionale pari al P%. I valori dei parametri X, Y e P sono forniti all'inizio digitandoli da tastiera. Si vuole ottenere la stampa dell'importo totale per un appartamento dopo aver introdotto da tastiera la superficie in mq.
- Calcolare il tempo trascorso tra due date espresse in giorni, mesi e anni. Considerare l'anno commerciale (cioé mesi di trenta giorni)
- In un condominio si decide di calcolare una tassa una tantum rispetto alle dimensioni dell'appartamento, espresse in metri quadri, in ragione di K . per ogni metro quadrato abitato. All'importo così calcolato viene aggiunta una quota fissa di X . ed una percentuale del T%. Realizzare un programma che, dati in input i valori di K, X, e T, determini l'ammontare della tassa.
- Un'impresa di trasporti calcola il costo di un trasporto aggiungendo al costo fisso di 52 € l'importo massimo tra il costo chilometrico (0,62 € al Km) e il costo per il peso (0,08 € al quintale). Scrivere un programma che, dati la lunghezza del viaggio e il peso della merce trasportata, calcoli il costo finale.
- Selezione Pascal C
- Scrivere un programma che richiesto all'utente un numero intero stabilisca se è pari o dispari.
- determinare se un numero dato è positivo, negativo (opzionale: o nullo)
- dati in input il nome e l'età della persona calcolare se è maggiorenne stampando il nome e la scritta maggiorenne
- dati il nome ed il sesso di una persona visualizzare la scritta "Egregio signor" o "Gentilissima signora" a seconda si tratti di un uomo o di una donna
- Dati il codice e il prezzo di un prodotto, calcolare il prezzo da pagare sapendo che se il prezzo è superiore a una determinata cifra (costante) si applica il 6% di sconto, e se il pagamento è fatto in contanti si applica un ulteriore sconto del 2%.
- Sul prezzo di un prodotto viene praticato lo sconto del X% se si acquistano fino a 10 pezzi e dell'Y% se si acquistano più10 pezzi. Presi in input il prezzo di un prodotto e il numero di pezzi da acquistare, stampare la spesa da sostenere.
- Per aumentare il numero di visitatori di una mostra, si decide di far pagare il biglietto di ingresso differenziato in base all'età Precisamente:
ETA' PREZZO DEL BIGLIETTO
Inferiore a 5 anni Gratuito
Fino a 10 anni € 1
Da 11 a 17 anni € 1,50
Da 18 a 26 anni € 2
Oltre 26 anni € 3
Realizzare un programma che, data in input l'età visualizzi l'importo del biglietto da pagare.
- Sullo stipendio dei dipendenti di una ditta viene applicata una trattenuta fiscale in base alla seguente tabella:
Scaglione 1: Trattenuta 5%
Scaglione 2: Trattenuta 10%
Scaglione 3: Trattenuta 15%
Scaglione 4: Trattenuta 25%
Scaglione 5: Trattenuta 35%
Realizzare un programma che, dato in input lo scaglione di appartenenza di un dipendente, calcoli la trattenuta da versare.
- Scrivere un programma che richieste due date nel formato GG, MM, AA (sei numeri) determini la data più recente.
- Una nuova compagnia telefonica ha promosso l'offerta "oltre80": alla cifra fissa di 0,10 euro (costo della risposta) occorre aggiungere la cifra di 0,15 euro per ogni secondo del tempo della telefonata; però oltre gli 80 secondi la tariffa per ogni secondo è di 0,09. Fornito da tastiera il numero dei secondi della telefonata, visualizzare il costo totale della chiamata.
- Su una linea ferroviaria rispetto alla tariffa piena gli utenti pensionati usufruiscono di uno sconto del 10%, gli studenti del 15% e i disoccupati del 25%. Codificando i pensionati con una P, gli studenti con una S e i disoccupati con una D, scrivere un programma che rischiesto il costo di un biglietto e l'eventuale condizione particolare dell'utente, visualizzi l'importo da pagare.
- Dati tre numeri, determinare e visualizzare il maggiore.
- Realizzare un programma che, dati in input tre numeri, determini il maggiore, il minore, la differenza tra il maggiore e i minore.
- A un rappresentante spetta, oltre a una percentuale sulle vendite effettuate in una settimana, un premio in denaro se la percentuale a lui spettante è superiore a 300€. Tale premio varia a seconda del valore della sua percentuale. Dati il nome e la percentuale di un rappresentante, calcolare il premio e la somma totale che gli spetta.
Si suppone che il premio sia:
euro 50 se la percentuale è inferiore a 1000
euro 100 se la percentuale è inferiore a 1500
euro 200 se la percentuale è uguale o superiore a 1500.
- Dati in input le misure dei tre lati di un triangolo, stabilire se il triangolo è scaleno, isoscele o equilatero
- Dati in input i coefficienti (interi) a, b di una equazione di primo grado determinare la soluzione sotto forma di frazione
- (difficile) Dati in input i coefficienti (interi) a, b, c di una equazione di secondo grado determinare la soluzione in forma esatta (radici e frazioni)
- Dati in input i coefficienti (reali) a, b di una equazione di primo grado determinare la soluzione
- Dati in input i coefficienti (reali) a, b, c di una equazione di secondo grado determinare le (due?) soluzioni
- (difficile) Dati in input i coefficienti (reali) a, b, c, d di una equazione di terzo grado determinare le (tre?) soluzioni
- Scrivere un programma che richiesto il numero AA, che rappresenta un anno,
verifichi se questo è bisestile. Sono anni bisestili (ovvero di 366 giorni) quelli divisibili per 4 e, fra gli anni secolari, solo quelli divisibili per 400 (come il 2000, il 2400, il 2800, ecc.).
- Scrivere un programma che richiesti i numeri GG, MM, AA di una data verifichi se questa è valida. Ricordare che 1<=MM<=12 e che i mesi di Aprile (MM=4), Giugno (MM=6), Settembre (MM=9) e Novembre (MM=11) sono composti da 30 giorni, febbraio (MM=2) da 28 o 29 giorni mentre tutti gli altri mesi sono composti da 31 giorni
- Acquisire in input un carattere, poi:
1- se il carattere (a -z) è minuscolo convertirlo in maiuscolo e visualizzarlo
2- se il carattere (a-z) è maiuscolo convertirlo in minuscolo e visualizzarlo
3- se il carattere è un numero stampare il suo cubo e visualizzarlo
4- In tutti gli altri casi visualizzare un asterisco
- Il sistema di riscaldamento di una fabbrica si accende quando la media delle temperature, registrate in tre punti diversi dell'edificio, è inferiore a un valore fissato. Scrivere un programma che permetta di fissare il limite di accensione e, ricevute in input le temperature registrate nei tre punti, calcolare la media segnalando se il riscaldamento verrà acceso o no.
- Ogni mattina entro le 10 i campeggiatori che hanno terminato il proprio soggiorno devono lasciare libera la piazzola che hanno occupato.
Ciascun campeggiatore deve dichiarare:
- il numero di giorni trascorsi al camping
- il numero di persone formanti il gruppo
- il tipo di abitacolo ('T': tenda, 'R':roulotte)
- il tipo di veicolo ('A': auto, 'M': moto)
Calcolare e stampare quanto deve pagare ciascun gruppo in base a questo listino prezzi:
- euro 5 per persona al giorno
- euro 4 per tenda al giorno
- euro 4,50 per roulotte al giorno
- euro 5,50 per auto al giorno
- euro 3,50 per moto al giorno
- Un parcheggio ha la tariffa di un euro per la prima ora di sosta e di 0,50 euro per ogni ora successiva. Conoscendo l'orario di entrata e di uscita di un'autovettura (espresso in ore e minuti), emettere uno scontrino con l'ora di entrata, l'ora di uscita, il tempo di durata della sosta e la relativa spesa
- Scrivere un programma che visualizzi il seguente menù di prova
a) per determinare dati
b) per determinare il maggiore
c) per determinare il minore
d) per visualizzare
e) per ordinare
quindi attendere un immissione di un carattere da parte dell'utente e visualizzi una scritta a la scelta effettuata. Se la scelta non è tra quelle proposte deve essere visualizzata la scritta "opzione inesistente".
- Sullo stipendio dei dipendenti di una ditta viene applicata una trattenuta fiscale in base alla seguente tabella:
Scaglione 1: Trattenuta 5%
Scaglione 2: Trattenuta 10%
Scaglione 3: Trattenuta 15%
Scaglione 4: Trattenuta 25%
Scaglione 5: Trattenuta 35%
Realizzare un programma che, dato in input lo scaglione di appartenenza di un dipendente, calcoli la trattenuta da versare.
- Su una linea ferroviaria rispetto alla tariffa piena gli utenti pensionati usufruiscono di uno sconto del 10%, gli studenti del 15% e i disoccupati del 25%. Codificando i pensionati con una P, gli studenti con una S e i disoccupati con una D, scrivere un programma che rischiesto il costo di un biglietto e l'eventuale condizione particolare dell'utente, visualizzi l'importo da pagare.
- Data la parabola y=ax^2+bc+c, definire tre funzioni per calcolarne i punti significativi: vertice, fuoco, intersezioni con gli assi. le tre funzioni ricevono come parametri i coefficienti a,b,c e restituiscono il valore calcolato
- Ripetizione (controllo input?) Pascal C
- Scrivere un programma che visualizzi in successione i primi 10 numeri interi.
- Scrivere un programma che visualizzi il quadrato dei primi 24 numeri naturali.
- Calcolare la media dei voti di uno studente.
- Calcolare quanto si spende in un negozio acquistando un certo numero di prodotti. L'utente conosce il numero di prodotti che ha acquistato e, per ogni prodotto, inserisce il costo.
- Scrivere un programma che calcoli il valore della circonferenza e quello dell'area di tutti i cerchi con raggio compreso tra 1 e 20 (hint: In Pascal usare PI. Ma in C99/C11 M_PI non esiste. Essendo una estensione, usare: -std=gnu99 oppure -std=gnu11, oppure #define _USE_MATH_DEFINES seguito da #include <math.h>, oppure definirlo in proprio con #define M_PI 3.1415)
- In un tratto di strada vige il limite di velocità dei 120km/h. Realizzare un programma che, ricevute in input N velocità registrate, stampi quante auto hanno superato il limite di velocità.
- Realizzare un programma che richieda all'utente n interi e visualizzi il numero di volte in cui sono stati eventualmente immessi i valori 10, 100 e 1000. (hint: usare switch)
- Accettare in input N numeri (N >0). Al termine dell'inserimento segnalare quanti numeri sono positivi e quanti negativi (e quanti nulli). Visualizzare inoltre la somma dei numeri positivi e la somma dei numeri negativi
- Scrivere un programma che visualizzi il valore di tutte le prime n potenze di 2 con n richiesto all'utente e compreso tra 2 e 20.
- visualizzare i numeri pari compresi tra 1 e 100, in ordine inverso
- visualizzare tutti i numeri multipli di n compresi tra a e b; a, b, n vengono richiesti in input all'utente
- Scrivere un programma che dopo aver acquisito due numeri interi visualizzi il seguente menu:
SCELTA OPERAZIONI
1) Addizione
2) Sottrazione
3) Moltiplicazione
4) Divisione
5) Esci
Scelta:_
Attenda l'immissione di un numero da parte dell'utente e visualizzi il risultato dell'operazione utilizzando i numeri dati. Se la scelta non è tra quelle proposte (1,2,3,4,5) deve essere visualizzata la scritta : "Opzione inesistente". Si utilizzi il costrutto switch-case.
- Scrivere un programma che visualizza la successione dei numeri interi, a partire da 1, finché l'utente non risponde negativamente alla domanda "Vuoi continuare?".
- Dati N numeri interi positivi e negativi trovare la somma dei valori assoluti
- Scrivere un programma che richiesto un numero intero visualizzi tutti i suoi divisori [a divide b solo se b modulo a = 0]
- Scrivere in programma che richiesto un numero intero stabilisca se questo è primo
- Scrivere in programma che richiesto un numero intero k calcoli la somma di tutti i multipli di 8 minori di k.
- Inserire in input una serie di numeri. Il programma termina quando la somma dei numeri inseriti è maggiore o uguale a 100 oppure quando è stato raggiunto il numero di tentativi stabiliti
- Visualizzare n termini, con n intero positivo fornito in ingresso, della successione di Fibonacci. Suggerimento: nella successione di Fibonacci i primi due termini sono 0 e 1, quelli successivi sono 1,2,3,5...: ogni termine si ricava addizionando i due precedenti
int fibonacci(int num){
if(num<=1)
return num;
else
return fibonacci(num-1)+fibonacci(num-2);
}
- Visualizzare i fattori di un numero intero positivo n fornito in ingresso
Suggerimento: x è un fattore di n se il resto della divisione intera tra n e x è uguale a zero. Ad esempio, i fattori di 10 sono 1, 2, 5, 10.
- Dati in input 10 numeri positivi, trovare il massimo e visualizzarlo
- Dati in input 10 numeri positivi, trovare il minimo e visualizzarlo
- Determinare il prodotto di due numeri interi utilizzando solamente le operazioni di addizione.
- Determinare il valore di x^y (x e y sono numeri interi) utilizzando moltiplicazioni successive.
- Determinare il quoziente e il resto di due numeri interi utilizzando solamente le operazioni di addizione e di sottrazione
- In una classe IV vi sono ragazzi di varie età. Realizzare un programma che, ricevuti in input le età degli studenti, calcoli e stampi quanti sono gli studenti ancora minorenni.
- Convertire un numero binario fornito in ingresso (e di cui è fornita la lunghezza n) nel decimale corrispondente.
- Convertire un numero binario fornito in ingresso (e di cui non è fornita la lunghezza n) nel decimale corrispondente.
-
- Ricorsione Pascal C
- Convertire un numero decimale fornito in ingresso nel binario corrispondente (senza l'uso di array o di stringhe).
- Calcolare il fattoriale di un numero n dato input. Il fattoriale di n è definito come il prodotto di tutti i numeri compresi tra 1 ed n.
- Calcolare il doppio fattoriale di un numero n dato input. Il doppio fattoriale di n è definito come il prodotto di tutti i numeri pari o dispari (con la medesima parità di n) compresi tra 1 ed n.
- Dati in input due numeri interi a e b, calcolare il prodotto a*b mediante ricorsione [hint: se y==0 allora PROD=0; altrimenti PROD=x*PROD(x, y-1)]
- Dati in input due numeri interi a e b, calcolare la potenza a^b mediante ricorsione [hint: se b==0(e a!=0) allora POT=1; altrimenti POT=a*POT(a, n-1)]
- Scrivere una funzione ricorsiva che calcoli la somma degli elementi di un array A[1..n] di n interi.
- Scrivere un algoritmo ricorsivo per il calcolo del minimo in un array A[1..n] di n interi positivi.
- Scrivere una funzione ricorsiva che, avendo in input un array di n interi di interi positivi, dia in output TRUE se 10 un elemento della lista, FALSE altrimenti [hint: se n==0 allora 10 non è nella lista; se n==1 controllo A[n] ; altrimnenti controllo una lista privata dell'elemento controllato ]
- Scrivere una funzione ricorsiva che, avendo in input un array di n interi di interi positivi, dia in output TRUE se tutti gli elementi sono maggiori di 10, FALSE altrimenti [hint: se n==0 allora 10 non è nella lista; se n==1 ... ; altrimenti controllo una lista privata dell'elemento controllato ]
- Scrivere una funzione ricorsiva POT(n) per il calcolo dei numeri F(n) definiti dalle seguenti relazioni: F(1)=2, F(n)=2F(n-1).
- Scrivere una funzione ricorsiva TIME(n) per il calcolo dei numeri T(n) definiti dalle seguenti relazioni: T(0)=0, T(1)=1, T(n)=2T(n-2)+5.
- Scrivere una funzione ricorsiva che, avendo in input un array di n interi non negativi, dia in output il numero degli
elementi positivi della lista.
- Scrivere una funzione ricorsiva TIME(n) per il calcolo dei numeri T(n) definiti dalle seguenti relazioni: T(0)=0; T(1)=1, T(n)=2T(n-2)+T(n-1).
- La torre di Hanoi
- Esercizi su liste semplicemente concatenate (inserimento, cancellazione, ricerca)
- Esercizi su liste doppiamente concatenate (inserimento, cancellazione, ricerca)
- Inversione di un numero intero
- Sviluppare una funzione ricorsiva per il calcolo dell'n-simo termine della successione di fibonacci (con n>=0), sapendo che il primo termine è 0, il secondo è 1, il terzo è ancora 1 (dato dalla somma del primo e del secondo termine) e, in generale, il termine i-esimo è dato dalla somma dei due termini precedenti nella successione
-
- Vettori Pascal C
- In un vettore sono caricati i nomi dei partecipanti a una gara in ordine di arrivo. Data la posizione di arrivo di un concorrente, visualizzarne il nome
- Un vettore contiene le età di un gruppo di persone. Si vogliono visualizzare le età delle persone maggiorenni e la loro posizione nel vettore(indice).
- In un vettore è contenuta la classifica di una gara podistica con i nomi dei concorrenti in ordine di arrivo. Dato il nome di un concorrente, stampare la sua posizione di classifica. se il nome non compare tra quelli caricati nel vettore, visualizzare una segnalazione di errore.
- Letti da input un certo numeri (N) di voti, memorizzarli in un vettore e quindi calcolarne la media aritmetica. Visualizzare infine il risultato.
- Contare il numero di volte in cui compare un valore x ricevuto in ingresso tra gli elementi di un vettore a di lunghezza n.
- Scrivere un programma che inizializzi e quindi visualizzi un vettore con i valori alternati 0,1,0,1,0,1,...
- Calcolare la somma degli elementi pari e quella degli elementi dispari presenti in un vettore di interi a di lunghezza n.
- Dato un vettore contenente i premi pagati presso un'agenzia assicurativa, stampare l'elenco dei premi compresi tra due valori prefissati.
- Scrivere un programma che permetta di caricare in a e b, due array monodimensionali della stessa lunghezza, n valori interi, calcoli la somma degli elementi con lo stesso indice, la memorizzi nell'array c e visualizzi a,b,c.
- Scrivere un programma, che rischiesti all'utente i valori di due vettori v1 e v2, entrambi di lunghezza 10, determini se i due vettori sono uguali. Due vettori v1 e v2 sono uguali solo se v1[i]=v2[I] per ogni i compreso tra 1 e 10.
- Scrivere un programma che, letti due vettori numerici, ne inizializzi un terzo assegnando a ogni suo elemento il massimo tra i corrispondenti elementi nei primi due vettori. Visualizzare infine i tre vettori.
- Scrivere un programma che, letto un vettore di lettere maiuscole, visualizzi il numero complessivo delle vocali e delle consonanti del vettore.
- Scrivere un programma che, letto un vettore di numeri interi, determini il numero degli zeri, degli elementi positivi, degli elementi negativi e la somma complessiva di quest'ultimi.
- Verificare se gli elementi di un vettore di interi sono ordinati in ordine crescente.
- Dopo aver caricato un vettore di interi a di lunghezza n, copiare in un vettori di interi b di lunghezza n in testa gli elementi pari di a e in coda gli elementi dispari di a.
- Dopo aver caricato due vettori a e b rispettivamente di lunghezza n e di lunghezza m, copiare in un vettore c l'intersezione degli elementi a e b.
- Dopo aver caricato due vettori a e b rispettivamente di lunghezza n e di lunghezza m, copiare in un vettore c la differenza degli elementi a e b.
- Matrici Pascal C
- Calcolare la somma degli elementi appartententi alla cornice più esterna di una matrice di interi a di ordine (r x c)
- Verificare se la somma degli elementi sulla diagonale principale è uguale alla somma degli elementi sulla diagonale secondaria in una matrice quadrata di interi a di ordine (r X r)
- Calcolare le somme degli elementi delle righe di una matrice di interi a di ordine (r X c), scrivendole in un vettore colonna di interi b di lunghezza n
- Calcolare le somme degli elementi delle colonne di una matrice di interi a di ordine (r X c), scrivendole in un vettore riga di interi b di lunghezza n
- Caricare il triangolo di Tartaglia in una matrice quadrata a di ordine (r x r) Sugg: il triangolo di Tartaglia ha la seguente configurazione nel caso r=5:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
In generale, ogni elemento è la somma dei due che lo sovrastano.
- Ripetere l'esercizio precedente, ma compattando la matrice sul lato NW (in alto a sinistra)
- Data una matrice di dati numerici, calcolare e visualizzare: 1) la media degli elementi di ciascuna riga; 2) la media degli elementi di ciascuna colonna; 3) la media di tutti gli elementi
- In una matrice 6 righe e 6 colonne è memorizzato l'orario scolasticoi di una classe. Fornire un programma che permetta di stampare:
1) tutte le materie di un giorno fornito in input
2) in quali giorni e in quali ore c'è la materia richiesta in input
3) quale materia c'è il giorno G dell'ora O (G e O sono forniti in input).
I giorni della settimana sono espressi tramite caratteri.
- Calcolare la somma degli elementi al di sotto della diagonale principale di una matrice quadrata di interi a di ordine (r X r) [utilizzando il se]
- Calcolare la somma degli elementi al di sotto della diagonale principale di una matrice quadrata di interi a di ordine (r X r) [senza utilizzare il se]
- Scrivere un programma che, letta una matrice di dati numerici, individui la colonna la cui somma degli elementi è massima.
- Data una matrice, stampare:
1) il valore massimo e il valore minimo fra gli elementi di ciascuna riga;
2) il valore massimo e il valore minimo fra gli elementi di ciascuna colonna;
3) il valore massimo e il valore minimo fra tutti gli elementi
- In una matrice sono memorizzati i giorni d'assenza per ciascun alunno della classe e per ogni giorno del mese. In un array sono invece caricati i nomi degli alunni della classe. Scrivere un programma che carichi la matrice e calcoli:
1) il totale delle assenze per ciascun alunno;
2) il totale delle assenze per l'alunno il cui nominativo è fornito da input, segnalare in modo opportuno se il nominativo è errato;
3) il nome dell'alunno che ha il maggior numero di assenze nel mese;
4) il nome dell'alunno che ha il minor numero di assenze nel mese.
- Sia dato un vettore contenente i nomi di diversi tipi di volatili e una matrice contenente, per ogni tipo di volatile, il numero di uova deposte da ognuna delle 10 femmine che sono state messe sotto osservazione.
Scrivere un programma che, dopo aver caricato i dati, presenti un menù con opzioni corrispondenti alle seguenti richieste:
1) stampa del tipo di volatile che ha deposto il minimo numero di uova sulle dieci covate;
2) stampa di quanti volatili hanno deposto un numero medio di uova che risulta maggiore e minore alla media delle uova deposte da tutti i volatili presi in osservazione.
- Verificare se una matrice quadrata di ordine (r X r) è diagonalmente dominante. Sugg: controllare se la somma dei valori assoluti degli elementi su ciascuna riga, escluso l'elemento sulla diagonale principale, è minore del valore assoluto dell'elemento corrispondente sulla diagonale principale.
- Verificare se una matrice quadrata a di ordine (r X r) è simmetrica (speculare). Sugg: controllare se l'elemento in posizione (i , j) della matrice è uguale all'elemento in posizione speculare (j, i).
- Verificare se gli elementi di una matrice di interi a di ordine (r X c) sono ordinati in ordine crescente.
- Data una matrice riportante le relazioni tra alberghi e servizi offerti (con una X all'incrocio tra la riga dell'albergo e la colonna del servizio se l'albergo offre tale servizio) e due vettori con le descrizioni degli alberghi e dei servizi, scrivere un programma che, tramite menu, permetta di stampare:
1) l'elenco di tutti gli alberghi che offrono n determinato servizio inserito da input (controllare l'esistenza del servizio);
2) l'elenco di tutti i servizi e per ognuno di essi l'elenco degli alberghi che lo offrono;
3) l'elenco di tutti i servizi offerti da un albergo richiesto da input (controllare l'esistenza dell'albergo)
4) il mome dell'albergo che offre il maggior numero di servizi
- Per gestire le camere di un albergo si hanno a disposizione gli array CAMERE dove sono contenuti i numeri identificativi delle camere, POSTI dove è contenuto il numero di posti (da 1 a 4) di ciascuna camera, e LIBERO indica, per ogni camera, se è libera (=0) oppure occupata (=1).
Realizzare un'applicazione in grado di:
1) visualizzare la capienza totale dell'albergo (quante persone in tutto può ospitare) e quante persone sono ospitate nell'albergo;
2) visualizzare se la camera, il cui identificativo è inserito da input, è libera o occupata. Se la camera non esiste emettere la segnalazione di errore;
3) visualizzare il numero di camere da 1, da 2, da 3 e da 4 posti letto (sugg: utilizzare l'array NUMCAMERE di 4 componenti);
4) gestire una prenotazione: inserito in input il nuemro X di persone, cercare, se esiste, una camera libera che possa ospitare tutte le persone. Se esiste portare a 1 il relativo elemento dell'array LIBERO per indicare che ora la camera è occupata, altrimenti dare una segnalazione di avviso
- I dati relativi al campionato di calcio sono memorizzati in tre vettori paralelli:
- SQUADRE contenente il nome della squadra
- SERIE contenente 'A' o 'B'
- PUNTI contenente il punteggio ottenuto nel campionato
Scrivere un programma con le seguenti richieste:
a) Stampare il tabulato contenente l'elenco delle squadre di serie A nella forma:
ELENCO SQUADRE DI A
SQUADRA PUNTI
....... ......
....... ......
b) Dato in input il nome di una squadra, stampare la serie e i punti realizzati. Se la squadra non esiste stampare una segnalazione di errore.
c) Costruire e stampare un altro vettore CLASSIF contenente solo le squadre di serie B.
d) Cercare e stampare il nome della squadra campione di serie A
- Una gara di sci è disputata in due manche e al termine delal seconda si sommano i tempi per determinare l'atleta che ha vinto al gara.
I vettori TEMPI1 e TEMPI2 contengono i tempi di gara di ciscuna delle due manches, mentre il vettore ATLETI contiene il nome delgi atleti.
Prevedere un'applicazione che permetta di:
1) visualizzare la classifica finale (piazzamento, nome, tempo totale) in ordine decrescente di tempo
2) dato n input il nome di un atleta visualizzare i tempi delle due manches, il tempo totale e il suo piazzamento. Emettere opportuna segnalazione di errore se il nome dell'atleta non esiste nell'array
3) prevedere la segnalazione del controllo antidoping nella seconda manches per 10 atleti.
Con una funzione random è determinata la posizione dell'atleta che deve essere controllato.Poi si richiede da input il risultato dell'analisi che può essere grave, lieve, negativo. Se è grave vengono aggiunti 5 secondi di penalità al tempo totale, se è lieve solamente 1.5. Aggiornare l'array TEMPI2.
-
- Stringhe Pascal C
- In un array di 100 elementi è memorizzata una frase. Ogni lettera della frase è contenuta in un elemento dell'array.
Ad esempio: IL MIO GATTO.
Scrivere un programmma che permetta di:
1-memorizzare la frase nell'array
2-stampare la frase al contrario come nel seguente esempio:
OTTAG OIM LI
3-stampare il numero di parole memorizzate nell'array (le parole sono separate dal carattere spazio);
4-stampare quante volte compare ciascuna vocale e quale vocale compare con frequenza maggiore.
- Scrivere un programma che stampi a video il numero di caratteri che costituiscono la stringa ricevuta in ingresso.
- Scrivere un programma che accetti in ingresso una stringa e ne stampi la versone maiuscola
- Scrivere un programma che conti il numero di vocali minuscole e maiuscole contenute in una stringa in ingresso.
- Inversione di un numero intero
int intrev2r(int number, int acc) {
if (number==0)
return acc;
else
return intrev2r(number/10, acc*10+number%10);
}
int intrev2(int number) {
return intrev2r(number, 0);
}
- Scrivere un programma che inverta una stringa ricevuta in ingresso, usando una stringa di appoggio
char *strrev2(const char * str, char * const strrev) {
strcpy(strrev, str);
for (int i=strlen(str)-1, j=0; i>=0; i--, j++)
strrev[j] = str[i];
return strrev;
}
- Invertire il contenuto di una stringa s, ricevuta in ingresso, su se stessa, senza usare stringhe di appoggio
char *strrev(char *str) {
if (! str || ! *str)
return str;
char *p1, *p2;
for (p1 = str, p2 = str+strlen(str)-1; p2 > p1; ++p1, --p2) {
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
return str;
}
void strreverse(char str[], int index, int size) {
char temp = str[index];
str[index] = str[size-index];
str[size-index] = temp;
if (index == size/2)
return;
return strreverse(str, index+1, size);
}
char* strrev(char* str) {
if (! str || ! *str)
return str;
return strreverse(str, 0, strlen(str)-1);
}
- Scrivere un programma per sommare le cifre che compongono una stringa di sole cifre numeriche in ingresso. Se ad esempio la stringa in ingresso fosse "125" allora si dovrà visualizzare 8.
- Raddoppiare i caratteri corrispondenti alle vocali che compaiono in una stringa s ricevuta in ingresso. Sugg: le vocali dovranno essere raddoppiate direttamente in s in modo da ottenere, partendo ad esempio da "uomo", la stringa "uuoomoo".
- Cancellare i caratteri corrispondenti alle vocali che compaiono in una stringa s ricevuta in ingresso.
- La codifica crittografica di Cesare consiste nel sostituire ogni carattere con quello che si trova nella k-esima posizione successiva dell'alfabeto. Il numero k rappresenta la chiave (0 < k < 26).
Per esempio, con k = 2 : 'a' --> 'c', 'e' --> 'g', 'z' --> 'b'.
Per decriptare, basta sostituire ogni carattere con quello che si trova nella k-esima posizione precedente dell´alfabeto.
Scrivere un programma che:
* Accetti in ingresso una stringa (composta da soli caratteri minuscoli e priva di spazi) e una chiave
* Scriva la versione crittografata della stringa
* Decripti il risultato e visualizzi la stringa originale
- Realizzare un programma in C che, richiesta in input una frase, determini le occorrenze di ciascuna lettera presente.
- Scrivere un metodo che letta in input una stringa verifichi se è palindroma. Per palindroma si intende una stringa che può essere letta sia da sinistra verso destra che da destra verso sinistra, Ad esempio ada, anna, radar, ingegni, ossesso, ecc.
bool isPalindrome(char *input, int start, int end) {
if (start >= end)
return true;
if (input[start] != input[end])
return false;
else
return isPalindrome(input, start+1, end-1);
}
- In un vettore è contenuta la classifica di una gara podistica con i nomi dei concorrenti in ordine di arrivo. Dato il nome di un concorrente, stampare la sua posizione di classifica. se il nome non compare tra quelli caricati nel vettore, visualizzare una segnalazione di errore.
- I dati relativi al campionato di calcio sono memorizzati in tre vettori paralelli:
- SQUADRE contenente il nome della squadra
- SERIE contenente 'A' o 'B'
- PUNTI contenente il punteggio ottenuto nel campionato
Scrivere un programma con le seguenti richieste:
a) Stampare il tabulato contenente l'elenco delle squadre di serie A nella forma:
ELENCO SQUADRE DI A
SQUADRA PUNTI
....... ......
....... ......
b) Dato in input il nome di una squadra, stampare la serie e i punti realizzati. Se la squadra non esiste stampare una segnalazione di errore.
c) Costruire e stampare un altro vettore CLASSIF contenente solo le squadre di serie B.
d) Cercare e stampare il nome della squadra campione di serie A
-
-
-
-
-
fonte1
calcolo mediana con ordinamento
int mediana(int array[], int n) { / n elementi, da 0 a n-1
qsort(array, n);
if (n%2!=0) //se valore dispari
return array[(n-1)/2];
else //se valore pari
return (array[n/2]+array[n/2-1])/2;
}
calcolo mediana in tempo lineare (senza ordinamento)
void partition(Item a[], int l, int r) {
int i = l-1, j = r;
Item v = a[r];
for (;;) {
while (less(a[++i], v)) ;
while (less(v, a[--j])) if (j==1) break;
if (i>=j) break;
exch(a[i], a[j]);
}
exch(a[i], a[r]);
return i;
}
void select(Item a[], int l, int r, int k) { // ricorsivo
if (r>l) {
int i = partition(a, l, r);
if (i>k) select(a, l, i-1, k);
if (i<k) select(a, i+1, r, k);
}
}
void select(Item a[], int l, int r, int k) { // iterativo
while (r>l) {
int i = partition(a, l, r);
if (i>=k) r = i-1;
if (i<=k) l = i+1;
}
}