PDA

View Full Version : Aiuto IMMEDIATO


devilchan
27-01-2005, 00:03
Ragazzi sono nuovo iscritto al sito, ho bisogno di voi esperti ora,
Entro domani mattina ho bisogno di sapere come DIAVOLO si indicizza una matrice dinamica di stringhe in c.

Vi speigo meglio, io ho

char ***mat =(char***)calloc(riga,sizeof (char**));

for (i = 0; i < riga ; i++)
mat[i] = (char**)calloc(col,sizeof(char*)) ;
che e la mia matrice ed poi ho:

char *parola=(char *)malloc(30*sizeof(char));

che contiene una stringa presa da un file di testo, ora voglio poter scrivere

strcpy(mat[i][j],parola);

ma non lo posso fare perchè da quanto ne ho capito io non ho allocato lo spazio necessario per copiare la stringa.

La domanda è come si fa sta BENEDETTA allocazione dello spazio necessario, cosa devo scrivere?

PER I PUI VOLENTEROSI ;)

La tracci dell'esercizio da fare è :

Progettare ed implementare un programma ‘C’ che realizzi i seguenti obiettivi:

1. Leggere e memorizzare il contenuto di un file descrivente un albero binario ed organizzato come sequenza di linee di testo di lunghezza variabile e terminate da un carattere \newline.
Allo scopo si consideri che ognuna delle suddette linee referenzierà un nodo dell’albero ed è strutturata come una sequenza di stringhe separate da uno o più spazi. La prima e la seconda stringa, presenti in ogni linea, vanno interpretate – rispettivamente – come un intero positivo identificatore univoco del nodo e come descrizione alfanumerica del nodo stesso.
Ulteriori stringhe (max 2) andranno interpretate come interi identificanti il figlio sinistro e quello destro del nodo. In particolare, l’eventuale figlio sinistro sarà riconoscibile per il segno negativo e, per un corretto riferimento, sarà ovviamente necessario considerarne il valore assoluto.
[
Si consideri il file preprocessato così da essere sicuri che risponda perfettamente alle specifiche ipotizzate dalla traccia. Non sono quindi richieste procedure per il controllo
di errori e/o anomalie di input.
Attenzione! I nodi possono però presentarsi in ordine qualsiasi, così che è necessario pensare a strutture di supporto che consentano - via via che si leggono le linee del file – di memorizzare e tener traccia dei nodi (per esempio con un array o una lista) così da poter istanziare i link opportuni.
]


Ma dubito che avrete voglia di fare tutto, vi prego aiutatemi anke solo con la prima parte.

anx721
27-01-2005, 15:31
devi fare un ulteriore passo di allocazione dinamica per ogni singolo elemento, con le prime due allocazioni hai allocato una matrice di puntatori a char, ognuno di quali non punta a nulla; quindi:

int i, j;
for(i = 0; i < riga; i++)
for(j = 0; j < colonna; j++)
mat[i][j] = (char *)malloc(30*sizeof(char));

se vuoi parole lunghe al più 29 caratteri (+ 1 per il terminatore di fine stringa)

il resto prova a farlo, stasera cido un'okkiata

devilchan
27-01-2005, 21:18
Un altro aiutino veloce,

mi postate l'inserimento di in un albero binario e la stampa in un albero binario?

le classiche procedure insert e print

quindi considerendo che lo leggo dall'arrey in qualke modo, e di volta in volta creo un nodo e lo inserisco.
Grazie

devilchan
27-01-2005, 21:19
Grazie mille anx721

devilchan
27-01-2005, 22:40
Ragazzi HELP ME HELP ME!!!!

Devo scrivere questo programma assolutamente.

Non devo usare la libreria iostrem.h

il testo dell'esercizio è allegato qui sotto.

Io praticamente ho gia letto de file inserito nell'arrey e identificato la root secondo la matrice sotto indicata

n des pun pun
-----------------------
0 | 6 | B | * | * |
1 | 5 | A | -6 | 8 |
0 | 8 | C | 3 | -2 |
0 | 3 | E | * | * |
0 | 2 | D | * | * |
-----------------------

ORA IL MIO PROBLEMA STA NEL COSTRUIRE L'ALBERO SECONDO I PARAMETRI OVVIAMENTE n e un numero identificativo di nodo des è e la descrizione pun sono i figli destri e sinistri, il figlio sinistro e riconoschibbile dal segno -
Quindi , partendo dalla root vado al pun (-6) che ci dice ke è il figlio sinistro,vado al num identificativo "n"(6) e prendo la descrizione e vedo ke non ha ne figlio destro ne sinistro, ritorno in dietro e vedo che il numero idendificativo 8 è il figlio destro e quindi prendo la sua descrizione (C) e vedo che ha i figlio in posizione 3 e in posizione 2 dove due è il figlio destro.

Ora da questa tabella io devo potermi creare un albero con qull'ordine, vi prego aiutatemi voi gurru del c.Per farvi capire meglio vi lascio in allegato l'esercizio in formato zip.

GRAZIE mille a tutti