Azzurra IRC Network Forum

[C]problema con matrice

viridovix · 23/07/2005 02:23 · #1
Aiutatemi a risolvere questo problema, ci ho sbattuto x ore http://www.hwupgrade.it/forum/images_hwu/smilies/icon_frown.gif

Sotto linux suswe 9.2 ,linguaggio c, comilatore gcc

ecco l'errore che mi da: è l'unico che il compilarote segnali, a parte il warnin newline after } di fine programma(che nn precluderebbe la compilazione cmq)

matrice.c:15: error two or more data types in declaretion of 'inizializza_cinema'

ora eccovi il codice della matrice, che rappresenta un cinema, con fila, numero poltrona ,e flag se occupato il

posto.

//matrice esempio
#include <stdio.h>
#include <stdlib.h>
//
struct posto
{
char idPosto[3];
int flag;
};
//
//nel vettore id_Posto memorizzo numero fila
//e poltrona corrispondente all'indice di matrice, tipo A1 x
// [0][0]
void inizializza_cinema(struct posto cine[3][3])
{
unsigned char i,j;
for(i='A';i<='C';i++)
{
for(j='1';j<='3';j++)
{
cine[i-'A'][j-'1'].flag=0; //segna il posto come libero
cine[i-'A'][j-'1'].idPosto[0]=i;
cine[i-'A'][j-'1'].idPosto[1]=]j;
cine[i-'A'][j-'1'].idPosto[2]='\0';
}
}

}
//
int main(int argc,char *argv[])
{
struct posto cinema[3][3];
inizializza_cinema(cinema);
return 0;
}
City_Hunter · 23/07/2005 12:34 · #2
Il problema risiede nell'uso che hai fatto di struct.
Struct è un costruttore di tipi e può essere impiegato sia in dichiarazioni esplicite di tipo, che direttamente nella dichiarazione di variabili (il cui tipo viene quindi costruito in modo anonimo e implicito).

Nel caso in oggetto è opportuno che tu proceda con la prima opzione.
Crea un tipo "posto" in questo modo:

typedef struct
{
char idPosto[3];
int flag;
} posto;

dopodichè potrai dichiarare tutte le variabili (o gli array) di tipo posto come segue:
posto cinema[3][3];
posto singolo;

e analogamente nelle dichiarazioni di funzione userai direttamente il tipo "posto":
void inizializza_cinema(posto cine[3][3])
xin · 23/07/2005 15:06 · #3
e poi i commenti in c standard si fanno solo con /* */ :)
viridovix · 25/07/2005 08:56 · #4
Il problema risiede nell'uso che hai fatto di struct.
Struct è un costruttore di tipi e può essere impiegato sia in dichiarazioni esplicite di tipo, che direttamente nella dichiarazione di variabili (il cui tipo viene quindi costruito in modo anonimo e implicito).

Nel caso in oggetto è opportuno che tu proceda con la prima opzione.
Crea un tipo "posto" in questo modo:

typedef struct
{
char idPosto[3];
int flag;
} posto;

dopodichè potrai dichiarare tutte le variabili (o gli array) di tipo posto come segue:
posto cinema[3][3];
posto singolo;

e analogamente nelle dichiarazioni di funzione userai direttamente il tipo "posto":
void inizializza_cinema(posto cine[3][3])

In realtà l'errore che mi dava il gcc era dovuto all'assenza del ; alla fine dello struct che io avev oomesso nel sorgente :)
Cmq provo a creare il tipo posto come hai suggerito cosi' mi pare che posso abbreviare nel passaggio alla funzione :) Grazie :D