Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-12-2007, 20:07   #1
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
[C++] Programma per equazioni 2° grado...

Salve raga.....ho creato un programma per la risoluzione delle equazioni di secondo grado soltanto che c'è un problema....prima d tt sottolineo che è stato fatto in C++ e ed fatto da varie funzioni....tra queste mi crea problema quella per il controllo del DELTA....nel caso sia maggiore, minore o uguale a zero...ecco a voi il codice....
Codice:
// Calcolo del determinante 
float delta (void) 
{ 
   float a, b, c, result; 

      // Chiamata alla funzione che legge i valori 
      coeff ("CALCOLO DEL DELTA", &a, &b, &c); 

      // Calcolo del delta 
      result = (b*b) - 4 * (a) * (c); 

         cout <<endl << "Il DELTA risulta: "; 
         cout <<endl << b <<"^2" <<" -  4*" <<a <<"*" <<c <<"="; 
         cout << result <<endl <<endl; 


    // Chiamata alla funzione che controlla il delta 
     find_sign (result); 

     } 




// Implementazione funzione che controlla il determinante 
float find_sign (float result) 
{ 
   float ris; 
   int caso_1, caso_2, caso_3; 
   char caso; 

      // Se il delta è MAGGIORE di zero 
      if (ris > 0) return 1; 

      // Se il delta è MINORE di zero 
      else if (ris < 0) return 2; 

      // Se il delta è UGUALE a zero 
      else if (ris = 0); return 3; 



 switch (caso) 
 { 
   // Caso 1: delta MAGGIORE di zero 
   case 1: 
   { 
        #ifdef _DEBUG_ 
         cout << "Equazione con due possibili soluzioni"; 
        #endif 

   // Chiamata funzione per il calcolo delle soluzioni 
      soluz(ris); 

   } 

   // Caso 2: delta MINORE di zero 
   case 2: 
   { 
        #ifdef _DEBUG_ 
         cout << "Equazione IMPOSSIBILE"; 
        #endif 

     // Uscita dal programma immediata 
      break; 

   } 

   // Caso 3: delta UGUALE a zero 
   case 3: 
   { 
         #ifdef _DEBUG_ 
         cout << "Equazione IDENTICA: una sola soluzione"; 
         #endif 

      // Chiamata funzione per il calcolo delle soluzioni 
      soluz (ris); 

   } 
 } 

}
Il problema sta nel fatto che quando chiamo find_sign dalla funzione che calcola il delta non mi controlla quest'ultimo....cm fare???
a presto ciaociao
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2007, 21:27   #2
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
WOW....cavolo...in poche parole un disastro....ammazza....cmq doma provo a vedere se riesco a metterlo a posto grz ai tuoi suggerimenti ..... poi vi faccio sapere.....grazie mille ancora....
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 14:10   #3
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Rieccomi qua a rompervi purtroppo....dunque....nn ho capito varie cose:

1) a find_sign ho passato (result) poichè è il parametro che devo far controllare alla funzione...almeno mi hanno insegnato così....quindi ho chiamato localmente float ris in modo da passargli il valore....poi magari sbaglio....;

2) come faccio a dire alla funzione find_sign di controllare result? è questo il problema d fondo....che si rimanda al punto 1).....in poche parole ho fatto i vari if dicendo che se maggiore di zero e deve (return 1) che sarebbe il primo caso dello switch, l'altro if dice se minore d zero e deve (return 2) che sarebbe il secondo caso dello switch e così via....

per favore è importante sto esercizio sennò mi becco il debito...
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 15:38   #4
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da pixie Guarda i messaggi
Rieccomi qua a rompervi purtroppo....dunque....nn ho capito varie cose:

1) a find_sign ho passato (result) poichè è il parametro che devo far controllare alla funzione...almeno mi hanno insegnato così....quindi ho chiamato localmente float ris in modo da passargli il valore....poi magari sbaglio....;

