PDA

View Full Version : [C] problema con matrice


viridovix1
22-07-2005, 17:19
Aiutatemi a risolvere questo problema, ci ho sbattuto x ore :(

Sotto linux suswe 9.2 ,linguaggio c, comilatore gcc

ecco l'errore che mi da:

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;
}

ilsensine
22-07-2005, 17:26
Manca un ";" dopo la dichiarazione struct posto.
Inoltre hai scordato gli indici di array nell'assegnazione di .idPosto

Ziosilvio
22-07-2005, 17:28
struct posto
{
char idPosto[3];
int flag;
}
//
Le definizioni di struttura devono terminare con un punto e virgola, dopo la parentesi graffa chiusa e le eventuali variabili globali del tipo appena definito, dichiarate "al volo".
cine[i-'A'][j-'1'].idPosto=i;
cine[i-'A'][j-'1'].idPosto=j;
cine[i-'A'][j-'1'].idPosto='\0';
Qui intendevi sicuramente:
cine[i-'A'][j-'1'].idPosto[0]=i;
cine[i-'A'][j-'1'].idPosto[1]=j;
cine[i-'A'][j-'1'].idPosto[2]='\0';

viridovix1
22-07-2005, 20:56
Le definizioni di struttura devono terminare con un punto e virgola, dopo la parentesi graffa chiusa e le eventuali variabili globali del tipo appena definito, dichiarate "al volo".

Qui intendevi sicuramente:
cine[i-'A'][j-'1'].idPosto[0]=i;
cine[i-'A'][j-'1'].idPosto[1]=j;
cine[i-'A'][j-'1'].idPosto[2]='\0';

Dunque scusate ho riscritto il codice al volo a memoria, xchè il portatile con il sorgente nn lo avevo appresso.
per quanto riguarda il secondo punto degli indici il sorgente sul mio portatile è esatto(come lo hai proposto tu),
per il primo punto invece se metto o nn metto il ; per il compilatore è la stessa cosa.

invece mi da sempre lo stesso errore sulla riga 15 , o si riferisce al passaggi ode iparametri della funzione o alla definizione di unsigned i.j , almeno credo e cmq nn riesco a risolvere

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

maxithron
22-07-2005, 23:20
matrice.c:15: error two or more data types in declaretion of 'inizializza_cinema'

No, il `;` risolve il problema (se il codice è solo quello riportato qui).

Oltre a questo ma che probabilmente è un errore di `fretta` :)



cine[i-'A'][j-'1'].idPosto[1]=]j;