Newsgroup: it.comp.lang.c
Titolo: Liste dinamiche

Qualcuno potrebbe darmi informazioni sull'argomento "liste dinamiche"?
Altra richiesta: data una matrice N*M, che rappresenta la maschera di un
cruciverba in cui i quadratini neri sono il carattere $, quale codice può
avere la procedura "void Mem_Orizzontali(char Cruciverba[M][N],char
**vettore)" che deve leggere le parole inserite nel cruciverba e
memorizzarli in maniera opportuna.

memorizzarli in maniera opportuna.
Costruendo dapprima il seguente file di testo (che io ho chiamato
CRUCI.TXT) :
..........$..$..$.
.........$........
$.....$.$.......$.
.....$.$........$.
$..$$..........$..
..$...........$...
.$........$......$
...............$..
........$..$....$.
.$.......$..$$....
........$.........
$.$....$........$.
....$.$....$...$..
PROFESSORE
BU
VR
F
RESISTERE
FASCIARE
CANTO
A
BISTROT
R
MAREE
R
BESTIOLA
I
TE
DIMENSIONE
ET
PE
PREVENZIONI
GRO
E
TREMENDO
NASTRO
RGIOCASTELLITTO
ES
CONVENTI
OO
AARE
T
H
TENDINE
RO
OLIO
ESORTATA
PETTININI
O
BETA
CONTENTA
C
OLDI
O
ARPA
AIO
ZO
e dandolo in pasto al programma (CRUCI.C) con un comando del genere :
CRUCI < CRUCI.TXT
sulla mia macchina con s.o. MS-DOS si ottiene il seguente output :
PROFESSORE$BU$VR$F
RESISTERE$FASCIARE
$CANTO$A$BISTROT$R
MAREE$R$BESTIOLA$I
$TE$$DIMENSIONE$ET
PE$PREVENZIONI$GRO
E$TREMENDO$NASTRO$
RGIOCASTELLITTO$ES
CONVENTI$OO$AARE$T
H$TENDINE$RO$$OLIO
ESORTATA$PETTININI
$O$BETA$CONTENTA$C
OLDI$O$ARPA$AIO$ZO
Il programma CRUCI.C e' il seguente :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M         13  /* altezza */
#define N         18  /* base */
#define N_SOL     44  /* numero di soluzioni orizzontali */
#define L_MAX_SOL 37  /* lunghezza massima singola soluzione */
void Mem_Orizzontali ( char Cruciverba[M][N], char **vettore )
{
     char * t ;
     int i ;
     for ( i = 0 ; i < M ; i++ )
         while ( ( t = strchr ( Cruciverba[i], '.' ) ) )
         {
                 strncpy ( t, *vettore, strlen ( *vettore ) ) ;
                 ++vettore ;
         }
}
int main()
{
    int i, j ;
    char s [50], **soluzione, cruciverba [M][N] ;
    for ( i = 0 ; i < M ; i++ )
    {
        fgets ( s, sizeof s, stdin ) ;
        strncpy ( cruciverba[i], s, strlen ( s ) - 1 ) ;
    }
    soluzione = malloc ( N_SOL * sizeof ( char * ) ) ;
    for ( i = 0 ; i < N_SOL ; i++ )
    {
        fgets ( s, sizeof s, stdin ) ;
        soluzione [i] = calloc ( L_MAX_SOL, 1 ) ;
        strncpy ( soluzione[i], s, strlen ( s ) - 1 ) ;
    }
    Mem_Orizzontali ( cruciverba, soluzione ) ;
    printf ( "\n" ) ;
    for ( i = 0 ; i < M ; i++ )
    {
        for ( j = 0 ; j < N ; j++ )
            putchar ( cruciverba[i][j] ) ;
        putchar ( '\n' ) ;
    }
    return 0 ;
}

Uno non fa in tempo a pensare ad una soluzione che tu subito posti il
codice...mi fai proprio inc###are! ;-)
P.S. La mia e' tutta invidia.
Ciao, Luca.
-- 
*******************************************************
       "Dio non e' morto.
        E' vivo e sta lavorando
        a un progetto
        meno ambizioso"
				    graffito anonimo
  Reply to 
bia...@maganet.net
*******************************************************

 il codice...mi fai proprio inc###are! ;-)
  E non sei contento? Ormai la mia prassi e`: leggere una richiesta di
aiuto (cui, beninteso, sappia rispondere), cercare la risposta di
Andrea, tirare un sospiro di sollievo -- anche per questa volta mi sono
risparmiato un post. :)
	Alla prossima,
		Marco

 P.S. La mia e' tutta invidia.
Anche la mia...
EMG

Ciao, Luca.
;-)
E' il vantaggio di chi non riesce a trovare lavoro come programmatore
ed ha molto tempo libero da dedicare agli altri ... ;))


Aspetta un momento, se sei disoccupato tu, dev'essere proprio dura
trovare lavoro come programmatore! Non dirmi che devo lasciare
Informatica e andare a fare Economia e Commercio....


 lasciare Informatica e andare a fare Economia e Commercio....
  Fate i sistemisti. Piu` divertente, meno faticoso e piu` remunerativo.
;)
	Alla prossima,
		Marco

Informatica e andare a fare Economia e Commercio....
Be', Economia e Commercio no, pero' su Veterinaria, se non ti
impressiona il sangue, ci farei un pensierino ;)