Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-12-2005, 22:01   #1
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
Pile dinamiche (C++)

Ciao a tutti, mi sono "un attimo" arenato con una cosetta..... detta molto in breve se date uno sguardo a questo codice (funzionante) scoprirete che la sua funzione è semplicemente quella di aggiungere/togliere/visualizzare gli elementi da una pila dinamica. Il problema è che a me servirebbe capire come riuscire a salvare più di un valore in quella struttura ovvero: Ora nella struttura c'è soltanto la variabile "valore" io vorrei aggiungere una variabile "valore2" in modo che quando andrò a fare una stampa della mia pila avrò un risultato di questo tipo:

STAMPA VALORI DELLA PILA:
posizione1 -> valore:45 valore2:56
posizione2 -> valore:34 valore2:67

Spero di essermi spiegato, se volete qualche informazione in più chiedete pure..nn so più che provare...

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

Codice:
#include <stdio.h>
#include <stdlib.h>


struct cella
{
    int valore;
	struct cella *next;  
};

struct cella* pop(struct cella **t);
void push(struct cella **t, int num);
void stampaPila(struct cella **t);
void resetPila(struct cella **t);

int main()
{
    char opzione;
    int count, numero, numero2, num1;
    struct cella *testa;
    testa = NULL;
    
    while (1)
    {
        system("cls");
        printf("\n\n Seleziona l\'operazione:\n");
        printf("\n 1 - Inserisci nuovo elemento");
        printf("\n 2 - Stampa elenco elementi");
        printf("\n 3 - Azzera la Pila");
        printf("\n 4 - Esci");        
        printf("\n\n > ");        
        fflush(stdin);        
        opzione = getch();
        switch(opzione)
        {
            case '1':
                system("cls");
                printf("\n\n INSERIMENTO");
                printf("\n\n Inserisci il valore intero da inserire nella pila: ");                
                fflush(stdin);
                scanf("%d",&numero);
			    push(&testa,numero);
                printf("\n\n Nuovo elemento creato correttamente!\n ");
                system("pause");
                break;
            case '2': //stampa degli elementi in pila
                system("cls");
                printf("\n\n STAMPA VALORI IN PILA\n\n");
                stampaPila(&testa);
                printf("\n\n La pila e\' stata svuotata!\n ");
                system("pause");
                break; 
            case '3': //azzera pila
                system("cls");
                if (testa == NULL)
                    printf("\n\n PILA VUOTA!\n\n "); 
                else
                {
                    resetPila(&testa);
                    printf("\n\n PILA AZZERATA!\n\n ");
                }    
                system("pause");
                break;                                                                   
            case '4': //Esci dal programma
                exit(0);
                break;    
        }
    
    }    

    return 0;    
}


void resetPila(struct cella **t)
{
    struct cella *temp;
    
    while (*t != NULL)
    {
        temp = pop(t);
        if (temp != NULL)
            free(temp);
    }
}

void stampaPila(struct cella **t)
{
    struct cella *temp;
    
    printf("\n");
    if (t == NULL)
    {
        printf(" La pila e\' vuota!\n");
        return;
    }
    
    do
    {
        temp = pop(t);
        printf(" valore: %d\n",temp->valore);
        free(temp);
    } while(*t != NULL); 
}

void push(struct cella **t, int num)
{
    struct cella *nuovoElemento;
    
    nuovoElemento = (struct cella*)malloc(sizeof(struct cella));
    if (nuovoElemento == NULL)
    {
        printf("\n\n Errore nell\'allocazione della memoria.\n Il programma verra\' chiuso!\n ");
        system("pause");                    
        exit(1);
    }
    nuovoElemento->valore = num;
    nuovoElemento->next = *t; 
    *t = nuovoElemento;
}

struct cella * pop(struct cella **t)
{
    struct cella *temp;

    if (*t == NULL)
        return NULL;
    temp = *t;
    *t = (*t)->next;
    temp->next = NULL; 
    return temp;
}
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
__________________
.

Ultima modifica di ::::Dani83:::: : 29-12-2005 alle 23:30.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2005, 22:25   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da ::::Dani83::::
Ciao a tutti, mi sono "un attimo" arenato con una cosetta..... detta molto in breve se date uno sguardo a questo codice (funzionante) scoprirete che la sua funzione è semplicemente quella di aggiungere/togliere/visualizzare gli elementi da una pila dinamica. Il problema è che a me servirebbe capire come riuscire a salvare più di un valore in quella struttura ovvero: Ora nella struttura c'è soltanto la variabile "valore" io vorrei aggiungere una variabile "valore2" in modo che quando andrò a fare una stampa della mia pila avrò un risultato di questo tipo:

STAMPA VALORI DELLA PILA:
posizione1 -> valore:45 valore2:56
posizione2 -> valore:34 valore2:67
Ciao, non ho analizzato per intero il sorgente ma è abbastanza semplice fare quello che chiedi:
1) Aggiungi alla struttura cella un "int valore2;"
2) Modifichi la funzione stampaPila() in modo da fare il print anche di valore2.
3) Modifichi la funzione push() aggiungendogli un nuovo parametro num2 (che poi metterai in nuovoElemento->valore2).
4) Modifichi il case per l'opzione 1 (inserimento) in modo da richiedere anche un secondo valore da passare poi alla push().


