DOMANDA [C] Popolare una matrice

gazel

Nuovo Utente
9
0
CPU
amd 9 9420
RAM
8
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:

DispatchCode

Utente Attivo
1,163
767
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
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.
 

Andretti60

Utente Èlite
4,593
3,214
Use the compiler, Luke...
E che la forza sia con te.
Post automatically merged:

l'accesso agli elementi della struttura, trattandosi di un puntatore (matrice è un puntatore),
Matrice è un puntatore, ma matrice[ ] è un suo elemento quindi i membri si accedono con il punto.
 

DispatchCode

Utente Attivo
1,163
767
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
  • Like
Reactions: Andretti60

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 30 22.4%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 87 64.9%
  • Square Enix

    Voti: 10 7.5%
  • Capcom

    Voti: 6 4.5%
  • Nintendo

    Voti: 18 13.4%
  • Altro (Specificare)

    Voti: 12 9.0%

Discussioni Simili