Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
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


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Windows domina su Steam, ma molti utenti...
Per non incorrere in nuovi aumenti delle...
Cubi Z AI 8M visto da vicino, un mini-PC...
Datacenter nello Spazio, affascinante ma...
Social e minori, Butti apre al dibattito...
Tutte le offerte Amazon del weekend, sol...
Amazon spinge sull'usato garantito: 10% ...
TikTok rischia una maxi-multa in Europa:...
Bose su Amazon: QuietComfort SC over ear...
Scope elettriche super accessoriate in o...
Umidità e muffa addio: questo deu...
DREAME Aqua10 Ultra Roller a 999€ &egrav...
500.000 kit gratis consegnati: Noctua fa...
Il MIT sperimenta il calcolo termico: op...
Sembra ormai certo: la prossima Xbox sar...
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: 15:33.


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