|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quanto meno un:
Codice:
memset(&strutturaDellaMatrice, 0, sizeof(matrice));
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#42 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Quote:
Ho provato a scrivere solo questo codice nel main, mi va comunque in segmentation fault: Codice:
matrice matrice;
memset(&matrice, 0, sizeof(matrice));
creamatrice(&matrice, 4, 4);
Ultima modifica di guylmaster : 05-06-2010 alle 18:54. |
|
|
|
|
|
|
#43 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Il codice l'hai tradotto bene, intendevo proprio quello.
Però come vedi non basta! Devi correggere la funzione di creazione della matrice... leggila per bene e capirai dove sbagli. Non posso mica farti tutto io. ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#44 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Ehm, no davvero, sto impazzendo per questo esame, e ho la consegna a giorni, se hai visto dove è l'errore e potresti dirmelo mi risolveresti un sacco di rogne.
|
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Nel secondo ciclo effettivamente c'era un errore, l'if valuava la variabile "i" invece che "j". Ma anche cambiando quella comunque quella stringa di codice mi manda il programma in segmentation fault!
|
|
|
|
|
|
#46 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Pensa: cosa fa quel "scorri_puntatori = matrice->lista"?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#47 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
|
|
|
|
|
|
#48 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
È quello che vorresti, ma dove punta matrice->lista?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#49 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
|
|
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non è diabolico, sarei sicuramente meno d'aiuto se non cercassi di farti ragionare su ciò stai facendo. Così risolveresti questo problema sul momento, e alla prossima funzione ti ritroveresti un bug che non sai spiegarti.
Una volta che tu ricevi il puntatore ad una struttura di cui hai azzerato tutta la memoria con la memset() di prima, avrai che matrice->lista punta a 0, ovvero a NULL. Con quel scorri_puntatore = matrice->lista stai effettivamente scegliendo di iniziare l'iterazione della lista su... NULL, possibile? No, e infatti va in crash. In realtà tu avresti voluto fare il contrario: una volta allocata la riga di colonne (la prima lista), avresti voluto assegnare il riferimento corretto a quanto appena creato. Quindi, al limite, sarebbe stato un matrice->lista = scorri_puntatore. Rivedi la logica di quella funzione, se ti gira riscrivila interamente: la puoi fare più semplice e meno soggetta ad errori. (E ci perdi meno tempo di quanto ce ne vorrebbe a debuggarla.) ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#51 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Quote:
|
|
|
|
|
|
|
#52 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ma se il codice di cui parlo l'hai scritto tu!
Se mi rispondi a bruciapelo senza prima aver ragionato sul codice non se ne fa niente.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#53 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Cioè qualcosa del genere? (che comunuqe non funziona mi va in segmentation fault)
Codice:
void creamatrice(matrice *matrice, int riga, int colonna)
{
int i,j;
nodo_colonna *lista_colonna;
nodo_puntatori *scorri_puntatori;
scorri_puntatori = matrice->lista;
//***********************************
matrice->numero_righe = riga;
matrice->numero_colonne = colonna;
//***********************************
for(i=0; i < colonna; i++)
{
for(j=0; j < riga; j++)
{
if(j == 0)
{
lista_colonna = crea_lista_colonna(i);
scorri_puntatori->seguente_down = lista_colonna;
//scorri_puntatori->seguente_down = (nodo_puntatori*)lista_colonna;
}
else
{
Inserisci_a_fine_colonna(lista_colonna, j);
}
}
scorri_puntatori->seguente_down = lista_colonna;
scorri_puntatori = scorri_puntatori->seguente;
}
}
|
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
L'ho riscritta cosi:
Codice:
void creamatrice(matrice *matrice, int riga, int colonna)
{
int i,j;
nodo_colonna *lista_colonna;
nodo_puntatori *scorri_puntatori;
//***********************************
matrice->numero_righe = riga;
matrice->numero_colonne = colonna;
//***********************************
scorri_puntatori = crea_lista_puntatori();
matrice->lista = scorri_puntatori;
for(i=0; i < colonna; i++)
{
for(j=0; j < riga; j++)
{
if(j == 0)
{
lista_colonna = crea_lista_colonna(0);
}
else
{
Inserisci_a_fine_colonna(lista_colonna, 1);
}
}
scorri_puntatori->seguente_down = lista_colonna;
scorri_puntatori = Inserisci_a_fine_puntatori(scorri_puntatori);
}
}
Te lo chiedo perchè ti vedo piu esperto e temo di non avere stasera il tempo per testarla perbenino, ma vorrei andare a dormire "tranquillo" |
|
|
|
|
|
#55 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Ho provato a dare queste stampe nel main e sembra andare:
Codice:
matrice ma;
creamatrice(&ma, 4, 4);
printf("COLONNA 1\n");
stampa_colonna(ma.lista->seguente_down);
ma.lista = ma.lista->seguente;
printf("COLONNA 2\n");
stampa_colonna(ma.lista->seguente_down);
ma.lista = ma.lista->seguente;
printf("COLONNA 3\n");
stampa_colonna(ma.lista->seguente_down);
ma.lista = ma.lista->seguente;
printf("COLONNA 4\n");
stampa_colonna(ma.lista->seguente_down);
ma.lista = ma.lista->seguente;
printf("COLONNA 5\n");
stampa_colonna(ma.lista->seguente_down);
|
|
|
|
|
|
#56 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Abbastanza.
Vedi che ci potevi arrivare?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#57 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Il punto è che non sapevo come allocarlo a manina, poi però mi sono accorto che invece di scervellarmi per creare nuove righe di codice che allocassero lo facevano già le mie stesse funzioni.
Il punto però non è il non volermela cavare da solo, è il tempo hce stringe
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:40.




















