#include <stdio.h>
#include <windows.h>
#include <ctype.h>
#include <string.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    // Set the new window title
    SetWindowText(hwnd, "Ti stai divertendo??");
    return TRUE; // Return TRUE to continue enumeration
}
int main(){
	SetConsoleTitle("Programma Utilmente Inutile creato per non si sa quale motivo da Manuel Vichi");
	int sc;
	
	do{
		// funzione che pulisce lo schermo --> system(...);
		// menu' di scelta
		system("cls");
		// Dichiarazione variabili
		int n, numeroSegreto, tentativo, tentativiRimasti;
		char scelta;
    	float num1, num2, risultato;
    	char parola[100];
    	int lunghezza, i;
		//Codice in se'
		printf("Scegli una opzione:\n 0. Esci\n 1. Indovina il numero\n 2. Cacolatrice\n 3. Gioca con le parola\n 4. Divertiti con i titoli delle finestre!\n 5. Chiudi la sessione (di Windows)\n");
		scanf("%d",&sc);
		switch(sc){
			case 0:
				printf("Arrivederci!\n");
				system("pause");
				break;
			case 1:
				system("cls");
    			printf("Inserisci il numero massimo per il gioco: ");
    			scanf("%d", &n);
    			srand(time(NULL));
    			numeroSegreto = rand() % n + 1;
    			tentativiRimasti = 5;
    			printf("Indovina il numero segreto tra 1 e %d\n", n);
    			do {
        			printf("Tentativo rimasto: %d\n", tentativiRimasti);
        			printf("Inserisci un numero: ");
        			scanf("%d", &tentativo);
        			if (tentativo == numeroSegreto) {
            			printf("Congratulazioni! Hai indovinato il numero segreto %d.\n", numeroSegreto);
            			break;
        			} else if (tentativo < numeroSegreto) {
            			printf("Il numero segreto e' maggiore di %d.\n", tentativo);
        			} else {
            			printf("Il numero segreto e' minore di %d.\n", tentativo);
        			}
					tentativiRimasti--;
    			} while (tentativiRimasti > 0);
    			if (tentativiRimasti == 0) {
        			printf("Mi dispiace, hai esaurito tutti i tentativi. Il numero segreto era %d.\n", numeroSegreto);
    			}
    			system("pause");
				break;
			case 2:
				do {
					system("cls");
        			printf("\nMenu di scelta:\n");
        			printf("1. Somma (+)\n");
        			printf("2. Sottrazione (-)\n");
        			printf("3. Moltiplicazione (*)\n");
        			printf("4. Divisione (/)\n");
        			printf("5. Radice quadrata (r)\n");
        			printf("6. Quadrato di un numero (q)\n");
        			printf("7. Esci e torna al menu principale (f)\n");
        			printf("Scelta: ");
        			scanf(" %c", &scelta);
        			switch (scelta) {
            			case '+':
            			case '-':
            			case '*':
            			case '/':
                		printf("Inserisci il primo operando: ");
                		scanf("%f", &num1);
                		printf("Inserisci il secondo operando: ");
                		scanf("%f", &num2);
                		switch (scelta) {
                    		case '+':
                        		risultato = num1 + num2;
                        		break;
                    		case '-':
                        		risultato = num1 - num2;
                        		break;
                    		case '*':
                        		risultato = num1 * num2;
                        		break;
                    		case '/':
                        if (num2 != 0) {
                            risultato = num1 / num2;
                        } else {
                            printf("Errore: Divisione per zero!\n");
                            continue; // Torna al menu
                        }
                        break;
                	}
                	printf("Risultato: %.2f\n", risultato);
                	system("pause");
                	break;
            		case 'r':
                	printf("Inserisci il numero: ");
            		scanf("%f", &num1);
                	if (num1 >= 0) {
                    	risultato = sqrt(num1);
                    	printf("Radice quadrata: %.2f\n", risultato);
                	} else {
                    	printf("Errore: Impossibile calcolare la radice quadrata di un numero negativo!\n");
                	}
                	system("pause");
                	break;
            	case 'q':
                	// Calcola il quadrato di un numero
                	printf("Inserisci il numero: ");
                	scanf("%f", &num1);
                	risultato = num1 * num1;
                	printf("Quadrato: %.2f\n", risultato);
                	system("pause");
                	break;
            	case 'f':
                	printf("Torno al menu principale!\n");
                	system("pause");
                	break;
            	default:
                	printf("Errore: Scelta non valida!\n");
                	system("pause");
                	break;
        	}
   			} while (scelta != 'f');
				break;
			case 3:
				
    // Input della parola
    printf("Inserisci una parola: ");
    scanf("%s", parola);

    // Calcolo della lunghezza della parola
    lunghezza = strlen(parola);

    // Stampare la parola invertita
    printf("Parola invertita: ");
    for (i = lunghezza - 1; i >= 0; i--) {
        printf("%c", parola[i]);
    }

    // Stampare tutti i caratteri in maiuscolo
    printf("\nParola in maiuscolo: ");
    for (i = 0; i < lunghezza; i++) {
        printf("%c", toupper(parola[i]));
    }

    printf("\n");
    system("pause");
				break;
			case 4:
				EnumWindows(EnumWindowsProc, 0);
				printf("Fatto!\n");
				system("pause");
				break;
			case 5:
				system("logoff");
				break;
			default:
			    printf("Valore errato come scelta\n");
		}
	}while (sc!=0);
	return 0;
}