P.S.: Quando posti del codice particolarmente lungo/complesso, per cortesia mettilo tra i tag CODE. A quest'ora della sera mi si incrociano gli occhi a leggere codice non indentato.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2005, 22:53   #3
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1843
Quote:
Originariamente inviato da ::::Dani83::::
Ciao a tutti, mi sono "un attimo" arenato con una cosetta..... detta molto in breve se date uno sguardo a questo codice (funzionante) scoprirete che la sua funzione è semplicemente quella di aggiungere/togliere/visualizzare gli elementi da una pila dinamica. Il problema è che a me servirebbe capire come riuscire a salvare più di un valore in quella struttura ovvero: Ora nella struttura c'è soltanto la variabile "valore" io vorrei aggiungere una variabile "valore2" in modo che quando andrò a fare una stampa della mia pila avrò un risultato di questo tipo:

STAMPA VALORI DELLA PILA:
posizione1 -> valore:45 valore2:56
posizione2 -> valore:34 valore2:67

Spero di essermi spiegato, se volete qualche informazione in più chiedete pure..nn so più che provare...

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
Codice:
#include <stdio.h>
#include <stdlib.h>


struct cella
{
    int valore;
    int valore2;
	struct cella *next;  
};

struct cella* pop(struct cella **t);
void push(struct cella **t, int num);
void stampaPila(struct cella **t);
void resetPila(struct cella **t);

int main()
{
    char opzione;
    int count, numero, numero2, num1;
    struct cella *testa;
    testa = NULL;
    
    while (1)
    {
        system("cls");
        printf("\n\n Seleziona l\'operazione:\n");
        printf("\n 1 - Inserisci nuovo elemento");
        printf("\n 2 - Stampa elenco elementi");
        printf("\n 3 - Azzera la Pila");
        printf("\n 4 - Esci");        
        printf("\n\n > ");        
        fflush(stdin);        
        opzione = getch();
        switch(opzione)
        {
            case '1':
                system("cls");
                printf("\n\n INSERIMENTO");
                printf("\n\n Inserisci il valore intero da inserire nella pila: ");                
                fflush(stdin);
                scanf("%d",&numero);
			    push(&testa,numero);
                printf("\n\n Nuovo elemento creato correttamente!\n ");
                system("pause");
                break;
            case '2': //stampa degli elementi in pila
                system("cls");
                printf("\n\n STAMPA VALORI IN PILA\n\n");
                stampaPila(&testa);
                printf("\n\n La pila e\' stata svuotata!\n ");
                system("pause");
                break; 
            case '3': //azzera pila
                system("cls");
                if (testa == NULL)
                    printf("\n\n PILA VUOTA!\n\n "); 
                else
                {
                    resetPila(&testa);
                    printf("\n\n PILA AZZERATA!\n\n ");
                }    
                system("pause");
                break;                                                                   
            case '4': //Esci dal programma
                exit(0);
                break;    
        }
    
    }    

    return 0;    
}


void resetPila(struct cella **t)
{
    struct cella *temp;
    
    while (*t != NULL)
    {
        temp = pop(t);
        if (temp != NULL)
            free(temp);
    }
}

void stampaPila(struct cella **t)
{
    struct cella *temp;
    
    printf("\n");
    if (t == NULL)
    {
        printf(" La pila e\' vuota!\n");
        return;
    }
    
    do
    {
        temp = pop(t);
        printf(" valore: %d\n",temp->valore);
        printf(" valore 2: %d\n",temp->valore2);
        free(temp);
    } while(*t != NULL); 
}

void push(struct cella **t, int num)
{
    struct cella *nuovoElemento;
    
    nuovoElemento = (struct cella*)malloc(sizeof(struct cella));
    if (nuovoElemento == NULL)
    {
        printf("\n\n Errore nell\'allocazione della memoria.\n Il programma verra\' chiuso!\n ");
        system("pause");                    
        exit(1);
    }
    nuovoElemento->valore = num;
    nuovoElemento->valore2= bo fai te;
    nuovoElemento->next = *t; 
    *t = nuovoElemento;
}

struct cella * pop(struct cella **t)
{
    struct cella *temp;

    if (*t == NULL)
        return NULL;
    temp = *t;
    *t = (*t)->next;
    temp->next = NULL; 
    return temp;
}
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
Come ho scritto io dovrebbe bastare.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2005, 23:28   #4
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
grazie mille ad entrambi, effettivamente mi ero perso in un bicchier d'acqua

p.s scusate per il tag
__________________
.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 13:19   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
ma scusa diventa molto più bella l'implementazione della pila sotto classi alla fine questo è c.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 14:18   #6
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
devo seguire delle linee guida quindi anche se per risolvere alcuni problemi ci sono vie più "eleganti" devo cmq attenermi ad esse....ora mi sono arenato in un altro bicchier d'acqua.... Stampando le strutture tramite "Pop" esse vengono estratte e quindi cancellate, per evitare che esse vengano cancellate avevo pensato di visualizzare le strutture in questo modo ma devo aver sbagliato qualcosa nel ciclo do-while in fondo al codice... :

