media.c

Scrivere una funzione chiamata “menu” che cancella lo schermo e visualizza il seguente menu:
Programma media
1-Inserisci un valore
2-Visualizza il totale
3-Visualizza la media
0-Esci
la funzione restituisce una delle scelte fatte dall’utente.

Creare le due variabili globali
float totale;
int n;

Il programma serve per calcolare la media di un certo numero di valori inseriti, che vanno ad accumularsi nella variabile totale e che vengono conteggiati nella variabile n.
Quando l’utente seleziona i valori da 1 a 3 mediante uno switch vengono chiamate le procedure “inserisci”, “visTotale”, “visMedia” che eseguono le operazioni richieste.

#include <stdio.h>

float totale;
int n;

int menu() {
	int scelta;

	system("CLS");
	printf("======================\n");
	printf("Programma media       \n");
	printf("----------------------\n");
	printf("1-Inserisci un valore \n");
	printf("2-Visualizza il totale\n");
	printf("3-Visualizza la media \n");
	printf("0-Esci                \n");
	printf("======================\n");
	printf("Scegli? ");
	scanf("%d", &scelta);
	printf("\n");

	return scelta;
}

void inserisci() {
	float val;
	printf("Inserisci numero: ");
	scanf("%f", &val);
	totale += val;
	n++;
}

void visTotale() {
	printf("Totale: %f\n", totale);
}

void visMedia() {
	printf("Media: %f\n", totale / n);
}

void pausa() {
	printf("Premi un tasto per continuare");
	getch();
}

int main() {
	int op;

	do {
		op = menu();
		switch (op) {
			case 0:
				printf("Programma terminato.\n");
				break;
			case 1:
				inserisci();
				pausa();
				break;
			case 2:
				visTotale();
				pausa();
				break;
			case 3:
				visMedia();
				pausa();
				break;
			default:
				printf("Valore non ammesso.\n");
				pausa();
		}
	} while (op != 0);

	return 0;
}

sconto.c

#include <stdio.h>

void calcoloSconto(float prezzoUnitario, int quant, int *sconto, float *totale) {
	switch (quant) {
		case 1:
		case 2:
			*sconto = 0;
			break;
		case 3:
		case 4:
		case 5:
			*sconto = 10;
			break;
		default:
			*sconto = 15;
			break;
	}
	*totale = prezzoUnitario * quant * (1.0 - *sconto / 100.0);
}

int main() {
	float pU, tot;
	int nProd, sc;
	
	printf("Supermercato\n");
	printf("Inserisci il prezzo unitario: "); scanf("%f", &pU);
	printf("Inserisci il numero di pezzi: "); scanf("%d", &nProd);
	
	calcoloSconto(pU, nProd, &sc, &tot);
	
	printf("Hai acquistato %d prodotti\n", nProd);
	printf("e hai diritto ad uno sconto del %d%%\n", sc);
	printf("Il totale da pagare e' %f\n", tot);
	
	return 0;
}

quadrato.c

#include <stdio.h>

void quadrato(float lato, float *area, float *perimetro) {
	*area = lato * lato;
	*perimetro = 4.0 * lato;
}

int main() {
	float l, p, a;
	
	printf("Quadrato\n");
	
	printf("Lato? ");
	scanf("%f", &l);
	
	quadrato(l, &a, &p);
	
	printf("Area = %f\n", a);
	printf("Perimetro = %f\n", p);
	
	return 0;
}

elezioni.c

#include <stdio.h>

void istogramma(int n) {
	int i;
	
	for (i=0; i<n; i++)
		printf("Û");
	printf(" %d\n", n);
}

int main() {
	int nCalzia, nArnaudo, nBorsi, nGasco;
	
	printf("Preferenze elezioni rappresentanti di classe\n");
	printf("Voti Arnaudo: "); scanf("%d", &nArnaudo);
	printf("Voti   Borsi: "); scanf("%d", &nBorsi);
	printf("Voti  Calzia: "); scanf("%d", &nCalzia);
	printf("Voti   Gasco: "); scanf("%d", &nGasco);
	printf("\n");

	printf("\nArnaudo "); istogramma(nArnaudo);
	printf("\n  Borsi "); istogramma(nBorsi);
	printf("\n Calzia "); istogramma(nCalzia);
	printf("\n  Gasco "); istogramma(nGasco);
	
	return 0;
}

Output:

Preferenze elezioni rappresentanti di classe
Voti Arnaudo: 4
Voti   Borsi: 2
Voti  Calzia: 12
Voti   Gasco: 9


Arnaudo ████ 4

  Borsi ██ 2

 Calzia ████████████ 12

  Gasco █████████ 9

Struttura del sito e delle pagine JSP

index.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Gianfranco Oddenino</title>
        <link rel="stylesheet" type="text/css" href="stile.css">
    </head>
    <body>
        <%@ include file="WEB-INF/jspf/header.jspf" %>
        <%@ include file="WEB-INF/jspf/menu.jspf" %>
        <main>
            <h2>Benvenuti!</h2>
            <p>Ciao a tutti; siete nella pagina iniziale del mio sito.</p>
        </main>
        <%@ include file="WEB-INF/jspf/footer.jspf" %>
    </body>
