/* Programma 68cppDisequazioneII Riontino Raffaele 3AS INF ITIS Ettore Molinari - Milano - 15 - 03 - '10 programma che risolve una disequazione di secondo grado 16-3-'10 aggiunta del controllo se a < 0 ; */ #include #include #include #include #include #include using namespace std; HANDLE hConsole; void primariga(); float coefficiente(char coeff); int sceltasegno(); int controllonumeri(char provvisorio[]); void invertisegni(float &a, float &b, float &c, int &segno); void visualizzadisequazione(float a,float b,float c,int segno); void calcola(float a,float b,float c,int segno); void ultimariga(); main() { float a,b,c; char scelta; int segno; do{ hConsole = GetStdHandle(STD_OUTPUT_HANDLE); primariga(); a = coefficiente('a'); b = coefficiente('b'); c = coefficiente('c'); primariga(); segno = sceltasegno(); primariga(); if (a < 0) invertisegni(a,b,c,segno); visualizzadisequazione(a,b,c,segno); calcola(a,b,c,segno); cout << "\n\n\tVuoi effettuare un altro calcolo ? (s / n)"; scelta = getch(); scelta = tolower(scelta); }while(scelta == 's'); ultimariga(); }//chiusura main //funzione primariga void primariga() { system ("cls"); SetConsoleTextAttribute (hConsole, 3); // verdone cout << "\n\tProgramma 68cppDisequazioneII Riontino Raffaele 3 AS INF"; cout << "\n\n\tI.T.I.S. Ettore Molinari - Milano - 14 - 3 - '10\n\n"; SetConsoleTextAttribute (hConsole, 4); //rosso cout << "\n\tProgramma che risolve una disequazione di II grado\n"; SetConsoleTextAttribute (hConsole, 6); //giallo cout << "\n\t\t modello : ax^2 + bx + c > 0\n\n"; }//chiusura primapagina //funzione coefficiente float coefficiente(char coeff) { char provvisorio[30]; float c,errore; SetConsoleTextAttribute (hConsole, 7); do{ cout << "\n\n\tInserisci il coefficiente " << coeff << " : "; cin.getline(provvisorio,50); errore=controllonumeri(provvisorio); c=atof(provvisorio); }while (errore); return c; }//chiusura coefficiente //funzione controllonumeri int controllonumeri(char provvisorio[]) { int flag,k,e; e=0; flag=1; k=0; while ((flag) && (k 57) { if (provvisorio[k] > 46 || provvisorio[k] < 45){ e=1; flag=0; cout << "\n\n\tCi sono caratteri non consentiti.Ripeti!!\n"; } } k++; } return e; }//chiusura controllonumeri //funzione sceltasegno int sceltasegno() { char segno[1]; int s=0,errore; SetConsoleTextAttribute (hConsole, 7); cout << "\n\tDigita il numero corrispondente al verso\n\n "; cout << "\n\t 1 : >\n\t 2 : <\n\t 3 : >=\n\t 4 : <=\n"; do{ errore=0; segno[0] = getch(); if (segno[0] < 49 || segno[0] > 52) { cout << "\tScelta non consentita.Ripeti!!\n"; errore = 1; } }while (errore); s = atoi(segno); return s; }//chiusura sceltasegno //funzione invertisegni void invertisegni(float &a, float &b, float &c, int &segno) { a = a * -1; b = b * -1; c = c * -1; if (segno == 1) segno = 2; else { if (segno == 2) segno = 1; else{ if (segno == 3) segno = 4; else { if (segno == 4) segno = 3; } } } }//chiusura invertisegni //funzione visualizzadisequazione void visualizzadisequazione(float a,float b,float c,int segno) { SetConsoleTextAttribute (hConsole, 7); cout << "\n\tDisequazione = " << a << "x^2 "; if (b > 0) cout << '+'; cout << b << "x "; if (c > 0) cout << '+'; cout << c << " "; if (segno == 1) cout << '>'; if (segno == 2) cout << '<'; if (segno == 3) {cout << '>' << '=';} if (segno == 4) {cout << '<' << '=';} cout << " 0\n"; }//chiusura visualizzadisequazione //funzione calcola void calcola(float a,float b,float c,int segno) { char vuoto=157; float dw,up,delta,quadrato,x1,x2; if (a == 0) { //controllare che il valore di a non sia zero cout << "\n\nLequazione non puo' effere svolta perche' il coefficiente a e' uguale a 0."; } else { quadrato=pow(b,2); delta=quadrato-4*a*c; if (delta < 0) { //controllare che il delta non sia zero if (segno == 1 || segno == 3)cout << "\n\n\tS = (-oo ; +oo)\n"; else cout << "\n\n\tS = " << vuoto << "\n"; } if (delta == 0) { if (segno == 3) cout << "\n\n\tS = (-oo ; +oo)\n"; if (segno == 2) cout << "\n\n\tS = " << vuoto << "\n"; if (segno == 1) { x1 = (b / (2 * a)) * -1; cout << "\n\n\tS = (-oo ; " << x1 << ") U ("<< x1 << " ; +oo)" << endl; } if (segno == 4) { x1 = (b / (2 * a)) * -1; cout << "\n\n\tRisultato : x = " << x1 << endl; } } if (delta > 0) { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); if (x1 > x2) { up = x1; dw = x2; } else { up = x2; dw = x1; } if (segno == 1) { cout << "\n\n\t x < " << dw << " V x > " << up; cout << "\n\n\tS = (-oo ; " << dw << ") U (" << up << " ; +oo)"; } if (segno == 2) { cout << "\n\n\t" << dw << " < x < " << up; cout << "\n\n\tS = (" << dw << " ; " << up << ")"; } if (segno == 3) { cout << "\n\n\t x <= " << dw << " V x >= " << up; cout << "\n\n\tS = (-oo ; " << dw << "] U [" << up << " ; +oo)"; } if (segno == 4) { cout << "\n\n\t" << dw << " <= x <= " << up; cout << "\n\n\tS = [" << dw << " ; " << up << "]"; } cout << endl; } } }//chiusura calcola //funzione ultimariga void ultimariga() { system("cls"); SetConsoleTextAttribute (hConsole, 9); cout << "\n\n\n\n\n\n\n\t\t\t PROGRAMMA TERMINATO"; Sleep(2500); }//chiusura ultima riga