[DOMANDA] [C] Popolare una matrice

gazel

Nuovo Utente
9
0
Hardware Utente
CPU
amd 9 9420
RAM
8
#1
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:
566
321
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
#2
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.
 
566
321
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
#5
Mi Piace: Andretti60

Discussioni Simili


Entra