Codice:
#include <stdio.h>
#include <stdlib.h>


struct cella
{
    int valore;
	int valore2;
	struct cella *next; 
	
};

struct cella* pop(struct cella **t);
void push(struct cella **t, int num, int num2);
void stampaPila(struct cella **t);


int main()
{
    char opzione;
    int count, numero, numero2, num1;
    struct cella *testa;
    testa = NULL;
    
    while (1)
    {
        system("cls");
        printf("\n\n Seleziona l\'operazione:\n");
        printf("\n 1 - Inserisci nuovo elemento");
        printf("\n 2 - Stampa elenco elementi");
        printf("\n 3 - Azzera la Pila");
        printf("\n 4 - Esci");        
        printf("\n\n > ");        
        fflush(stdin);        
        opzione = getch();
        switch(opzione)
        {
            case '1':
                system("cls");
                printf("\n\n INSERIMENTO");
                printf("\n\n Inserisci il valore intero da inserire nella pila: ");                
                fflush(stdin);
                scanf("%d",&numero);
				printf("\n\n Inserisci il valore intero da inserire nella pila 2: ");
				scanf("%d",&numero2);
			    push(&testa,numero,numero2);
                printf("\n\n Nuovo elemento creato correttamente!\n ");
                system("pause");
                break;
            case '2': //stampa degli elementi in pila
                system("cls");
                printf("\n\n STAMPA VALORI IN PILA\n\n");
                stampaPila(&testa);
                printf("\n\n La pila e\' stata svuotata!\n ");
                system("pause");
                break; 
                                                                               
            case '4': //Esci dal programma
                exit(0);
                break;    
        }
    
    }    

    return 0;    
}


void stampaPila(struct cella **t)
{
    struct cella *temp;
    
    printf("\n");
    if (t == NULL)
    {
        printf(" La pila e\' vuota!\n");
        return;
    }
    
    do
    {
        temp=*t;
        printf(" valore: %d\n",temp->valore);
		printf(" valore2:%d\n",temp->valore2);
        temp = temp->next;
    } while(temp != NULL); 
}

void push(struct cella **t, int num, int num2)
{
    struct cella *nuovoElemento;
    
    nuovoElemento = (struct cella*)malloc(sizeof(struct cella));
    if (nuovoElemento == NULL)
    {
        printf("\n\n Errore nell\'allocazione della memoria.\n Il programma verra\' chiuso!\n ");
        system("pause");                    
        exit(1);
    }
    nuovoElemento->valore = num;
	nuovoElemento->valore2 = num2;
    nuovoElemento->next = *t; 
    *t = nuovoElemento;
}
__________________
.

Ultima modifica di ::::Dani83:::: : 30-12-2005 alle 14:36.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 14:38   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da ::::Dani83::::
devo seguire delle linee guida quindi anche se per risolvere alcuni problemi ci sono vie più "eleganti" devo cmq attenermi ad esse....ora mi sono arenato in un altro bicchier d'acqua.... Stampando le strutture tramite "Pop" esse vengono estratte e quindi cancellate, per evitare che esse vengano cancellate avevo pensato di visualizzare le strutture in questo modo ma devo aver sbagliato qualcosa nel ciclo do-while in fondo al codice... :
La funzione stampaPila() non deve alterare il puntatore alla testa e quindi è inutile passargli l'indirizzo del puntatore alla testa. Si potrebbe riscrivere la funzione così:
Codice:
void stampaPila(struct cella *t);

...
stampaPila(testa);
...