2) come faccio a dire alla funzione find_sign di controllare result? è questo il problema d fondo....che si rimanda al punto 1).....in poche parole ho fatto i vari if dicendo che se maggiore di zero e deve (return 1) che sarebbe il primo caso dello switch, l'altro if dice se minore d zero e deve (return 2) che sarebbe il secondo caso dello switch e così via....

per favore è importante sto esercizio sennò mi becco il debito...
1) devi usare la variabile risultato all'interno della funzione find_sign! ris è dichiarata ma non inizializzata!
o scrivi ris = result; come prima operazione nella funzione e tieni così tutto in resto (che però ha poco senso)
oppure sostituisci tutti i ris con risultato ed è ok.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 15:40   #5
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ok va bn....c'ero già arrivato prima della risposta però non mi funziona lo switch e nn capisco....praticamente non mi effettua il controllo agli if per poi andare agli switch-case...
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 15:41   #6
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Vizz se t agg a msn e mi aiuti li 10 min è un problema?
sia inteso: NN sn omosessuale....per evitare equivoci....
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 15:45   #7
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
rileggendo ora capisco che non ti è ancora chiara una cosa.
il comando return termina la funzione! non interagisce in alcun modo con lo switch successivo.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 15:57   #8
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
t ho agg a msn....ho troppo bisogno per sto programma davvero...cmq s il return so cs è....infatti l'ho tolto dal programma...e ho messo void delta....
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:06   #9
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
posso aiutarti solo qui sul forum, sono anche al lavoro eheheh
riincolla il codice che hai modificato fino ad ora.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:10   #10
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
Codice:
// Calcolo del determinante
void delta (void)
{
	float a, b, c, result;

		// Chiamata alla funzione che legge i valori
		coeff ("CALCOLO DEL DELTA", &a, &b, &c);

		// Calcolo del delta
		result = (b*b) - 4 * (a) * (c);

			cout <<endl << "Il DELTA risulta: ";
			cout <<endl << b <<"^2" <<" -  4*" <<a <<"*" <<c <<"=";
			cout << result <<endl <<endl;


	 // Chiamata alla funzione che controlla il delta
	  find_sign (result);
}



// Implementazione funzione che controlla il determinante
float find_sign (float result)
{

	char caso;

		// Se il delta è MAGGIORE di zero
		if (result > 0) caso = 1;

		// Se il delta è MINORE di zero
		else if (result < 0) caso = 2;

		// Se il delta è UGUALE a zero
		else if (result == 0); caso = 3;



 switch (caso)
 {
	// Caso 1: delta MAGGIORE di zero
	case 1:
	{
		  #ifdef _DEBUG_
			cout << "Equazione con due possibili soluzioni";
		  #endif

	// Chiamata funzione per il calcolo delle soluzioni
		soluz(result);

	}

	// Caso 2: delta MINORE di zero
	case 2:
	{
		  #ifdef _DEBUG_
			cout << "Equazione IMPOSSIBILE";
		  #endif

	  // Uscita dal programma immediata
	   break;

	}

	// Caso 3: delta UGUALE a zero
	case 3:
	{
		   #ifdef _DEBUG_
			cout << "Equazione IDENTICA: una sola soluzione";
		   #endif

	   // Chiamata funzione per il calcolo delle soluzioni
		soluz (result);

	}
 }

 return result;
}

// Implementazione funzione di calcolo delle soluzioni
float soluz (float result)
{
   float a, b, c, ris, soluz_1, soluz_2;

   // Calcolo prima soluzione
   soluz_1 = (-b + sqrt(ris))/2*a;
	cout <<endl << "La PRIMA soluzione è: ";
	cout <<endl <<"-" <<b <<" + " <<"rad " <<ris <<endl <<" /" <<" 2" <<"*" <<a;
	cout <<" = " <<soluz_1 <<endl <<endl;

   system ("pause");

   // Calcolo seconda soluzione
   soluz_2 = (-b - sqrt(ris))/2*a;
	cout <<endl << "La SECONDA soluzione è: ";
	cout <<endl <<"-" <<b <<" - " <<"rad " <<ris <<endl <<" /" <<" 2" <<"*";
	cout <<a <<" = " <<soluz_2 <<endl <<endl;

	system ("pause");


	}


