Questo tra i primi programmini che ho scritto come esercizi è certamente uno dei più complessi. Non per la sue regole di sintassi (che sono più o meno ripetitive) tanto per l’algoritmo ingengato per realizzarlo. Tecnicamente come programma non ha una grande utilità, ma vi presento la sua sorgente a scopo educativo:
#include <stdio.h> void azzera(); void somma(); void sottrai(); void moltiplica(); void dividi(); float n=0; //variabile del numero da inserire float x=0; //variabile del numero base char e; //variabile per il controllo della continuazione o uscita de programma int c; //variabile per il controllo della funzione da scegliere int main() { printf("Manihack Calculator 3.0 - Coded by Shin Darth nn"); printf("Inserisci un numero: "); scanf("%f",&x); do { system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Scrivi: nn"); printf("[1] per azzerare n"); printf("[2] per sommare n"); printf("[3] per sottrarre n"); printf("[4] per moltiplicare n"); printf("[5] per dividere n"); printf("[6] per uscire nn"); printf("Numero della funzione scelta: "); scanf("%d",&c); switch (c) { case 1: azzera(); break; case 2: somma(); break; case 3: sottrai(); break; case 4: moltiplica(); break; case 5: dividi(); break; case 6: break; default: printf("nErrore: Hai scelto un numero non valido. nn"); break; } printf("nRitornare al menu' principale e continuare? SI=y EXIT=n n"); scanf("%s",&e); } while (e=='y'); } void azzera() { system("cls"); printf("Valore del numero attuale: %f nn",x); x=0; system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Valore azzerato. nn"); } void somma() { char b; do { system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Inserisci un numero per sommarlo al valore corrente: "); scanf("%f",&n); x+=n; //assegna a x la somma tra x e n system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Vuoi continuare a sommare? SI=y MENU' PRINCIPALE=n n"); scanf("%s",&b); } while (b=='y'); } void sottrai() { char b; do { system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Inserisci un numero per sottrarlo al valore corrente: "); scanf("%f",&n); x-=n; //assegna a x la differenza tra x e n system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Vuoi continuare a sottrarre? SI=y MENU' PRINCIPALE=n n"); scanf("%s",&b); } while (b=='y'); } void moltiplica() { char b; do { system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Inerisci un numero per moltiplicarlo al valore corrente: "); scanf("%f",&n); x*=n; //assegna a x il prodotto tra x e n system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Vuoi continuare a moltiplicare? SI=y MENU' PRINCIPALE=n n"); scanf("%s",&b); } while (b=='y'); } void dividi() { char b; do { system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Inerisci un numero per dividerlo al valore corrente: "); scanf("%f",&n); x/=n; //assegna a x il risultato della divisione tra x e n system("cls"); printf("Valore del numero attuale: %f nn",x); printf("Vuoi continuare a dividere? SI=y MENU' PRINCIPALE=n n"); scanf("%s",&b); } while (b=='y'); //Linea vuota alla fine del file per evitare il warning di gcc }