Aiuto: Triangolo di carte(numeri)

di il
99 risposte

99 Risposte - Pagina 5

  • Re: Aiuto: Triangolo di carte(numeri)

    Siiiiiiiiiiiiiiiiiiiiiiii
    si ferma il programma e c'è ancora un doppione però credo si sia proprio verso la fine
    Guarda
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    void visualizza_numeri(int numeri[], int num);
    void visualizza_base(int b[][5], int numeri_base);
    void visualizza_array_b(int b[5][5], int rig, int col);
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat);
    void sottrazioni(int b[][5], int rig, int col);
    int controllo(int b[5][5], int n);
    int controllo_piramide(int b[5][5]);
    
    int main()
    
    {
        int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    
        srand(time(0));
        int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
        viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
        int num=15, numeri_base=5;
        int rig=5, col=5;
    
        printf("Numeri da utilizzare: ");
    
        visualizza_numeri(numeri, num);
    
        printf("\n\n");
    
        printf("Array A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n");
    
        int num_norepeat=5;
    
    do{
        genera_numeri_senza_ripetizione_base(b,num_norepeat);
        visualizza_base(b,numeri_base);
    
    
        printf("\n\n\n");
    
        sottrazioni(b,rig,col);
    
        printf("\n");
        /*controllo numeri che ci sono di n da 1 a 15 presenti*/
    
        printf("%d", controllo_piramide(b));
    
    printf("\n\n");
    
    
    for(int n=1; n<=15; n++)
        {
    
            printf("%d", controllo(b,n));
    
        }
    
    printf("\n\n");
    
    
    }
    
            while(controllo_piramide(b)==1);
    
    
                visualizza_array_b(b,5,5);
    
    
    }
    
    
    
    
    void visualizza_numeri(int numeri[], int num)
    {
        int i;
        for(i=0; i<num; i++)
        printf("%3d", numeri[i]);
    
    }
    
    
    void visualizza_base(int b[][5], int numeri_base)
    {
        int i;
        for(i=0; i<numeri_base; i++)
        {printf("%3d", b[4][i]);}
    }
    
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat)
    {
        int i, j;
        int *base=b[4];
        for(i=0; i<num_norepeat; i++)
        {
            base[i]=1+rand()%15;
            for(j=0; j<i; j++)
            {
                if(base[i]==base[j])
                {
                    i--;
                    break;
                }
            }
    
        }
    
    }
    
    void sottrazioni(int b[][5], int rig, int col)
    {
    
        for(rig=3; rig>=0; --rig)
            {
                for(col=rig; col>=0; --col)
                {
                    b[rig][col]=b[rig+1][col]-b[rig+1][col+1];
                    if(b[rig][col]<0)
                        {
                            b[rig][col]=b[rig][col]*-1;
                        }
    
                }
    
            }
    
    }
    
    
    int controllo(int b[5][5], int n)
    {
        int i, j;
        for (i = 0 ; i<5 ; i++ )
        {
            for(j=0; j<5; j++)
    
            {if ( b[i][j] == n )
    
                {
                    return 1;
                }
    
            }
        }
                    return 0;
    }
    
    
    void visualizza_array_b(int b[5][5], int rig, int col)
    {
    
    int i,j;
        for(i=0; i<rig; i++)
        {
            for(j=col; j>i; --j)
            {printf("     ");}
    
        for(j=0; j<=i; j++)
        printf("  %3d     ", b[i][j]);
    printf("\n\n\n");
    
    }
    }
    
    int controllo_piramide(int b[5][5])
    {
        int n;
        for(n=1; n<=15; ++n)
        {
            if(controllo(b,n)==0)
            {
                return 1;
            }
        }
    return 0;
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Ecco qua, ho corretto qlc contatore ed ora sembra corretto guarda Nippolo
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    void visualizza_numeri(int numeri[], int num);
    void visualizza_base(int b[][5], int numeri_base);
    void visualizza_array_b(int b[5][5], int rig, int col);
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat);
    void sottrazioni(int b[][5], int rig, int col);
    int controllo(int b[5][5], int n);
    int controllo_piramide(int b[5][5]);
    
    int main()
    
    {
        int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    
        srand(time(0));
        int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
        viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
        int num=15, numeri_base=5;
        int rig=5, col=5;
    
        printf("Numeri da utilizzare: ");
    
        visualizza_numeri(numeri, num);
    
        printf("\n\n");
    
        printf("Array A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n");
    
        int num_norepeat=5;
    
    do{
        genera_numeri_senza_ripetizione_base(b,num_norepeat);
        visualizza_base(b,numeri_base);
    
    
        printf("\n\n\n");
    
        sottrazioni(b,rig,col);
    
        printf("\n");
        /*controllo numeri che ci sono di n da 1 a 15 presenti*/
    
        printf("%d", controllo_piramide(b));
    
    printf("\n\n");
    
    
    for(int n=1; n<=15; ++n)
        {
    
            printf("%d", controllo(b,n));
    
        }
    
    printf("\n\n");
    
    
    }
    
            while(controllo_piramide(b)==1);
    
    
                visualizza_array_b(b,5,5);
    
    
    }
    
    
    
    
    void visualizza_numeri(int numeri[], int num)
    {
        int i;
        for(i=0; i<num; i++)
        printf("%3d", numeri[i]);
    
    }
    
    
    void visualizza_base(int b[][5], int numeri_base)
    {
        int i;
        for(i=0; i<numeri_base; i++)
        {printf("%3d", b[4][i]);}
    }
    
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat)
    {
        int i, j;
        int *base=b[4];
        for(i=0; i<num_norepeat; i++)
        {
            base[i]=1+rand()%15;
            for(j=0; j<i; j++)
            {
                if(base[i]==base[j])
                {
                    i--;
                    break;
                }
            }
    
        }
    
    }
    
    void sottrazioni(int b[][5], int rig, int col)
    {
    
        for(rig=3; rig>=0; --rig)
            {
                for(col=rig; col>=0; --col)
                {
                    b[rig][col]=b[rig+1][col]-b[rig+1][col+1];
                    if(b[rig][col]<0)
                        {
                            b[rig][col]=b[rig][col]*-1;
                        }
    
                }
    
            }
    
    }
    
    
    int controllo(int b[5][5], int n)
    {
        int i, j;
        for (i = 0 ; i<5 ; i++ )
        {
            for(j=0; j<5; j++)
    
            {if ( b[i][j] == n )
    
                {
                    return 1;
                }
    
            }
        }
                    return 0;
    }
    
    
    void visualizza_array_b(int b[5][5], int rig, int col)
    {
    
    int i,j;
        for(i=0; i<rig; i++)
        {
            for(j=col; j>i; --j)
            {printf("     ");}
    
        for(j=0; j<=i; j++)
        printf("  %3d     ", b[i][j]);
    printf("\n\n\n");
    
    }
    }
    
    int controllo_piramide(int b[5][5])
    {
        int n;
        for(n=1; n<=15; ++n)
        {
            if(controllo(b,n)==0)
            {
                return 1;
            }
        }
    return 0;
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Ecco ora è più ordinato, ma mi esce ancora solo 1 doppione...
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    void visualizza_numeri(int numeri[], int num);
    void visualizza_base(int b[][5], int numeri_base);
    void visualizza_array_b(int b[5][5], int rig, int col);
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat);
    void sottrazioni(int b[][5], int rig, int col);
    int controllo(int b[5][5], int n);
    int controllo_piramide(int b[5][5]);
    
    int main()
    
    {
        int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    
        srand(time(0));
        int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
        viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
        int num=15, numeri_base=5;
        int rig=5, col=5;
    
        printf("Numeri da utilizzare: ");
    
        visualizza_numeri(numeri, num);
    
        printf("\n\n");
    
        printf("Array A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n");
    
        int num_norepeat=5;
    
    do{
        genera_numeri_senza_ripetizione_base(b,num_norepeat);
    
        sottrazioni(b,rig,col);
    
    
            }while(controllo_piramide(b)==1);
    
                visualizza_base(b,numeri_base);
                printf("\n\n\n");
                printf("%d", controllo_piramide(b));
                printf("\n");
                visualizza_array_b(b,5,5);
                for(int n=1; n<=15; ++n)
        {
    
            printf("%d", controllo(b,n));
    
        }
    
    }
    
    
    
    
    void visualizza_numeri(int numeri[], int num)
    {
        int i;
        for(i=0; i<num; i++)
        printf("%3d", numeri[i]);
    
    }
    
    
    void visualizza_base(int b[][5], int numeri_base)
    {
        int i;
        for(i=0; i<numeri_base; i++)
        {printf("%3d", b[4][i]);}
    }
    
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat)
    {
        int i, j;
        int *base=b[4];
        for(i=0; i<num_norepeat; i++)
        {
            base[i]=1+rand()%15;
            for(j=0; j<i; j++)
            {
                if(base[i]==base[j])
                {
                    i--;
                    break;
                }
            }
    
        }
    
    }
    
    void sottrazioni(int b[][5], int rig, int col)
    {
    
        for(rig=3; rig>=0; --rig)
            {
                for(col=rig; col>=0; --col)
                {
                    b[rig][col]=b[rig+1][col]-b[rig+1][col+1];
                    if(b[rig][col]<0)
                        {
                            b[rig][col]=b[rig][col]*-1;
                        }
    
                }
    
            }
    
    }
    
    
    int controllo(int b[5][5], int n)
    {
        int i, j;
        for (i = 0 ; i<5 ; i++ )
        {
            for(j=0; j<5; j++)
    
            {if ( b[i][j] == n )
    
                {
                    return 1;
                }
    
            }
        }
                    return 0;
    }
    
    
    void visualizza_array_b(int b[5][5], int rig, int col)
    {
    
    int i,j;
        for(i=0; i<rig; i++)
        {
            for(j=col; j>i; --j)
            {printf("     ");}
    
        for(j=0; j<=i; j++)
        printf("  %3d     ", b[i][j]);
    printf("\n\n\n");
    
    }
    }
    
    int controllo_piramide(int b[5][5])
    {
        int n;
        for(n=1; n<=15; ++n)
        {
            if(controllo(b,n)==0)
            {
                return 1;
            }
        }
    return 0;
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
    Con la tua grandissima supervisione e i tuoi preziosi consigli sembra finitooooooooooooooooo e vaiiiiiiiiii grazieeeeeeeeee
    Ho solo la problematica che un solo numero a volte si ripete .....sto cercando di capire perche'....
    Però dai l'ho sistemato guarda
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    void visualizza_numeri(int numeri[], int num);
    void visualizza_base(int b[][5], int numeri_base);
    void visualizza_array_b(int b[5][5], int rig, int col);
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat);
    void sottrazioni(int b[][5], int rig, int col);
    int controllo(int b[5][5], int n);
    int controllo_piramide(int b[5][5]);
    
    int main()
    
    {
        int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    
        srand(time(0));
        int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
        viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
        int num=15, numeri_base=5;
        int rig=5, col=5;
    
        printf("Numeri da utilizzare: ");
    
        visualizza_numeri(numeri, num);
    
        printf("\n\n");
    
    
    
        int num_norepeat=5;
        int p;
    for(p=0; p<5; p++)
    {
    printf("Array A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n");
    
        do{
        genera_numeri_senza_ripetizione_base(b,num_norepeat);
    
        sottrazioni(b,rig,col);
    
    
            }while(controllo_piramide(b)==1);
    
                visualizza_base(b,numeri_base);
                printf("\n\n");
                visualizza_array_b(b,5,5);
                printf("\n-----------------------------------------------------------------------------\n");
    
    }
    }
    
    
    
    void visualizza_numeri(int numeri[], int num)
    {
        int i;
        for(i=0; i<num; i++)
        printf("%3d", numeri[i]);
    
    }
    
    
    void visualizza_base(int b[][5], int numeri_base)
    {
        int i;
        for(i=0; i<numeri_base; i++)
        {printf("%3d", b[4][i]);}
    }
    
    void genera_numeri_senza_ripetizione_base(int b[][5], int num_norepeat)
    {
        int i, j;
        int *base=b[4];
        for(i=0; i<num_norepeat; i++)
        {
            base[i]=1+rand()%15;
            for(j=0; j<i; j++)
            {
                if(base[i]==base[j])
                {
                    i--;
                    break;
                }
            }
    
        }
    
    }
    
    void sottrazioni(int b[][5], int rig, int col)
    {
    
        for(rig=3; rig>=0; --rig)
            {
                for(col=rig; col>=0; --col)
                {
                    b[rig][col]=b[rig+1][col]-b[rig+1][col+1];
                    if(b[rig][col]<0)
                        {
                            b[rig][col]=b[rig][col]*-1;
                        }
    
                }
    
            }
    
    }
    
    
    int controllo(int b[5][5], int n)
    {
        int i, j;
        for (i = 0 ; i<5 ; i++ )
        {
            for(j=0; j<5; j++)
    
            {if ( b[i][j] == n )
    
                {
                    return 1;
                }
    
            }
        }
                    return 0;
    }
    
    
    void visualizza_array_b(int b[5][5], int rig, int col)
    {
    
    int i,j;
        for(i=0; i<rig; i++)
        {
            for(j=col; j>i; --j)
            {printf("     ");}
    
        for(j=0; j<=i; j++)
        printf("  %3d     ", b[i][j]);
    printf("\n\n\n");
    
    }
    }
    
    int controllo_piramide(int b[5][5])
    {
        int n;
        for(n=1; n<=15; ++n)
        {
            if(controllo(b,n)==0)
            {
                return 1;
            }
        }
    return 0;
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Che sfilza di post!

    Quindi controllo direttamente l'ultimo codice che hai postato? Fammi sapere che appena ho tempo gli do un'occhiata.
  • Re: Aiuto: Triangolo di carte(numeri)

    Si sono un po' tanti perchè mi sembrava giusto tenerti super-presente dopo tutto il tuo supporto
    Comunque si ti prego potresti dare una controllata?Non riesco a capire perchè mi esce solo l'1 come doppione in alcune esecuzioni...
    Sono convinto di aver commesso un errore nel controllo o della prima function o nella seconda inerenti ai contatori del controllo.
  • Re: Aiuto: Triangolo di carte(numeri)

    - come già detto le funzioni visualizza_numeri() e visualizza_base() sono inutili e non credo che la loro presenza/assenza influisca sulla valutazione del prof.
    A tal proposito avrei una curiosità: superiori o università?

    - te lo richiedo... perché scrivi
    int i;
    for(i = 0; ...)
    e non
    for(int i = 0; ...)
    ??

    - nella funzione genera_numeri_senza_ripetizione_base(), l'argomento num_norepeat è superfluo;

    - anche qua come già detto... gli argomenti rig e col nelle funzioni visualizza_array_b() e sottrazioni() sono inutili;

    - la funzione visualizza_array_b() può essere scritta con solo due for.

    Sulla scorta di quanto appena detto, indentando meglio il codice e utilizzando nomi appropriati, si ottiene qualcosa del genere:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void genera_base(int m[5][5])
    {
        int *base = m[4];
        for(int i = 0; i < 5; ++i)
        {
            base[i] = 1 + rand() % 15;
            for(int j = 0; j < i; ++j)
            {
                if(base[j] == base[i])
                {
                    --i;
                    break;
                }
            }
        }
    }
    
    void sottrazioni(int m[5][5])
    {
        for(int i = 3; i >= 0; --i)
        {
            for(int j = i; j >= 0; --j)
            {
                m[i][j] = m[i + 1][j] - m[i + 1][j + 1];
                if(m[i][j] < 0)
                {
                    m[i][j] *= -1;
                }
            }
        }
    }
    
    void stampa_piramide(int m[5][5])
    {
        printf("\n\n");
        for(int i = 0; i < 5; ++i)
        {
            for(int j = 4; j >= 0; --j)
            {
                if(j > i)
                {
                    printf("  ");
                }
                else
                {
                    printf("%2d  ", m[i][j]);
                }
            }
            printf("\n\n");
        }
    }
    
    int controllo_numero(int m[5][5], int n)
    {
        for(int i = 0; i < 5; ++i)
        {
            for(int j = 0; j < 5; ++j)
            {
                if(m[i][j] == n)
                {
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int controllo_piramide(int m[5][5])
    {
        for(int n = 1; n <= 15; ++n)
        {
            if(!controllo_numero(m, n))
            {
                return 1;
            }
        }
        return 0;
    }
    
    int main()
    {
        srand(time(0));
        int m[5][5];
        for(int p = 0; p < 5; ++p)
        {
            do
            {
                genera_base(m);
                sottrazioni(m);
            }
            while(controllo_piramide(m));
            stampa_piramide(m);
            printf("-----------------------");
        }
    }
    Almeno così abbiamo una base di partenza comune da cui ragionare!

    A questo punto ti faccio notare che le funzioni controllo_numero(), controllo_piramide() e il do/while nel main, sono logicamente sbagliate.

    Iniziamo da controllo_numero()... la funzione controllerà la presenza di n nell'intera matrice m, ma a noi interessano solo gli elementi che costituiscono la piramide, e quindi gli elementi che si trovano al di sopra della diagonale principale non vanno considerati.
    Inizia ad aggiustare questa funzione e poi parliamo del resto.
  • Re: Aiuto: Triangolo di carte(numeri)

    E' un progetto per un esame universitario.
    Ah si scusa, scrivo così perchè il professore ci ha detto di dichiarare le variabili e poi dopo formare il for, magari la vede come cosa positiva.
    Scusa le ho cambiate nell'ultimo progetto salvato questo era il penultimo post, e avevo tolto num_norepeat.


    Questo è l'ultimo progetto salvato...
    Ora faccio ciò che mi hai consigliato, quindi di sistemare la function controllo_numero e ti aggiorno.
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    void visualizza_numeri(int numeri[], int num);
    void visualizza_base(int b[][5], int numeri_base);
    void visualizza_array_b(int b[5][5], int rig, int col);
    void genera_numeri_senza_ripetizione_base(int b[][5]);
    void sottrazioni(int b[][5], int rig, int col);
    int controllo(int b[5][5], int n);
    int controllo_piramide(int b[5][5]);
    
    int main()
    
    {
        int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    
        srand(time(0));
        int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
        viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
        int num=15, numeri_base=5;
        int rig=5, col=5;
    
        printf("Numeri da utilizzare: ");
    
        visualizza_numeri(numeri, num);
    
        printf("\n\n");
    
    
    
        int p;
    for(p=0; p<5; p++)
    {
    printf("\n%da simulazione:\n\nArray A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n", p+1);
    
        do{
        genera_numeri_senza_ripetizione_base(b);
    
        sottrazioni(b,rig,col);
    
    
            }while(controllo_piramide(b)==1);
    
                visualizza_base(b,numeri_base);
                printf("\n\n");
                visualizza_array_b(b,5,5);
                printf("\n-----------------------------------------------------------------------------\n");
    
    }
    }
    
    
    
    void visualizza_numeri(int numeri[], int num)
    {
        int i;
        for(i=0; i<num; i++)
        printf("%3d", numeri[i]);
    
    }
    
    
    void visualizza_base(int b[][5], int numeri_base)
    {
        int i;
        for(i=0; i<numeri_base; i++)
        {printf("%3d", b[4][i]);}
    }
    
    void genera_numeri_senza_ripetizione_base(int b[][5])
    {
        int i, j;
        int *base=b[4];
        for(i=0; i<5; i++)
        {
            base[i]=1+rand()%15;
            for(j=0; j<i; j++)
            {
                if(base[i]==base[j])
                {
                    i--;
                    break;
                }
            }
    
        }
    
    }
    
    void sottrazioni(int b[][5], int rig, int col)
    {
    
        int i,j;
        for(i=3; i>=0; --i)
            {
                for(j=i; j>=0; --j)
                {
                    b[i][j]=b[i+1][j]-b[i+1][j+1];
                    if(b[i][j]<0)
                        {
                            b[i][j]=b[i][j]*-1;
                        }
    
                }
    
            }
    
    
    
    }
    
    
    int controllo(int b[5][5], int n)
    {
        int i, j;
        for (i=0 ; i<5; ++i)
        {
            for(j=0; j<5; ++j)
    
            {if ( b[i][j] == n )
    
                {
                    return 1;
                }
    
            }
        }
                    return 0;
    }
    
    
    void visualizza_array_b(int b[5][5], int rig, int col)
    {
    
    int i,j;
        for(i=0; i<rig; i++)
        {
            for(j=col; j>i; --j)
            {printf("     ");}
    
        for(j=0; j<=i; j++)
        printf("  %3d     ", b[i][j]);
    printf("\n\n\n");
    
    }
    }
    
    int controllo_piramide(int b[5][5])
    {
        int n;
        for(n=1; n<=15; ++n)
        {
            if(!controllo(b,n))
            {
                return 1;
            }
        }
    return 0;
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Nippolo guarda ho credo bene corretto la function controllo_numero, ragionavo su controllo piramide...
    int controllo_numero(int m[5][5], int n)
    {
    
        for(int i = 0; i < 5; ++i)
        {
            for(int j = 4; j >= 0; --j)
            {
                    if(m[i][j] == n)
                    {
                    return 1;
                    }
            }
    
        }
        return 0;
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    Guarda che non cambia nulla rispetto a prima a parte il fatto che scorri le colonne da destra verso sinistra... infatti stai continuando a considerare gli elementi al di sopra della diagonale principale, i quali non appartengono alla piramide.

    Cioè se mi avessi detto "non lo so fare", ci poteva anche stare... ma dire "ho corretto" quando invece non è vero, mi fa pensare che in realtà tu non abbia ben capito cosa quella funzione debba fare. Sbaglio?
  • Re: Aiuto: Triangolo di carte(numeri)

    Nippolo, ci sto sbattendo la testa, ma non ci riesco....
    Ho provato un bel po' di cose ma non ci arrivo proprio....
  • Re: Aiuto: Triangolo di carte(numeri)

    Nippolo che ne pensi?
    int controllo_numero(int m[5][5], int n)
    
    
    {
    
        int i, j;
        for(i = 0; i < 5; i++)
        {
            for(j = 0; j <=i ; ++j)
    
            {
                    if(m[i][j] == n)
    
                {
                    return 1;
                }
            }
    
    
        }
    
        return 0;
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    Guarda ho provato anche a ragionare su controllo_piramide...
    int controllo_piramide(int m[5][5])
    {
    
        int n=15;
        for(int i = 1; i<= n; ++i)
        {
            if(controllo_numero(m,n));
            {
                return 1;
    
            }--n;
        }
        return 0;
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    icniVad ha scritto:


    Nippolo che ne pensi?
    int controllo_numero(int m[5][5], int n)
    
    
    {
    
        int i, j;
        for(i = 0; i < 5; i++)
        {
            for(j = 0; j <=i ; ++j)
    
            {
                    if(m[i][j] == n)
    
                {
                    return 1;
                }
            }
    
    
        }
    
        return 0;
    }
    Ok, ora va bene.
    Anche se noto che sono comparsi un sacco di spazi e che le dichiarazioni delle variabili i e j sono ritornate fuori dai cicli!

    icniVad ha scritto:


    Guarda ho provato anche a ragionare su controllo_piramide...
    Perchè hai aggiunto l'ulteriore variabile i? Basta n...
    Tornando quindi alla versione precedente, ossia
    int controllo_piramide(int m[5][5])
    {
        for(int n = 1; n <= 15; ++n)
        {
            if(controllo_numero(m, n) == ?)
            {
                return ?;
            }
        }
        return ?;
    }
    devi ragionare su come sostituire i ?
  • Re: Aiuto: Triangolo di carte(numeri)

    Ok scusami troppi spazi hai ragione e che sto impazzendo perchè devo consegnare il pregetto tra pochi giorni, devo scrivere ancora tutti i commenti e ho paura di non farcela a terminarlo
    Allora ora seguendo quanto tu mi hai consigliato ecco le 2 function:
    int controllo_numero(int m[5][5], int n)
    {
        int i, j;
        for(i = 0; i < 5; i++)
        {
            for(j = 0; j <=i ; j++)
            {
                    if(m[i][j] == n)
                {
                    return 1;
                }
            }
    }
        return 0;
    }
    
    int controllo_piramide(int m[5][5])
    {
        for(int n = 1; n<= 15; ++n)
        {
            if(controllo_numero(m,n)==0);
            {
                return 1;
            }
        }
        return 0;
    }
    Ora bisogna soltanto sistemare il main credo, anche se vedo che i numeri si ripetono ancora...speriamo bene
    Ci ragiono un po'....e grazie sempre
Devi accedere o registrarti per scrivere nel forum
99 risposte