va bene la forma?

« Older   Newer »
  Share  
CAT_IMG Posted on 14/5/2012, 19:27     +1   -1
Avatar

We were kids when we feel in love

Group:
Member
Posts:
5,137
Reputazione:
+4
Location:
Rovigo

Status:


CODICE
#include <cstdlib>
#include <iostream>

using namespace std;
float quoz(int a,int b);
int main(int argc, char *argv[])
{int c,d;
cout<<"Inserisci il primo numero:";
   cin>>c;
cout<<"Inserisci il secondo numero:";
   cin>>d;
if(quoz(c,d)==0)
  cout<<"Errore, divisore uguale a 0"<<endl;
else
  cout<<"Il valore del quoziente e':"<<quoz(c,d);
  system("PAUSE");
   return EXIT_SUCCESS;
}
float quoz(int a,int b)
{
float risultato;
if(b==0)
  return 0;
else
  {risultato=(float)a/b;
  return risultato;}
}

Dal punto di vista del funzionamento, funziona.E' un semplice esercizio visto che abbiamo iniziato le funzioni oggi. Volevo sapere se dal punto di vista della forma vada bene. Forse non mi spiego bene. Se c'è una cosa che ormai ho capito della programmazione è che bisogna curare anche l'aspetto e che non ci devono essere istruzioni inutili o superflue, cioè fare quello che viene rechiesto nel modo più corto e semplice. Tralasciando l'identazione c'era un modo migliore per eseguire il controllo divisore diverso da 0? All'interno della funzione ovviamente, perchè avrei potuto mettere una semplice condizione quando si inserisce il secondo numero però così mi sembrava più bello XD
 
Web   Top
I.Ren
CAT_IMG Posted on 14/5/2012, 20:13     +1   -1




Lo stile è osceno, non si capisce niente. Si può sapere come diavolo metti le parentesi e l'identazione? (detta simpaticamente, non ti sto aggredendo : D)

Tralasciando questo, la funzione è semplicemente sbagliata perchè un numero diviso 0 non fa 0. Ad ogni modo, se proprio vuoi mantenere la funzione così com'è e abbreviarla, puoi usare un operatore terniario

CODICE
return (b==0 ? 0 : a/b)


Il problema di fondo cmq non è la funzione, è lo stile e l'identazione, devi rivedertelo. Ricritto decentemente sarebbe così:

CODICE
#include <cstdlib>
#include <iostream>

using namespace std;

float quoz(int a,int b);

int main(int argc, char *argv[])
{
    int c, d;
    cout<<"Inserisci il primo numero:";
    cin>>c;
    cout<<"Inserisci il secondo numero:";
    cin>>d;

    if( quoz(c,d) == 0)
        cout<<"Errore, divisore uguale a 0"<<endl;
    else
        cout<<"Il valore del quoziente e':"<<quoz(c,d);
   
     system("PAUSE");
     return EXIT_SUCCESS;
}

float quoz(int a,int b)
{
   float risultato;

   if( b==0 )
      return 0;
   else
     risultato=(float)a/b;
 
   return risultato;
}


l'ho riscritto così al momento, conta che potrei aver sbagliato un paio di spazi.
 
Top
}Light{
CAT_IMG Posted on 14/5/2012, 20:15     +1   -1




Ciao, secondo me va bene.. E' un programmino per esercitazione però così com'è va bene.
Non c'è un gran modo di ottimizzare dato che il programma è banale, quindi è ottimo già adesso :)
Comunque anche se hai scritto di non correggerti l'indentazione mi sento di correggerti e dirti che è molto importante.
Quando il programma sarà complesso e inizierai a usare più funzioni concatenate, con cicli,matrici e altro, dovrai per forza essere ordinato per capirci meglio.
Altrimenti per sistemare il codice ci metti un sacco di tempo.
La cosa più importante sono le parentesi, cerca sempre di metterle al meglio :)
Buona fortuna ;)
 
Top
CAT_IMG Posted on 14/5/2012, 21:40     +1   -1
Avatar

We were kids when we feel in love

Group:
Member
Posts:
5,137
Reputazione:
+4
Location:
Rovigo

Status:


Ok la prossima volta cercherò di migliorare l'identazione XD
Comunque lo so anch'io che non fa 0, l'ho messo solo in modo che nel caso il divisore sia zero ritorni 0 e nella condizione ho posto infatti che se è zero dice "errore".
 
Web   Top
CAT_IMG Posted on 19/5/2012, 23:14     +1   -1

wtf?

Group:
Member
Posts:
2,141
Reputazione:
0
Location:
/etc/

Status:


Ma se metto:

quoz(0,2); ?

Come viene "Errore"?

Non mi sembra torni molto :P
 
Web   Top
4 replies since 14/5/2012, 19:27   84 views
  Share