[C] Strutture

Messaggioda gaetano0 » 22/09/2017, 10:52

salve ragazzi,ho una funzione che mi dovrebbe restituire 2 valori(quindi dovrei usare una struct).dato che non trovo niente a riguardo,potete mica farmi un esempio stupido di prototipo di come tale funzione restituisca una struct con due valori?
grazie mille
gaetano0
Junior Member
Junior Member
 
Messaggio: 44 di 122
Iscritto il: 07/01/2017, 20:00

Re: [C] Strutture

Messaggioda apatriarca » 22/09/2017, 12:52

Codice:
typedef struct pair_t pair_t;
struct pair_t {
    int a;
    float b;
};

pair_t fun()
{
    // requires a recent C compiler..
    return (pair_t){.a=1, .b=1.0f};
    // Old version which also work in C++
    pair_t p = {1, 1.0f};
    return p;
}
apatriarca
Moderatore
Moderatore
 
Messaggio: 4826 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Strutture

Messaggioda gaetano0 » 22/09/2017, 19:38

apatriarca ha scritto:
Codice:
typedef struct pair_t pair_t;
struct pair_t {
    int a;
    float b;
};

pair_t fun()
{
    // requires a recent C compiler..
    return (pair_t){.a=1, .b=1.0f};
    // Old version which also work in C++
    pair_t p = {1, 1.0f};
    return p;
}

grazie ma non mi compila...
gaetano0
Junior Member
Junior Member
 
Messaggio: 45 di 122
Iscritto il: 07/01/2017, 20:00

Re: [C] Strutture

Messaggioda apatriarca » 22/09/2017, 19:41

Non è un esempio completo e il corpo della funziona mostra due alternative a seconda che il compilatore supporti uno standard abbastanza recente. Se ci dici che deve fare questa funzione ti scrivo un esempio migliore.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4827 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Strutture

Messaggioda gaetano0 » 22/09/2017, 20:23

apatriarca ha scritto:Non è un esempio completo e il corpo della funziona mostra due alternative a seconda che il compilatore supporti uno standard abbastanza recente. Se ci dici che deve fare questa funzione ti scrivo un esempio migliore.



si ho per esempio una struct che contiene due interi a e b (di cui non so il valore)
e poi una funzione che calcola il valore di a e b(es a=5 e b=6)
questa funzione restituisce i valori di a e b alla struct;
poi vabbè stampo un array di struct(questo so farlo).
questo sarebbe il mio scopo...non capisco molto bene come scrivere il codice....
gaetano0
Junior Member
Junior Member
 
Messaggio: 46 di 122
Iscritto il: 07/01/2017, 20:00

Re: [C] Strutture

Messaggioda apatriarca » 24/09/2017, 03:50

Continua a non essermi molto chiaro il tuo problema. Che compilatore stai usando? Il seguente codice dovrebbe compilare senza problemi. Ti ho scritto una funzione che riceve una struttura che rappresenta un vettore bidimensionale e restituisce un secondo vettore ruotato di un certo numero di gradi.
Codice:
#include <stdio.h>
#include <math.h>

typedef struct vec2_t vec2_t;
struct vec2_t {
   double x, y;
};

vec2_t rotate(vec2_t v, double angle)
{
   vec2_t result = {
      v.x * cos(angle) + v.y * sin(angle),
      v.x * sin(angle) + v.y * cos(angle) };
   return result;
}

int main(int argc, char **argv)
{
   vec2_t v = { 1.0, 0.0 }, w = { 0 };
   printf("%f %f\n", v.x, v.y);

   w = rotate(v, 1.57079632679);
   printf("%f %f\n", w.x, w.y);

   return 0;
}
apatriarca
Moderatore
Moderatore
 
Messaggio: 4828 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite