Aiuto: Triangolo di carte(numeri)

di il
99 risposte

99 Risposte - Pagina 3

  • Re: Aiuto: Triangolo di carte(numeri)

    Nippolo, sto impazzendo..guarda tra le tante prove che ho fatto questa è una...
    Ho provato anche un ciclo do while nel main inserendo il richiamo della function dopo le operazioni di sottrazione, la piramide usciva anche, ma i numeri non erano tutti diversi..ti posto il codice della function, volevo chiederti.. è errata?Dove potrei inserirla nel main?
    int fun(int b[5][5], int n)
    {
        int i, j;
    
        for(i=0; i<=5; i++)
            {
            for(j=0; j<5; j++)
                {
            for(n=1; n<=15; n++)
                {
                    if(n==b[i][j])
            {return 1;
            n++;}
            else
    return 0;
    }}
    }
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    Purtroppo la funzione è sbagliata!

    Andiamo per gradi... sei in grado di implementare una funzione
    int fun_1(int v[5], int n);
    che ritorni 1 se n è presente in v e 0 altrimenti?

    P.S.
    Per il momento lascia stare il main().
  • Re: Aiuto: Triangolo di carte(numeri)

    Penso sia così giusto?
    int fun(int b[5], int n)
    {	int i;
          for ( int i = 1 ; i <=5 ; i ++ )
                  if ( b[i] == n )
            return 1;
          return 0;
    }
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    E credo per una matrice dovrebbe essere questa la funzione...lo spero almeno..
    int fun(int b[5][5], int n)
    {       int i, j;
            for ( int i = 1 ; i <= 5 ; i ++ )
                  {
                    for(j=1; j>=5; j++)
                  if ( b[i][j] == n )
            return 1;
          return 0;
    }
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    icniVad ha scritto:


    Penso sia così giusto?
    int fun(int b[5], int n)
    {	int i;
          for ( int i = 1 ; i <=5 ; i ++ )
                  if ( b[i] == n )
            return 1;
          return 0;
    }
    }
    Il numero di parentesi graffe non torna e inizi a scandire l'array a partire dal secondo elemento per poi arrivare al sesto che non esiste.

    P.S.
    Impegnati ad indentare il codice. D'altronde se utilizzi un IDE decente risulta quasi automatico.
  • Re: Aiuto: Triangolo di carte(numeri)

    Ah ok, così va meglio?
    int fun(int b[5], int n)
    {	int i;
          for ( i = 0 ; i <5 ; i ++ )
             {   if ( b[i] == n )
           { return 1;
          return 0;}
    }
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    Meglio, ma è ancora sbagliato.
    Una volta indentato il codice appare così:
    int fun(int b[5], int n)
    {	
        for(int i = 0; i < 5; i++)
        {   
            if(b[i] == n)
            { 
                return 1;
                return 0;
            }
        }
    }
    Domanda: secondo te può mai ritornare 0 quella funzione?
  • Re: Aiuto: Triangolo di carte(numeri)

    Forse l'errore è nelle parentesi?
    int fun(int b[5], int n)
    {int i;
    for(i=0; i<n; i++)
    {if(b[i]==n)
    	return 1;
    return 0;
    }
    }
  • Re: Aiuto: Triangolo di carte(numeri)

    Ma hai qualcosa contro l'indentazione?
    Codice indentato:
    int fun(int b[5], int n)
    {
        for(int i = 0; i < n; i++)
        {
            if(b[i] == n)
            {
                return 1;
            }
            return 0;
        }
    }
    - perchè hai modificato in quel modo la condizione del for?
    - secondo te cosa dovrebbe ritornare la funzione fun() (mi riferisco ad una ipotetica versione corretta) per b={1,3,5,6,7} e n=6? Cosa ritornerebbe invece l'ultimo codice che hai postato?
  • Re: Aiuto: Triangolo di carte(numeri)

    In effetti ho fatto un errore con le parentesi stupido, però non ricordavo bene bene come si scrivesse con le parentesi giuste...
    Comunque per la tua seconda domanda, credo la risposta sia un "return 1" per i numeri 1,3,5,6. Giusto?
    Non saprei cosa fosse ritornato con il mio ultimo codice perchè credevo fosse corretto, ma di certo non avevo diviso i 2 return quindi non avrebbe dato un esito esatto.
  • Re: Aiuto: Triangolo di carte(numeri)

    icniVad ha scritto:


    Comunque per la tua seconda domanda, credo la risposta sia un "return 1" per i numeri 1,3,5,6. Giusto?
    Giusto, ma sicuro di aver capito cosa deve fare questa funzione?

    icniVad ha scritto:


    Non saprei cosa fosse ritornato con il mio ultimo codice perchè credevo fosse corretto, ma di certo non avevo diviso i 2 return quindi non avrebbe dato un esito esatto.
    Per sapere cosa ritorna un codice, basta lanciarlo... è tutto a portata di mano e richiede una manciata di secondi!
    In ogni caso anche senza compilatore, basta ragionarci.

    Detto ciò aggiusta la condizione del for e smettila di andare a tentativi ragionando un po' su quale dovrebbe essere la posizione corretta del return 0.

    P.S.
    Nei miei precedenti post ti ho suggerito più volte di indentare il codice, ma non lo hai mai fatto. A questo punto mi sorge un dubbio... sai cosa si intende per indentazione?
  • Re: Aiuto: Triangolo di carte(numeri)

    Sisi l'ho compresa, sei stato chiarissimo. Questa funzione è tipo un sistema booleano di controllo, che mi restituisce una condizione di 1 o 0 a seconda dell'elemento trovato nella porzione utile di matrice.
    L'indentazione è scrivere un codice in modo chiaro e con gli giusti spazi, in modo tale da rendere il codice leggibile e comprensibile, non confuso.
    Va bene, ho sistemato il codice indentandolo in modo giusto come mi hai detto tu.
    Va bene, ora avanzo e vedo dove poter porre il richiamo della function nel main. Ti aggiorno e stavolta ci ragiono di più senza fare tentativi promesso.
  • Re: Aiuto: Triangolo di carte(numeri)

    Ok, ma la funzione
    int fun(int b[5], int n);
    come l'hai aggiustata alla fine?
  • Re: Aiuto: Triangolo di carte(numeri)

    L'ho scritta in questo modo, come mi hai spiegato tu, ora sto cercando di ragionare sulla logica dell'implementazione nel main della funzione:
    int fun(int b[5], int n)
    {
        int i;
        for(i=0; i<n; i++)
        {
           if(b[i]==n)
           {
                return 1;
           }
    
            return 0;
        }
    
    }
    
  • Re: Aiuto: Triangolo di carte(numeri)

    Ma è sbagliata... sinceramente mi sembra di non aver mai detto che quel codice fosse corretto, anzi:

    Nippolo ha scritto:


    - perchè hai modificato in quel modo la condizione del for?
    - secondo te cosa dovrebbe ritornare la funzione fun() (mi riferisco ad una ipotetica versione corretta) per b={1,3,5,6,7} e n=6? Cosa ritornerebbe invece l'ultimo codice che hai postato?

    Nippolo ha scritto:


    Detto ciò aggiusta la condizione del for e smettila di andare a tentativi ragionando un po' su quale dovrebbe essere la posizione corretta del return 0.
    Inoltre se avessi testato la funzione, te ne saresti reso conto da solo. Prova a lanciare il seguente codice (la condizione del for l'ho corretta io):
    #include <stdio.h>
    
    int fun_1(int b[5], int n)
    {
        for(int i = 0; i < 5; ++i)
        {
            if(b[i] == n)
            {
                return 1;
            }
            return 0;
        }
    }
    
    int main()
    {
        int a[5] = {1, 3, 5, 6, 7};
        printf("%d\n", fun_1(a, 6));
    }
Devi accedere o registrarti per scrivere nel forum
99 risposte