DOMANDA [C] Popolare una matrice

Pubblicità

gazel

Nuovo Utente
Messaggi
9
Reazioni
0
Punteggio
21
sto cercando di popolare questa matrice e ho dichirato una struct:
C:
struct Cella{
  enum Tipo_pericolo pericolo;
  enum Tipo_oggetto oggetto;
};
enum Tipo_pericolo{
  Nessun_pericolo,
  bomba };
enum Tipo_oggetto{
bandiera,
nessuna_bandiera
};
ho usato un punatore matrice di tipo struct e con la malloc ho riservato spazio e ho dichirarato una variabile popolamatrice di tipo struct cella
ora mi sono bloccato come uno stupido su questo...devo riempire la matrice randomicamente con nessun pericolo o bomba ma in questo punto sbaglio mi potreste spiegare cosa faccio di così abominevole?
matrice[i*n+j].popolamatrice.pericolo=Nessun_pericolo;
C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "libreria.h"
enum Tipo_pericolo{
Nessun_pericolo,
bomba };
enum Tipo_oggetto{
bandiera,
nessuna_bandiera
};
struct Cella{
enum Tipo_pericolo pericolo;
enum Tipo_oggetto oggetto;
};
int main() {
  int a,n;
struct Cella  *matrice;
struct Cella popolamatrice;
printf("inserisci la dimensione della scacchiera, n*n \n");
scanf("%d", &n);
matrice=(struct Cella*)malloc(n*n*sizeof(struct Cella));
if (matrice == NULL) {
  printf("mi dispiace l'allocazione non è avvenuta con successo\n");
}
for (int  i= 0;  i<n; i++) {
for (int j = 0; j < n; j++) {
   srand(time(NULL));
   a=rand() % 2+1;
switch (a) {
  case 1: matrice[i*n+j].popolamatrice.pericolo=Nessun_pericolo;
        break;
  case 2: matrice[i*n+j].popolamatrice.pericolo=bomba;
        break;
      }
    }
}
}
[code]
ecco quello che ho scritto (la parte iniziale sarebbe inclusa nel file libereria.h ma qui l'ho riportata sopra)
 
Ultima modifica da un moderatore:
Così ad occhio sono almeno due gli errori: la struttura Cella non ha nessun membro chiamato popolamatrice; l'accesso agli elementi della struttura, trattandosi di un puntatore (matrice è un puntatore), avviene con ->.

Puoi comunque calcolare l'indice i*n fuori dal primo ciclo for.
 
Pubblicità
Pubblicità
Indietro
Top