void stampaPila(struct cella *t)
{
    printf("\n");
    if (t == NULL)
    {
        printf(" La pila e\' vuota!\n");
        return;
    }

    do
    {
        printf(" valore: %d\n",t->valore);
        printf(" valore2:%d\n",t->valore2);
        t = t->next;
    } while(t != NULL);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 15:26   #8
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
Quote:
Originariamente inviato da andbin
La funzione stampaPila() non deve alterare il puntatore alla testa e quindi è inutile passargli l'indirizzo del puntatore alla testa. Si potrebbe riscrivere la funzione così:
cut...
Già....così come hai detto tu funziona benissimo infatti... ora devo applicarlo al programma vero e proprio..speriamo bene
Grazie mille ancora una volta
__________________
.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:09   #9
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
ahmm.... come si passa una matrice ad una struttura? scusate se stresso ma ho cercato su google e sul manuale che ho ma nn ho trovato nulla
se la passo così:
nuovoElemento->Piano1S = Piano1;

mi dice:
error C2440: '=' : cannot convert from 'int [][16]' to 'int [16][16]'
devo passargliela tramite un doppio puntatore?

vi posto il codice ma sono quasi 700righe... mi basterebbe sapere la teoria...credo
(l'errore è nelle righe rosse in fondo al codice..)
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct cella
{
    char sceltaRigaColonna;
    char sceltaRigaS;
    char sceltaLatoS;
    char sceltaColonnaS;
    char sceltaVersoS;
    int counterS;
	int Piano1S[16][16];
	int Piano2S[16][16];
    struct cella *next;  
};

//struct cella* pop(struct cella **t);
void salvataggioMosse(struct cella **t, char scelta1,char sceltaRiga1,char sceltaLato1,char sceltaColonna1,char sceltaVerso1,int counter1,int Piano1[16][16],int Piano2[16][16]);
void stampaMosse(struct cella *t);

void annullaMossa(struct cella **t);
int mossa=0;

//** Partita guidata **//
//Riga 1, 1 volta a sinistra
//Riga 3, 1 volta a destra
//Colonna 4, 1 volta in alto
//Colonna 3, 1 volta in alto

//struct cella
//{
//    double secondi;
//    struct cella *next;
//};

void guida(); //guida
void gioca(); //gioca
void menu();  //menù inziale
void palline();
void inserireNomiGiocatori(char giocatori[2][10]);
void inizioGioco();
void stampaTavoloDaGioco(int Tavolo1[16][16],int *pallinerosse1,int *pallineblu1);
void controlloVittoria(int pallinerosse1, int pallineblu1, char giocatori[2][10],int *gioca1);
void puliziaTavolo(int Tavolo1[16][16]);
void stampaLista();
void spostaRiga(int Piano1[16][16], int counter_Righe1[16],int *sceltaRiga,int *sceltaLato);
void spostaColonna(int Piano2[16][16], int counter_Colonne1[16],int *sceltaColonna,int *sceltaVerso);
void controlloBuchi(int Piano1[16][16], int Piano2[16][16], int Tavolo1[16][16]);
/* Variabili di controllo menù */
//int controllomenu = 1;  
//int controllomenu2= 1;
int stampalista = 0;

int i,j=0;

int main ()
{
	char m;  // switch menù iniziale

	do
	{
		system("cls");
		printf("+------------------------------------------------------------------------------+");
		printf("|                                                                              |"); 
		printf("|                               TENDI LA TRAPPOLA                              |"); 
		printf("|                                                                              |"); 
		printf("+------------------------------------------------------------------------------+\n\n\n\n");
		printf("          +---------------------------------------------------------+\n");
		printf("          |                  Per la Guida premi \"G\"                 |\n");
		printf("          +---------------------------------------------------------+\n");
		printf("          |            Per Iniziare una partita premi \"I\"           |\n");
		printf("          +---------------------------------------------------------+\n");
		printf("          |                   Per Uscire premi \"E\"                  |\n");
		printf("          +---------------------------------------------------------+\n\n\n");
		printf(" Cosa vuoi fare? ");
		fflush(stdin);
		//m = getch(); mah...
		scanf("%1c",&m);
		switch (m) //switch per scegliere le opzioni del menù
		{
		   case 'g':
		   case 'G':
		   fflush(stdin);
		   guida();
		   break;
		   case 'i':
		   case 'I':
		   inizioGioco();
		   break;
		   case 'e':
		   case 'E':
		   system("cls");
		   printf("Grazie di aver giocato con noi\n\n\n");
		   exit(0);
		   default:
		   printf("\nHai sbagliato a digitare, presta maggiore attenzione alle scritte \n\n\n");
		   system("pause");  
		   system("cls");
		}

	} //fine do
	while(1);

}

void inizioGioco()
{
	char player[2][10];
	int pallinerosse=0;
    int pallineblu=0;
	int Piano_1[16][16]={
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0}, 
                        {0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0},                          
                        {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0}, 
                        {0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0},
                        {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};  
  int Piano_2[16][16] = {
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0},
                        {0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
                        {0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0},
                        {0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
  int Tavolo[16][16] =  {
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,3,1,1,1,1,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0},
                        {0,0,0,0,1,5,1,3,1,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,1,1,5,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,3,1,5,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0},
                        {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                        };




	struct cella *testa;
	testa = NULL;
	int rigaScelta=0;
	int latoScelto=0; 
	int colonnaScelta=0;
	int versoScelto=0;
	int counter=0; //serve per decidere il giocatore,e tiene il conto delle mosse vere e proprie
    
    /***** Counter # mosse sx(--), dx(++), up(++), dw(--) *****/
    int counter_Righe[16]   ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    int counter_Colonne[16] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    int scelta=0;
    int gioca=1;
    inserireNomiGiocatori(player);
    //credo debba iniziare il ciclo
    while(gioca)
    {
        rigaScelta=0;
        latoScelto=0;
        colonnaScelta=0;
        versoScelto=0;
        mossa=0;
        pallinerosse=0;
        pallineblu=0;
    	stampaTavoloDaGioco(Tavolo, &pallinerosse, &pallineblu);
    	controlloVittoria(pallinerosse, pallineblu, player, &gioca);
		if (gioca==0)  //ho dovuto aggiungere altrimenti andava avanti
			return;
		puliziaTavolo(Tavolo);
    	if (stampalista == 1)
    		stampaLista();
    	/* INIZIO DEL GIOCO */
        printf("\n\t\t\tTurno di ");
        if (counter % 2!=0) printf("%s",player[1]);
        else printf("%s", player[0]); 
        //time(&start);
        fflush(stdin);
    	printf("\n\npremi \"E\" per uscire, \"G\" per la guida, \"A\" per annullare e \"L\" per la legenda.");
        printf("\nVuoi spostare una riga o una colonna? ");
        printf("\nPer spostare una riga premi \"R\"\n");
        printf("Per spostare una colonna premi \"C\"\n");
        printf("Scelta: ");
        scanf("%1c",&scelta);
        switch(scelta)
        {
           case 'R':
           case 'r':
    		   spostaRiga(Piano_1, counter_Righe, &rigaScelta, &latoScelto);
    		   break;
    	   case 'C':
    	   case 'c':
    		   spostaColonna(Piano_2, counter_Colonne, &colonnaScelta, &versoScelto);
    		   break;
    	   case 'e':
           case 'E':
               system("cls");
      	       printf("Grazie di aver giocato con noi\n\n\n");
      	       exit(0);
               break;
           case 'l':
           case 'L':
               system("cls");
               printf("\t\tLEGENDA\n");
               printf("B sono le palline blù del giocatore 1\n");
               printf("R sono le palline rosse del giocatore 2\n");
               printf("@ sono i buchi in cui le palline possono cadere\n\n");
               system("pause");
               break;
           case 'g':
           case 'G':
    	       fflush(stdin);
               guida();
    		   break;
		   case 'a':
		   case 'A':
			   annullaMossa(&testa);
			   counter--;
			   break;
    	   default:
               printf("Attenzione, errore di battitura\n\n");
               system("pause");
    		   break;
        }
        //time(&finish);
        //duration = difftime(finish, start);
        /*for (i=0;i<l;i++)
                {
                printf("%d %d %d %d\n",i,senso[i],numerolistello[i],direzione[i]);
                }    
            	nuovoElemento = (struct cella*)malloc(sizeof(struct cella));
                if (nuovoElemento == NULL)
                    {
                        printf("\n\n Errore nell\'allocazione della memoria.\n Il programma verra\' chiuso!\n ");
                        system("pause");                    
                        exit(1);
                    }
                    nuovoElemento->secondi = duration;
                    nuovoElemento->next = testa; 
                    testa = nuovoElemento;
                    tot++;*/
        if (mossa)  //solo se è stata eseguita una mossa vera e propria viene aumentato il counter e fatto il salvataggioMosse
		{
			counter++;
			salvataggioMosse(&testa,scelta,rigaScelta,latoScelto,colonnaScelta,versoScelto,counter,Piano_1,Piano_2);
			stampaMosse(testa);
		}
		system("pause");                    
		controlloBuchi(Piano_1, Piano_2, Tavolo);
        
    }    
	system("pause");
	return;
}

void inserireNomiGiocatori(char giocatori[2][10]) //ok
{
	system("cls");
    printf("Inizio Gioco");
    for (i = 0; i < 2; i++)
    {
	   printf("\nInserire il nome del giocatore %d: ",i+1);
	   fflush(stdin);
	   scanf("%s",giocatori[i]);
    }
    system("cls");
    printf("\n\n%s giochera\' contro %s\n\n\n",giocatori[0],giocatori[1]);
    system("pause");
	return;
}
 
void guida()  //ok
{
    system("cls");
    printf("\t\tGUIDA\n\n");
    printf("Gioco per due giocatori\n");
    printf("Obbiettivo: Lo scopo del gioco e\' far cadere tutte le palline dell'avversario intrappola.\n");
    printf("E' un gioco a turni che si svolge su di una griglia 8*8.\n");
    printf("Ogni giocatore avrà 10 palline e ad ogni turno deve spostare un listello,\norizzontale o verticale, a sua scelta di una posizione.\n");
    printf("Ogni listello presenta dei buchi sulla sua superficie.\n");
    printf("Se due buchi si trovano uno sopra l'altro generano una cavità e la pallina che  si trova sopra la griglia cade.\n");
    printf("Per fare iniziare i due giocatori in condizioni di equita\' all'inizio del gioco non potra\' esserci gia\' un buco\n");
    printf("Vince chi per primo riesce a far cadere in trappola le palline avversarie.\n\n");
    system("pause");
    system("cls");
    return;
}

void stampaTavoloDaGioco(int Tavolo1[16][16],int *pallinerosse1,int *pallineblu1) //ok
{
   /***** STAMPA DEL TAVOLO DA GIOCO e conteggio palline *****/
   printf("+------------------------------------------------------------------------------+");
   printf("|                                                                              |"); 
   printf("|                               TENDI LA TRAPPOLA                              |"); 
   printf("|                                                                              |"); 
   printf("+------------------------------------------------------------------------------+");
   printf("\t\t\t\t 1-2-3-4-5-6-7-8\n");
   printf("\t\t\t\t+---------------+\n");
   for (i=4; i<12; i++) 
   {
       printf("\t\t\t\t|");
       for (j=4; j<12; j++)         
       {
           if (Tavolo1[i][j]!=1)
           {
              if (Tavolo1[i][j]==5)
                 { 
                 printf("R|",Tavolo1[i][j]);
                 *pallinerosse1 +=1;
                 }    
              else 
                 {
                    if (Tavolo1[i][j]==3) 
                    {
                    printf("B|",Tavolo1[i][j]);
                    *pallineblu1 +=1;
                    }    
                    else 
                       printf("@|",Tavolo1[i][j]);
			        }
		   }
           else printf("%d|",Tavolo1[i][j]);
       }
       printf("\n");
   }                           
   printf("\t\t\t\t+---------------+\n");
   return;
}

void controlloVittoria(int pallinerosse1,int pallineblu1,char giocatori[2][10],int *gioca1) //ok
{
   /* Calcolo palline rimanenti ai player */
   printf("%s ha %d pallin",giocatori[0],pallineblu1); 
   if (pallineblu1==1)
	   printf("a\n");
   else 
	   printf("e\n"); 
   printf("%s ha %d pallin",giocatori[1],pallinerosse1);
   if (pallinerosse1==1)
	   printf("a\n");
   else printf("e\n");
   /* Controllo condizioni di vittoria */
   if (pallineblu1==0 || pallinerosse1==0)
   {
		printf("\n\n\t\t\t\tPARTITA CONCLUSA");           
		if (pallineblu1==0 && pallinerosse1!=0) 
		{
           printf("\n\n\n\t\t\t\t VINCE %s\n\n",giocatori[0]);
           stampalista=1;
           *gioca1=0;
           system("pause");
        }				
        if (pallinerosse1==0 && pallineblu1!=0 )
		{
            printf("\n\n\n\t\t\t\t VINCE %s\n\n",giocatori[1]);
            stampalista=1;
            *gioca1=0;
            system("pause");
        }				
        if (pallinerosse1==0 && pallineblu1==0) 
		{	
            printf("\n\n\n\t\t\t\t PAREGGIO\n\n");
            stampalista=1;
            *gioca1=0;
            system("pause");
        }	
   }
   //*gioca1=0;
}

void puliziaTavolo(int Tavolo1[16][16])  //da controllare
{
   int i,j=0;
   for (i=0; i<16; i++)
   {
	   for (j=0; j<16; j++)
	   {
		   if (Tavolo1[i][j] == 8)
		   {
				Tavolo1[i][j]=1;
		   }    
	   }
   }
}


void stampaLista() //mancano ancora dei dati che vengono utilizzati dalla funzione
{
	printf("stampa lista");
   /*system("cls");
   printf("\n\n STAMPA ELENCO MOSSE\n\n");
   tem = testa; 
   l--;
   while (tem != NULL)
      {
         if (tot % 2!=0) printf("%s",player[0]);
         else printf("%s", player[1]); 
         printf(" ha mosso la");
         printf(" %d ^ ",numerolistello[l]);
         if(senso[l]==1) printf(" righa ");
         else 
         {
             if (senso[l]==2) printf(" colonna ");
             else
             printf("%d",senso[l]);
         }    
         printf("verso ");
         if (senso[l] == 1 && direzione[l] == 1) printf("sinistra");
         else
         if (senso[l] == 1 && direzione[l] == 2) printf("destra");
         if (senso[l] == 2 && direzione[l] == 1) printf("l'alto");
         if (senso[l] == 2 && direzione[l] == 2) printf("il basso");
         printf(" ed ha effettuato la %d^ mossa in %f secondi \n",(tot),tem->secondi);
         tem = tem->next;
         tot--;
         count++;
         --l;
      }
   printf("\n\nStampate %d mosse\n ",count);
   system("pause");
   return;*/
}

void spostaRiga(int Piano1[16][16], int counter_Righe1[16],int *sceltaRiga,int *sceltaLato)
{
   int errore1=1;
   int errore2=1;
   //int sceltaRiga=0;
   //int sceltaLato=0;
   int temp=0;
   //senso[l]=1;
   while (errore1)
   {
	   /* Sposta riga orizzontalmente (piano 1) */
	   printf("Inserisci la riga da spostare(1-2-3-4-5-6-7-8): ");
	   scanf("%1d",&*sceltaRiga);
	   if (*sceltaRiga>0 && *sceltaRiga<9)
	   {
		   errore1 = 0;
		   //numerolistello[l]=b;
       }	   
       else
		   printf("Hai sbagliato a digitare, riprova!\n");
   }
   *sceltaRiga = *sceltaRiga+4;
   while (errore2)
   {
	   printf("Vuoi spostare a sinistra (premi '1') o a destra (premi '2')? ");
	   scanf("%d",&*sceltaLato);
	   if (*sceltaLato == 1 || *sceltaLato == 2)
       {
		   errore2 = 0;
		   //direzione[l]=sceltaLato;
		   //l++;
       }	   
       else 
		   printf("Hai sbagliato a digitare, riprova!\n");
   }
	   fflush(stdin);
	   if (*sceltaLato == 1) 
	   {    
			counter_Righe1[*sceltaRiga-1]--;
			if (counter_Righe1[*sceltaRiga-1]==-4)
			{
				printf("\nE\' l'ultima volta che puoi spostare a sinistra questa bacchetta");
				system("pause");
			}     
			for (i=0,temp = Piano1[*sceltaRiga-1][i]; i<15; i++)
			{
			  Piano1[*sceltaRiga-1][i] = Piano1[*sceltaRiga-1][i+1]; //sposta la riga a sinistra
			} 
			Piano1[*sceltaRiga-1][i]= temp;
	   }
       if (*sceltaLato == 2)
	   {        
		   counter_Righe1[*sceltaRiga-1]++; 
		   if (counter_Righe1[*sceltaRiga-1]==4)
		   {
				printf("\nE\' l'ultima volta che puoi spostare a destra questa bacchetta");
				system("pause");
		   }           
       for (i=15,temp = Piano1[*sceltaRiga-1][i]; i>0; i--)
       {
           Piano1[*sceltaRiga-1][i] = Piano1[*sceltaRiga-1][i-1]; //sposta la riga a destra
       } 
       Piano1[*sceltaRiga-1][i]= temp;
	   }
	   
	   mossa=1;
}

void spostaColonna(int Piano2[16][16], int counter_Colonne1[16],int *sceltaColonna,int *sceltaVerso)
{
	/****** Sposta colonna verticalmente (piano 2) ******/ 
    int errore1=1;
    int errore2=1;
    //int sceltaColonna=0;
    //int sceltaVerso=0;
    int temp=0;
    //senso[l]=2;
    while (errore1)
    {
	    printf("Inserisci la colonna da spostare(1-2-3-4-5-6-7-8): ");    
	    scanf("%1d",&*sceltaColonna);
	    if (*sceltaColonna>0 && *sceltaColonna<9)
		{
		    errore1 = 0;
		    //numerolistello[l]=sceltaColonna;
		}	   
	    else
		    printf("Hai sbagliato a digitare, riprova! \n");
    }
	*sceltaColonna = *sceltaColonna+4;
	while (errore2)
	{
		printf("Vuoi spostare in alto (premi '1') o in basso (premi '2')? ");
		scanf("%d",&*sceltaVerso);
		if (*sceltaVerso == 1 || *sceltaVerso == 2)
		{
		   errore2 = 0;
		   //direzione[l]=sceltaVerso;
		   //l++;
        }	   
		else 
		   printf("Hai sbagliato a digitare, riprova! \n");
	}
	fflush(stdin);
    if (*sceltaVerso == 1)
    {
       counter_Colonne1[*sceltaColonna-1]++;
       if (counter_Colonne1[*sceltaColonna-1]==4)
       {
           printf("\nE\' l'ultima volta che puoi spostare in alto questa bacchetta");
           system("pause");
       }    
       for (i=0, temp= Piano2[i][*sceltaColonna-1]; i<15; i++)
       {  
           Piano2[i][*sceltaColonna-1] = Piano2[i+1][*sceltaColonna-1];  //sposta in alto
       }
	   Piano2[i][*sceltaColonna-1]= temp;
   }
   if (*sceltaVerso == 2)  
   {   
       counter_Colonne1[*sceltaColonna-1]--;
       if (counter_Colonne1[*sceltaColonna-1]==-4)
       {
           printf("\nE\' l'ultima volta che puoi spostare in basso questa bacchetta\n");
           system("pause");
       }
       for (i=15, temp=Piano2[i][*sceltaColonna-1]; i>0; i--)
       {  
           Piano2[i][*sceltaColonna-1] = Piano2[i-1][*sceltaColonna-1];  //sposta in basso
       }
	   Piano2[i][*sceltaColonna-1]= temp;
	 }
   
   mossa=1;
}

void controlloBuchi(int Piano1[16][16], int Piano2[16][16], int Tavolo1[16][16])
{
   /* Controllo buchi */   
   for (i=0; i<16; i++)
   {
       for (j=0; j<16; j++)
       {
           if (Piano1[i][j] == 1 && Piano2[i][j] == 1)
           {
           Tavolo1[i][j]=8;
           }    
       }
   }
}

void salvataggioMosse(struct cella **t, char scelta1,char sceltaRiga1,char sceltaLato1,char sceltaColonna1,char sceltaVerso1,int counter1,int Piano1[16][16],int Piano2[16][16])
{
    struct cella *nuovoElemento;
    
    nuovoElemento = (struct cella*)malloc(sizeof(struct cella));
    if (nuovoElemento == NULL)
    {
        printf("\n\n Errore nell\'allocazione della memoria.\n Il programma verra\' chiuso!\n ");
        system("pause");                    
        exit(1);
    }
    nuovoElemento->sceltaRigaColonna = scelta1;
    nuovoElemento->sceltaRigaS = sceltaRiga1;
    nuovoElemento->sceltaLatoS = sceltaLato1;
    nuovoElemento->sceltaColonnaS = sceltaColonna1;
    nuovoElemento->sceltaVersoS = sceltaVerso1;
    nuovoElemento->counterS = counter1;
    nuovoElemento->Piano1S = Piano1;
    nuovoElemento->Piano2S = Piano2;
    nuovoElemento->next = *t; 
    *t = nuovoElemento;
}

void stampaMosse(struct cella *t)
{
    printf("\n");
    if (t == NULL)
    {
        printf(" La pila e\' vuota!\n");
        return;
    }
    
    do
	{
        printf(" \nMOSSA NUMERO: %i\n",t->counterS);
        printf(" scelta riga o colonna: %c\n",t->sceltaRigaColonna);
        if (t->sceltaRigaS !=0) printf(" numero di riga scelto: %i\n",t->sceltaRigaS-4);
        else printf(" numero di riga scelto: %i\n",t->sceltaRigaS);
        printf(" lato di spostamento scelto: %i\n",t->sceltaLatoS);
        if ( t->sceltaColonnaS !=0 ) printf(" numero di colonna scelta: %i\n",t->sceltaColonnaS-4);
        else printf(" numero di colonna scelta: %i\n",t->sceltaColonnaS);
        printf(" verso di spostamento scelto: %i\n",t->sceltaVersoS);
        
        t = t->next;
    } while(t != NULL); 
}

struct cella * pop(struct cella **t)
{
    struct cella *temp;

    if (*t == NULL)
        return NULL;
    temp = *t;
    *t = (*t)->next;
    temp->next = NULL; 
    return temp;
}

void annullaMossa(struct cella **t)
{
    struct cella *temp;
    temp = pop(t);
    if (temp != NULL)
    free(temp);
    
}
__________________
.

Ultima modifica di ::::Dani83:::: : 30-12-2005 alle 18:14.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:17   #10
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
non puoi in c copiare array come se fosse una normale variabile.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:21   #11
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
Quote:
Originariamente inviato da Fenomeno85
non puoi in c copiare array come se fosse una normale variabile.

~§~ Sempre E Solo Lei ~§~
uhmm.... come posso copiare una matrice in una struttura allora? faccio un ciclo che copia ogni elemento dell'array?
__________________
.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:25   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da ::::Dani83::::
uhmm.... come posso copiare una matrice in una struttura allora? faccio un ciclo che copia ogni elemento dell'array?
allora il c in questo senso non l'ho mai capito forse qualche guru potrà spiegarmelo .. ma il c ha il "difetto" che non puoi fare un copia di un array per tutto il resto invece si ... esempio anche di strutture contenenti array

Sto vedendo se esiste una funzione del genere oppure con i puntatori se è possibile fare qualcosa. Se erano stringhe so che esiste strcpy

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:36   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
nisba ti tocca fare uso del for oppureint usare http://msdn.microsoft.com/library/de...scopytopic.asp

ma funziona solo sotto windows

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 18:41   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da ::::Dani83::::
ahmm.... come si passa una matrice ad una struttura? scusate se stresso ma ho cercato su google e sul manuale che ho ma nn ho trovato nulla
se la passo così:
nuovoElemento->Piano1S = Piano1;

mi dice:
error C2440: '=' : cannot convert from 'int [][16]' to 'int [16][16]'
devo passargliela tramite un doppio puntatore?
No, un array non viene passato per valore ad una funzione. Viene passato solo il puntatore al primo elemento dell'array. Quindi Piano1 e Piano2 (i parametri di salvataggioMosse) sono nient'altro che dei puntatori.

Ti posso dare semmai un piccolo suggerimento. Visto che hai molti dati nella struttura cella (e magari ne aggiungerai altri), puoi fare una cosa del genere:
Codice:
struct daticella
{
   ...tutti i tuoi dati...
};

struct cella
{
    struct daticella dati;
    struct cella *next;
};
e alla funzione che inserisce passi un puntatore alla daticella e poi la copi con una memcpy nella cella che hai allocato con malloc.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2005, 01:05   #15
::::Dani83::::
Senior Member
 
Iscritto dal: Jul 2003
Città: Rimini
Messaggi: 3392
grazie mille, problema risolto grazie a voi
__________________
.
::::Dani83:::: è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2005, 11:23   #16
river
Senior Member
 
L'Avatar di river
 
Iscritto dal: Dec 2001
Città: Verona
Messaggi: 7337
è servito pure a me
__________________
se la casella mp è full (quasi sempre) ...per info mandate e-mail che è gradita
river è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
Donald Trump torna sui suoi passi: Jared...
Il razzo spaziale europeo Arianespace Ar...
La Luna è stata colpita da un pic...
Creative Aurvana Ace 3: il futuro dell'a...
AMD chiarisce una volta per tutte (si sp...
Super sconti sui Google Pixel: Pixel 10,...
Addio SRAM? La nuova tecnologia GCRAM pr...
La repubblicana Anna Paulina Luna chiede...
1.000 Hz, risoluzione HD Ready: il futur...
Polestar 4 legge la strada al tuo posto:...
Mercato auto in Italia: vola l'elettrico...
Gli AI browser aggirano i paywall: i cas...
MSI regala Football Manager 26 con sched...
Come va in casa Broadcom/VMware? Computa...
Startup Marathon 2025: chi sono le 12 az...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v