</html>

header.jspf

<%@ page pageEncoding="UTF-8" %>
<header>
    <h1>Gianfranco Oddenino</h1>
</header>

menu.jspf

<%@ page pageEncoding="UTF-8" %>
<nav>
    <ul>
        <li><a href="index.jsp">Home</a></li>
        <li><a href="informazioni.jsp">Informazioni</a></li>
        <li><a href="biblioteca.jsp">Biblioteca</a></li>
    </ul>
</nav>

footer.jspf

<%@ page pageEncoding="UTF-8" %>
<footer>
    <address>Liceo Scientifico e Classico Statale "Giuseppe Peano - Silvio Pellico" - Via Monte Zovetto, 8 - 12100 Cuneo</address>
</footer>

N.B. I file jspf devono essere memorizzati nella cartella WEB-INF/jspf/

stile.css

body {
    border: none;
    background-color: white;
    background: linear-gradient(to right, navy, white);
    margin: 0;
    padding: 0;
    font-family: Verdana, Arial, sans-serif;
}
header {
    border: none;
    margin: 1%;
    padding: 1%;
    text-shadow: 1px 1px 2px black, 0 0 1em blue, 0 0 0.2em darkblue;
    color: white;
}
nav {
    border: none;
    border-radius: 10px;
    background-color: rgba(0, 255, 255, 0.9);
    margin: 1%;
    padding: 1%;
}
main {
    border: none;
    border-radius: 10px;
    background-color: rgba(255, 255, 255, 0.9);
    margin: 0 1% 1% 1%;
    padding: 1%;
}
footer {
    border: none;
    border-radius: 10px;
    background-color: rgba(0, 255, 255, 0.9);
    margin: 1%;
    padding: 1%;
}
nav ul { 
    margin: 0;
    padding: 0;
    list-style-type: none;
}
nav li {
    display: inline;
}
nav li a {
    border-radius: 10px;
    padding: 0.5%;
    font-weight: bold;
    text-decoration: none;
}
nav li a:hover {
    background-color: navy;
    color: white;
}

N.B. Eventuali immagini devono essere memorizzate nella cartella images

Progetto completo:  OddeninoGianfranco (NetBeans HTML5).zip

Equazioni di secondo grado

#include <stdio.h>
#include <math.h>

/* calcolo del delta */
double delta(double a, double b, double c) {
	return b * b - 4.0 * a * c;
}

/* calcolo della prima soluzione */
double sol1(double a, double b, double c) {
	return (-b - sqrt(delta(a,b,c)))/(2.0 * a);
}

/* calcolo della seconda soluzione */
double sol2(double a, double b, double c) {
	return (-b + sqrt(delta(a,b,c)))/(2.0 * a);
}

/* programma principale */
int main() {
	double aVal, bVal, cVal;
	
	printf("Equazioni di secondo grado\n");
	printf("a? "); scanf("%lf", &aVal);
	printf("b? "); scanf("%lf", &bVal);
	printf("c? "); scanf("%lf", &cVal);
	
	if (delta(aVal,bVal,cVal)<0.0)
		printf("Non ammette soluzioni reali\n");
	else {
		printf("x1 = %lf\n", sol1(aVal,bVal,cVal));
		printf("x2 = %lf\n", sol2(aVal,bVal,cVal));
	}
	
	return 0;
}

Temperature settimanali (pagina HTML e JSP)

Progetto NetBeans: FreeLineChart.zip

Il progetto contiene sia la pagina index.html sia la pagina index.jsp
All’avvio parte la pagina index.html; per partire con la pagina index.jsp, digitarla sulla barra degli indirizzi o eliminare index.html. La servlet grafico è stata modificata aggiungendo un try-catch per permettere la visualizzazione del grafico vuoto anche in presenza di errori dei parametri o in mancanza dei valori.

Es 18 su JSP

<%-- 
    Document   : index
    Created on : 12-dic-2017, 21.55.42
    Author     : GfO
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Quadrati da n1 a n2</title>
    </head>
    <body>
        <h1>Quadrati da n1 a n2</h1>
        <form action="index.jsp" method="get">
            n1: <input name="n1" type="text">
            n2: <input name="n2" type="text">
            <input type="submit" value="Invia">
        </form>
        <%
            String n1str = request.getParameter("n1");
            String n2str = request.getParameter("n2");

            if (n1str != null && n2str != null)
                try {
                    int n1 = Integer.parseInt(n1str);
                    int n2 = Integer.parseInt(n2str);
        %>
        <table>
            <% for (int i = n1; i <= n2; i++) { %>
            <tr><td> <%=i%> </td><td> <%=i * i%> </td></tr>
            <% } // end for %>
        </table>
        <% } catch (Exception e) { %>
        <p>Devi inserire due numeri validi</p>
        <% } // end try-catch %>
    </body>
</html>