[C] Puntatori e strutture

floppyes
Ciao a tutti!

Non riesco a risolvere questo esercizio riguardante la programmazione C.

Testo:
Definire un nuovo tipo di dati "Float2" che aggrega 2 dati floating point e successivamente definire una funzione C che, dato un puntatore ad un dato Float2, visualizzi le variabili membro floating point del dato puntato.

Ho iniziato a scrivere il codice, però non riesco a capire come scrivere la funzione. Devo utilizzare un puntatore ad un dato della struttura Float2, e visualizzare il suo valore.

typedef struct {
	float n1;
	float n2;
} Float2;

float funz (float *punt)
{
*punt=&Float2;
}


Quello che non riesco a capire è come far puntare alla struttura il mio puntatore. Riuscite a darmi qualche suggerimento in merito :D

Grazie
Ciaoo :)

Risposte
vict85
Ma vi danno i problemi senza spiegarvi la notazione?

Ho avuto difficoltà a scriverti le varie cose senza darti la soluzione. Puoi ovviamente anche stampare direttamente senza usare variabili temporanee, anche se i compilatori sono sufficientemente furbi da sapere che possono farne a meno.
void funz(Float2 *punt)
{
  float x = punt->n1;
  float y = punt->n2;
  /*
  *  Visualizza x e y
  */
}


Se sei un fanatico dell'uso dei const puoi ovviamente fare così:
void funz(Float2 const * const punt)
{
  float const x = punt->n1;
  float const y = punt->n2;
  /*
  *  Visualizza x e y
  */
}

floppyes
Ciao!

Purtroppo questa parte dei puntatori è stata spiegata molto velocemente senza tanti esempi. Giusto il classico esercizio da far cambiare valore ad un intero puntato!

Può andare bene questa soluzione completa con anche il main?
#include <stdio.h>
typedef struct {
   float n1;
   float n2;
} Float2;

void funz(Float2 *punt)
{
   float x = punt->n1;
   float y = punt->n2;
   printf("%.2f - %.2f", x,y);
}

int main ()
{
   Float2 v;
   v.n1=15.47;
   v.n2=1.47;

   Float2 *p=&v;
   funz(p);

   printf("\n\n");

   return 0;
}


In pratica utilizzo la freccia -> per richiamare i singoli valori all'interno della struttura giusto?

Grazie mille :)

vict85
Il codice direi che va bene. Per la tua domanda la risposta è si e no. La freccia si usa nel caso in cui tu abbia un puntatore a struttura, altrimenti si usa il punto.

floppyes
Ciao!

Perfetto grazie mille per l'aiuto :)

Ciaoo!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.