Programma C quasi impossibile
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 8 di 8

Discussione: Programma C quasi impossibile

Cambio titolo
  1. #1
    festa privata L'avatar di alessio_roma
    Registrato il
    06-06
    Messaggi
    7.978

    Programma C quasi impossibile

    su una simulazione dell'esonero di programmazione all'università,c'era questo programma che credo nessuno sia riuscito a fare.Il problema sta nel capire la logica dagli esempi.Vi posto il testo:

    testo:Scrivere un programma che prende in input un intero n e stampa una matrice nxn di caratteri '-' e '+' che si deduce dai seguenti esempi:
    Codice:
    n = 1
    +
    
    n = 2
    ++
    ++
    
    n = 3
    -+-
    +++
    -+-
    
    n = 4
    -++-
    ++++
    ++++
    -++-
    
    n = 5
    --+--
    -+++-
    +++++
    -+++-
    --+--
    
    n = 8
    ---++---
    --++++--
    -++++++-
    ++++++++
    ++++++++
    -++++++-
    --++++--
    ---++---
    
    n = 9
    ----+----
    ---+++---
    --+++++--
    -+++++++-
    +++++++++
    -+++++++-
    --+++++--
    ---+++---
    ----+----
    da quanto ho capito è tutto basato sul fatto che l'intero sia dispari o pari però non riesco a capire come si possa fare tutto questo con dei cicli,perchè vanno usati per forza dato che n può essere pure 100 o qualsiasi altro numero
    Ultima modifica di alessio_roma; 15-11-2009 alle 16:28:51

  2. #2
    StorieDallaSalaMacchine L'avatar di miniBill '90
    Registrato il
    08-05
    Località
    Bergerac
    Messaggi
    4.204
    cioè, fondamentalmente devi stampare un quadrato ruotato?
    bastano due cicli annidati e un paio di if
    PS: modifica e usa il tag CODE, così si vedono meglio

    ESISTE UN UNICO AMMINISTRATORE
    Quoto-thisisgorman-
    (La mi ex-firma sta qua)

  3. #3
    l' oscuro nemico L'avatar di morgoth90
    Registrato il
    05-06
    Località
    C LikeLandia
    Messaggi
    2.275
    cinque minuti, yeah
    Codice:
    int main()
    {
        char *matrice;
        int n;
        cin>>n;
    
        matrice=new char[n,n];
    
        if(n==1)
        {
            matrice[0,0]='+';
            cout<<matrice[0,0]<<endl;
        }
        else
        {
            for(int y=0;y<n;y++)
            {
                for(int x=0;x<n;x++)
                {
                    if(n%2!=0)
                    {
                        if(y<n/2)
                        {
                            if( ( x>=(n/2)-(y%(n/2)) && x<=(n/2)+(y%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                        else
                        {
                            if( ( x>=(n/2)-((n-y-1)%(n/2)) && x<=(n/2)+((n-y-1)%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                    }
                    else
                    {
                        if(y<n/2)
                        {
                            if( ( x>=(n/2)-(y%(n/2))-1 && x<=(n/2)+(y%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                        else
                        {
                            if( ( x>=(n/2)-((n-y-1)%(n/2))-1 && x<=(n/2)+((n-y-1)%(n/2)) ) )
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                    }
                    cout<<matrice[x,y];
                }
                cout<<endl;
            }
        }
      
    }
    edit: basta che usi le funzioni di standard input/output perchè ho usato quelle del c++
    Ultima modifica di morgoth90; 15-11-2009 alle 13:52:58



    ESISTE UN UNICO AMMINISTRATORE


  4. #4
    StorieDallaSalaMacchine L'avatar di miniBill '90
    Registrato il
    08-05
    Località
    Bergerac
    Messaggi
    4.204
    posso arguire che è assolutamente inutile creare una matrice, ma basta stampare i caratteri?

    ESISTE UN UNICO AMMINISTRATORE
    Quoto-thisisgorman-
    (La mi ex-firma sta qua)

  5. #5
    l' oscuro nemico L'avatar di morgoth90
    Registrato il
    05-06
    Località
    C LikeLandia
    Messaggi
    2.275
    si, è imutile ma ho interpretato alla lettera il testo



    ESISTE UN UNICO AMMINISTRATORE


  6. #6
    StorieDallaSalaMacchine L'avatar di miniBill '90
    Registrato il
    08-05
    Località
    Bergerac
    Messaggi
    4.204
    il testo dice di stamparla, non di crearla

    ESISTE UN UNICO AMMINISTRATORE
    Quoto-thisisgorman-
    (La mi ex-firma sta qua)

  7. #7
    festa privata L'avatar di alessio_roma
    Registrato il
    06-06
    Messaggi
    7.978
    Citazione morgoth90 Visualizza Messaggio
    cinque minuti, yeah
    Codice:
    int main()
    {
        char *matrice;
        int n;
        cin>>n;
    
        matrice=new char[n,n];
    
        if(n==1)
        {
            matrice[0,0]='+';
            cout<<matrice[0,0]<<endl;
        }
        else
        {
            for(int y=0;y<n;y++)
            {
                for(int x=0;x<n;x++)
                {
                    if(n%2!=0)
                    {
                        if(y<n/2)
                        {
                            if( ( x>=(n/2)-(y%(n/2)) && x<=(n/2)+(y%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                        else
                        {
                            if( ( x>=(n/2)-((n-y-1)%(n/2)) && x<=(n/2)+((n-y-1)%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                    }
                    else
                    {
                        if(y<n/2)
                        {
                            if( ( x>=(n/2)-(y%(n/2))-1 && x<=(n/2)+(y%(n/2)) ) || y==n/2)
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                        else
                        {
                            if( ( x>=(n/2)-((n-y-1)%(n/2))-1 && x<=(n/2)+((n-y-1)%(n/2)) ) )
                                matrice[x,y]='+';
                            else
                                matrice[x,y]='-';
                        }
                    }
                    cout<<matrice[x,y];
                }
                cout<<endl;
            }
        }
      
    }
    edit: basta che usi le funzioni di standard input/output perchè ho usato quelle del c++
    apprezzo molto ma vorrei capire la logica,per il sorgente bastava che andava sulla pagina del prof e scaricavo la soluzione che ha messo in rete

    Citazione miniBill '90 Visualizza Messaggio
    il testo dice di stamparla, non di crearla
    giusto,dice solo di stamparla

  8. #8
    festa privata L'avatar di alessio_roma
    Registrato il
    06-06
    Messaggi
    7.978
    qualcuno ha voglia di spiegare la logica?

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •