GTA-Expert Forum: [risolto] Problema C - GTA-Expert Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[risolto] Problema C equazione di 2° Grado

#1 L'utente è offline   mattez 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1016
  • Iscritto il: 29/11/10
  • ID Social Club:Matt3z_it
  • Provenienza:Finale Ligure [SV]
  • GTA Preferito:GTA V

Inviato il 28 ottobre 2012 - 09:42

Nel seguente codice:
Spoiler

mi esce il seguente errore: "else" without a previous "if" (e indica gli else segnati di rosso).
Siccome sono ancora molto ignorante in materia non capisco perchè no va, dato che in teoria l'IF l'ho messa.
Lascio anche uno screen, magari è più chiaro (utilizzo codeblocks):
Spoiler

Grazie per chi mi risponderà!

EDIT: la riformattazione del testo non ha mantenuto il colore, comunque sono i 3 else blu.

Messaggio modificato da mattez il 28 ottobre 2012 - 19:08

0

#2 L'utente è offline   Wesser 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1629
  • Iscritto il: 24/11/07
  • ID PSN:Wesser92
  • ID Social Club:Temutocle
  • Provenienza:Matera, Basilicata, Italia Meridionale, Europa Occidentale, Pianeta Terra, Sistema Solare, Via Lattea, Universo?
  • GTA Preferito:GTA: San Andreas

Inviato il 06 novembre 2012 - 18:41

Nonostante abbia risolto è bene condividere la risoluzione del problema con gli altri utenti anche se, nel caso specifico, è abbastanza ovvia.

Piccolo trafiletto. Nel linguaggio C e sui derivati ogni istruzione termina con un semicolon o punto e virgola. L'IF è una struttura di controllo che esegue blocchi di codice a seconda se il risultato della/e condizione/i verificata/e sia vero o falso, avvalendosi della clausola else nell'ultimo caso. Ogni struttura di controllo ha un corpo entro il quale viene inserito il codice da eseguire, all'interno delle curly brakets o parentesi graffe. Esse non sono necessarie se ad essere eseguita è una sola istruzione. Le strutture di controllo possono anche non essere provviste di un corpo, specie quando si desidera verificare condizioni in maniera ciclica (come per il WHILE ed il FOR), terminandole con un punto e virgola prima della dichiarazione di un corpo. Tuttavia, non ha molto senso terminare anticipatamente un IF, visto che il codice che segue verrà eseguito indipendentemente dal risultato della condizione.

Per dirla in breve, elimina il punto e virgola alla fine di ogni IF.

Nota: la funzione sqrt è un'operazione inversa della potenza ed in quanto tale esegue dei cicli. Se hai intenzione di ottimizzare il codice, potresti salvare il risultato ritornato in una variabile anziché eseguire più volte un'espressione che produce lo stesso risultato.
Notice: Undefined variable: Fabio in /home/gta-expert/index.php on line 206
0

#3 L'utente è offline   mattez 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1016
  • Iscritto il: 29/11/10
  • ID Social Club:Matt3z_it
  • Provenienza:Finale Ligure [SV]
  • GTA Preferito:GTA V

Inviato il 06 novembre 2012 - 19:24

già risolto come hai spiegato te, piccolo errore dovuto alla mancanza di esperienza ;)
comunque come giustamente mi hai fatto notare recupero la mia mancanza e pubblico la versione corretta:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{int x2;	//coefficiente x2
int x; 	//coefficiente x
int noto;	//coefficiente noto
int delta; //delta
int sol1;
int sol2;
printf("inserisci il coefficente della x2\n");
scanf("%d",&x2);
printf("inserisci il coefficemte della x\n");
scanf("%d",&x);
printf("inserisci il termine noto\n");
scanf("%d",&noto);
{
	if(x2==0)

 	{
 	printf("l'equazione non e' di secondo grado\n");

 	}
	else
 	delta=(x*x)-(4*x2*noto); 	//delta

 	if(delta<0)
 	{
 	printf("l'equazione e' impossibile");

 	}
 	else
 	if(delta==0)
 	{
 	sol1=-x/(2*x2);
 	printf("la soluzione e' %f",sol1);

 	}
 	else
{
 	sol2=(-x+sqrt(delta))/(2*x2); //soluzione numero1
 	sol1=(-x-sqrt(delta))/(2*x2); //soluzione numero2
 	printf("la soluzione 1 e' %f",sol2);
 	printf("\n la soluzione 2 e' %f",sol1);
}
	}


}





Messaggio modificato da mattez il 06 novembre 2012 - 19:27

0

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi