Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Puntatori ottimizzatori?
Forum - C/C++ - Puntatori ottimizzatori?

Avatar
macberte (Normal User)
Newbie


Messaggi: 2
Iscritto: 17/06/2010

Segnala al moderatore
Postato alle 0:25
Venerdì, 18/06/2010
Buonasera a tutti. Sono nuovo del forum e un autodidatta appassionato del "c".
Colgo l'occasione per ringraziare voi tutti per quelle volte che in silenzio ho trovato, rubato e carpito informazioni utili per il raggiungimento dei miei obiettivi da neofita del "c" su questo sito.

Detto questo sto scrivendo come primo approccio un semplice programma geometrico che esegue le operazioni base sul triangolo rettangolo. Direi che funziona anche se con dei bug ENORMI e il codice credo sia di prima elementare... Vorrei chiedere un aiuto su come posso sfruttare i PUNTATORI per ottimizzare il codice acquisendone anche l'utilità che mi è ancora poco chiara per mancanza d'esempi, e qualsiasi altro consiglio per rendere migliore questo piccolo programma.
Grazie :k:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

//Prototipo della funzione
float ipotenusa(float,float);
float cateto(float,float);
float area(float,float);
void menu();
//Dichiarazione delle variabili
float a,b,c;
char nome[10];
int scelta;


int main()

{
printf("COME TI CHIAMI? ",nome);
scanf("%s", &nome);
printf("\n\n\n\n                                    %s\n\n",nome);

  
    printf("\n                ### BENVENUTO NEL PROGRAMMA DI CALCOLO ###\n");                                
    printf("                       ######## DEL TRIANGOLO ########\n");
    printf("                         #######  RETTANGOLO  #######\n\n\n");  
    printf("----------------------------------------------------------------------------------------------------------------------------------------------------------------\n\n");
    

do
{
menu();
}
while(scelta > 3 || scelta <= 0);

if  (scelta==1)

   {
         printf("\n\n ### CALCOLO L'IPOTENUSA ###\n\n");
        
         printf("\n %s inserisci il valore del primo cateto: ",nome);
         scanf("%f", &a);

         printf("\n Inserisci il valore del secondo cateto: ");
         scanf("%f", &b);
         //uso della funzione IPOTENUSA
         c = ipotenusa(a,b);
         printf("\n Il valore dell'IPOTENUSA e': %.2f  \n",c);
         printf("\n\n\n");
    }

    
if (scelta==2)
    {

          printf("\n\n ### CALCOLO IL CATETO ### \n\n\n");
       teto:
          printf("\n %s inserisci il valore del'ipotenusa: ",nome);
         scanf("%f", &a);

         printf("\n Inserisci il valore del cateto: ");
         scanf("%f", &b);
    if (a < b){
      printf("\n\nIMPOSSIBILE! %s nel triagolo rettangolo l'ipotenusa non puo' essere inferiore al cateto! \n",nome);
      goto teto;
      }
    if (a <= b){
      printf(" \n\n ## %s QUESTO MI SA CHE E' UN TRIANGOLO ISOSCELE...## \n\n\n\n",nome);
      goto teto;
      }
        
         //uso della funzione CATETO
         c = cateto(a,b);
         printf("\n Il valore del CATETO e': %.2f  \n",c);
         printf("\n\n\n");
                    
    }

if (scelta==3)
    
       {
         printf("\n\n ### CALCOLO L'AREA  ###\n\n");
        
         printf("\n %s inserisci il valore del primo cateto: ",nome);
         scanf("%f", &a);

         printf("\n Inserisci il valore del secondo cateto: ");
         scanf("%f", &b);
        
         //uso della funzione AREA
        
         c = area(a,b);
         printf("\n Il valore dell'AREA e': %.2f  \n",c);
         printf("\n\n\n");
    }
    
          

system("pause");
return 0;
}
// Procedura menu'
void menu()
{
printf("\n1-CALCOLO DELL'IPOTENUSA\n");
printf("\n2-CALCOLO DI UN CATETO\n");
printf("\n3-CALCOLO DELL' AREA\n\n");
scanf("%d", &scelta);
}


//Dichiarazione della funzione IPOTENUSA

float ipotenusa(float primo_cat,float secondo_cat)
{
float ipotenusa = sqrt(((primo_cat * primo_cat) + (secondo_cat * secondo_cat))/2);
// Dice che valore deve ritornare cioè Ipotenusa
return ipotenusa;
}
// Dichiarazione della funzione CATETO

float cateto(float ipo,float cat)
{
float cateto = sqrt(((ipo * ipo) - (cat * cat))/2);
// Dice che valore deve ritornare cioè Ipotenusa
return cateto;
}
//Dichiarazione della funzione AREA

float area(float primo_cat,float secondo_cat)
{
float area= (primo_cat*secondo_cat)/2;
//Dice che valore deve ritornare cioè Area
return area;
}

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 7:55
Venerdì, 18/06/2010
Non è che si debbano usare per forza dei puntatori in un programma. E non è neanche vero che questi migliorino la situazione se non ce n'è bisogno ...

P.S. Piuttosto, nel primo printf, non ha senso usare la variabile nome ancora non inizializzata ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
macberte (Normal User)
Newbie


Messaggi: 2
Iscritto: 17/06/2010

Segnala al moderatore
Postato alle 20:40
Venerdì, 18/06/2010
Grazie della dritta sulla variabile...emh rileggendo il code effettivamente non ha senso.
So che i puntatori non sono sempre indispensabili. Sto solo cercando qualche esempio pratico, che riesca a comprendere, che mi possa spiegare il loro utilizzo nell'ambito di un programma che conosco.

Ciao

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:50
Venerdì, 18/06/2010
Prova ad allocare dinamicamente una matrice n x m in cui n ed m sono indicati da tastiera, e riempila con i valori di n x m


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote