Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C] funzioni e matrici

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24

    [C] funzioni e matrici

    salve a tutti e' un po' che sono bloccato con questo errore :
    codice:
    #include <stdio.h>#include <stdlib.h>
    #include <time.h>
    #include <string.h>
    
    
    #define dim 40
    
    
    void visualizza(int[][10], const char*,const char*);
    
    
    int main(void)
    {
    
    
     const char *seme[4]={"Bastoni","Denari","Spade","Coppe"};
     const char *val[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci"};
     int deck[4][10]={0};
    
    
     int j,m,n;
     int scl;
     int sess;
     int nome[dim];
     int i;
    
    
     do{
         printf("--------------------\n");
         printf("Sei maschio o femmina?\n");
         printf("1)Maschio\n");
         printf("2)Femmina\n");
         scanf("%d", &sess);
    
    
         if(sess < 1 || sess > 2){
                 printf("Errore hai inserito dei parametri invalidi\n");
                 }
         }while(sess < 1 || sess > 2);
    
    
         printf("Come ti chiami?\n");
         scanf("%s" ,&nome);
    
    
         do{
                    printf("\n\n-----Alla Briscola Del Nonno-----\n\n");
                    if(sess == 1)
                    printf("Benvenuto %s scegli cosa vuoi fare\n" ,nome);
                    if(sess == 2)
                    printf("benvenuta %s scegli cosa vuoi fare\n" ,nome);
                    printf("1)Voglio vedere il mazzo di carte\n");
                    printf("2)Voglio giocare contro un amico\n");
                    printf("0)Esci\n");
                    scanf("%d" ,scl);
    
    
                    switch(scl){
    
    
                                case 1:
    
    
    
    
                                    visualizza(deck, seme, val);
    
    
                                     break;
    
    
                    }
    
    
    
    
    
    
                    }while(scl != 0);
    
    
         return 0;
    
    
    
    
    }
    
    
    
    
    void visualizza(int wdeck[][10], const char *seme, const char*val)
    {
        int riga;
        int colonna;
        int carta;
    
    
        for(carta=1; carta<=40; carta++){
            for(riga=0; riga< 3; riga++){
                for(colonna=0; colonna <9; colonna++){
                    printf("%5s of %-8s" ,wdeck[colonna], wdeck[riga]);
    
    
                }
            }
            printf("\n");
        }
    
    
    }
    non riesco a capire perchè quando tento di visualizzare la matrice mi va in blocco tutto :| sto usando codeblock e sono con windows 7 se può servire

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quel codice non dovrebbe neanche compilare (come in effetti succede con Visual C++) perché ci sono errori nel tipo di parametri passati alla funzione visualizza. Come fai quindi ad eseguirlo?

    Inoltre l'argomento seme non viene mai usato al suo interno ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Quel codice non dovrebbe neanche compilare (come in effetti succede con Visual C++) perché ci sono errori nel tipo di parametri passati alla funzione visualizza. Come fai quindi ad eseguirlo?

    Inoltre l'argomento seme non viene mai usato al suo interno ...
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    
    
    #define dim 40
    
    
    void visualizza(int[][10]);
    
    
    int main(void)
    {
    
    
     const char *seme[4]={"Bastoni","Denari","Spade","Coppe"};
     const char *val[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci"};
    
    
     int deck[4][10]={0};
    
    
     int j,m,n;
     int scl;
     int sess;
     int nome[dim];
     int i;
    
    
     do{
         printf("--------------------\n");
         printf("Sei maschio o femmina?\n");
         printf("1)Maschio\n");
         printf("2)Femmina\n");
         scanf("%d", &sess);
    
    
         if(sess < 1 || sess > 2){
                 printf("Errore hai inserito dei parametri invalidi\n");
                 }
         }while(sess < 1 || sess > 2);
    
    
         printf("Come ti chiami?\n");
         scanf("%s" ,&nome);
    
    
         do{
                    printf("\n\n-----Alla Briscola Del Nonno-----\n\n");
                    if(sess == 1)
                    printf("Benvenuto %s scegli cosa vuoi fare\n" ,nome);
                    if(sess == 2)
                    printf("benvenuta %s scegli cosa vuoi fare\n" ,nome);
                    printf("1)Voglio vedere il mazzo di carte\n");
                    printf("2)Voglio giocare contro un amico\n");
                    printf("0)Esci\n");
                    scanf("%d" ,scl);
    
    
                    switch(scl){
    
    
                                case 1:
    
    
    
    
                                    visualizza(deck);
    
    
    
    
    
    
                                     break;
    
    
                    }
    
    
    
    
    
    
                    }while(scl != 0);
    
    
         return 0;
    
    
    
    
    }
    
    
    
    
    void visualizza(int wdeck[][10])
    {
        int riga;
        int colonna;
        int carta;
    
    
        for(carta=1; carta<=40; carta++){
            for(riga=0; riga< 3; riga++){
                for(colonna=0; colonna <9; colonna++){
                    printf("%5s of %-8s" ,wdeck[colonna], wdeck[riga]);
    
    
                }
            }
            printf("\n");
        }
    
    
    }

    Ho provato a correggere così, ma ancora non funziona ... :|

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    A parte il fatto che i cicli nella visualizzazione sono da ripensare, mi spieghi cosa dovresti vedere dato che l'array deck è vuoto e non viene riempito dal programma?

    P.S. A parte il fatto che questa

    scanf("%d",scl);

    dovrebbe essere


    scanf("%d", &scl);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24
    Ok, allora sto notando di avere problemi con le matrici( in quanto poco viste e poco affrontate )

    Allora in primo luogo oregon grazie per i chiarimenti

    ora mi sto interrogando sul seguente quesito :

    Io ho i due
    codice:
     const char *seme[4]={"Bastoni","Denari","Spade","Coppe"}; const char *val[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci"};
    e

    il nostro int deck[4][10]


    c'è un modo per inizializzare la matrice con all'interno gli elementi dei due vettori ( in maniera non random) precedenti ? sarebbe corretto come linea di pensiero ? ( Mi basta e avanzano anche risposte telegrafiche: si, il modo è quello ------ no, stai toppando tutto )


    ( non so se sono stato proprio chiaro )

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Per darti un'idea ...

    codice:
    const char *seme[4]={"Bastoni","Denari","Spade","Coppe"};
    const char *val[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci"};
    
    
    
    
    typedef struct
    {
    	int seme;
    	int valore;
    } carta;
    
    
    
    
    void visualizza(carta m[40]);
    
    
    int main(void)
    {
    	carta mazzo[40];
    	int s, valore, carta;
    
    
    	for(s=0; s<4; s++)
    		for(valore=0; valore<10; valore++)
    		{
    			carta = s*10+valore;
    			mazzo[carta].seme = s;
    			mazzo[carta].valore = valore;
    		}
    
    
    	visualizza(mazzo);
    	
    	return 0;
    }
    
    
    
    
    void visualizza(carta m[40])
    {
    	int s, valore, carta;
    
    
    	for(s=0; s<4; s++)
    	{
    		for(valore=0; valore<10; valore++)
    		{
    			carta = s*10+valore;
    
    
    			printf("%s di %s, ", val[m[carta].valore], seme[m[carta].seme]);
    		}
    		printf("\n\n");
    	}
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24
    non potendo utilizzare le strutture e\o liste, non sarei mai arrivato alla tua soluzione...però così mi hai dato il " la " per cominciare a introdurle grazie 1000 per la spiegazione, appena avrò la mia soluzione la condivido al volo !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.