Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-12-2007, 19: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, 20: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, 13: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, 14: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, 14: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, 14: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, 14: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, 14: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 16: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, 20: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, 20: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


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Googlebook pronto al debutto: Google apr...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
Volvo avvia la produzione dei nuovi cami...
26 offerte Amazon da non perdere, da iPh...
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: 17:43.


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