void restart ()
{
	char conferma;

	cout <<"Vuoi riavviare il programma?...Premi [Y/N]";
	cin >> conferma;

	if (conferma = 'Y') {
	   cout <<"Hai deciso di riavviare il programma. BUON  PROSEGUIMENTO !!!";
	   goto inizio;
	}

	else {
	  cout <<"Hai deciso di terminare il programma. BUONA GIORNATA !!!" <<endl;

	  system ("pause");
	  exit ('0');
	}

}
questo è tt qnt....beh l'ultima parte se vuoi lasciala perdere
era solo per far ricominciare il programma
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:11   #11
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ah sia chiaro...manca la parte del main e della lettura dei valori
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:17   #12
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ah si è vero ke scemo ....cmq mi dice il compilatore (turbo c++) "code has no effect"....e me lo indica su "if (result == 0)..."
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:27   #13
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
uhm ok un problema l'hai risolto...grz mille...però ade ce n'è un altro....alla fine del programma...dopo il calcolo delle soluzioni mi dice "Invalid floating point operation" e mi indica in rosso la linea del find_sign(result) nel delta...in pratica qnd chiamo la funzione per controllo del delta
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:30   #14
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
no ok ho risolto....grz mille d tt...se ho ancora dei problemi t faccio sapere...grz ancora ciaociao
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:34   #15
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
noooooooo i goto nooooooooooo
meglio se trovi una soluzione senza usare i goto.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:40   #16
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
perchè????? .... okok...no cmq perchè?? cm faccio senza??? a parte che nn funziona lo stesso pure cn i goto....cmq

ah ho un nuovo problema....qnd calcolo le soluzioni a volte qnd queste sn negative il programma mi termina cn "equazione impossibile"...e cm se controllasse le soluzioni trovate...che cavolo!!!! perchè??
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 16:58   #17
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
http://it.wikipedia.org/wiki/GOTO qui ti spiega come mai non si dovrebbero usare i goto in programmi strutturati
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 17:11   #18
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
uhm capito....kiari cm sempre ....grz mille...ade devo andare via poi stase do un occhiata al programma e vediamo di metterlo a posto ....poi v faccio sapere e v rompo le balle cm sempre .....a presto ciaociao
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 21:25   #19
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
ok dunque....questa è la situazione...il programma d base è stato completato finalmente grz al vostro GRANDISSIMO buon animo....quindi ade vorrei inserire una funzione che mi faccia ripartire il programma....all'inizio del programma ho un main che chiede 1 per avviare il programma o 0 per chiudere il programma....in poche parole vorrei tornare a questo punto qnd si è in fondo al programma ma cm???
pixie è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2007, 21:50   #20
pixie
Member
 
Iscritto dal: Apr 2006
Messaggi: 264
tt il programma dentro un while??? wow mai fatto dai provo
pixie è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
CD Projekt conferma che l'uscita dei tit...
Black Friday Amazon: accessori auto e av...
Addio al notch anche su iPhone 17e: ecco...
Ultimo giorno di Black Friday: GPU, CPU,...
Ultimo giorno di Black Friday: super sco...
In piena transizione elettrica, Lotus ag...
Ultimo giorno di Black Friday: robot asp...
Il Natale segna l'ingresso di Geely in I...
Acqua dal nulla in pochi minuti: il sorp...
Ultimo giorno di Black Friday: tado° e N...
La Germania si oppone al ban dei motori ...
Aggiornamento Airbus A320, a che punto s...
Ultimo giorno di Black Friday: portatili...
Splinter Cell Remake, svolta decisiva? D...
Ultimo giorno di Black Friday Amazon: su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v