Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    [C]scrivere in un array a due dimensioni

    Salve mi trovo davanti ad un problema, devo scrivere in un array a 2 dimensioni.
    all'interno di ques'array devo inserire dei numeri che formino una piramide.

    esempio
    codice:
    2221222
    2211122
    2111112
    1111111
    codice:
    #include <stdio.h>
    int main(void)
    {
      int altezza, riga, i;
    
      printf("Altezza piramide (1..40) ? ");
      scanf("%d", &altezza);
      riga = altezza;
      int c = 1;
      int d = 2;
      int prima =0,j,l;
      int mat[altezza][altezza];
    
        for (riga = 1; riga <= altezza; riga++)
        {
            for (i = 1; i <= altezza - riga; i++)
                mat[riga][i]=2;
                printf("%6d ", mat[riga][i]);
                for (i = 1; i <= riga * 2 - 1; i++)  /* stampa la sequenza di asterischi */
                    mat[riga][i]=1;
                    for (i = 1 ; i <= altezza - riga ; i++)
                    mat[riga][i]=2;
                    putchar('\n');
                }
        return 0;
    }
    quando eseguo non mi da errore ma solo numeri di 5o6 cifre strani.
    spero che qualcuno possa aiutarmi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Per prima cosa, tieni ben presente che gli indici degli array in C vanno

    da 0 a altezza-1

    e non da 1 a altezza ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    scusa e che facendo varie prove...qnd ho incollato il codice...ho lasciato i for inizializzati a 1...comunque 0 o 1 il risultato non cambia...spero che qualcuno possa darmi un aiutino.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Cioè? Il codice attuale qual è?

    Non basta cambiare solo 1 in 0, ma anche <= altezza deve diventare < altezza
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    il codice è quello postato all'inizio solo con i cicli for inizializzati a zero
    codice:
    #include <stdio.h>
    int main(void)
    {
      int altezza, riga, i;
    
      printf("Altezza piramide (1..40) ? ");
      scanf("%d", &altezza);
      riga = altezza;
      int c = 1;
      int numeri_casuali = 2;
      int mat[altezza][altezza];
    
         for (riga = 0; riga < altezza-1; riga++)
            {
            for (i = 0; i < altezza - riga; i++)
                mat[riga][i]=numeri_casuali;
                printf("%6d ", mat[riga][i]);
                for (i = 0; i <= riga * 2 - 1; i++)
                    mat[riga][i]=c;
                    printf("%6d ", mat[riga][i]);
                    for (i = 0 ; i < altezza - riga ; i++)
                    mat[riga][i]=numeri_casuali;
                    printf("%6d ", mat[riga][i]);
                    putchar('\n');
                }
        return 0;
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    salve ragazzi spero che qualcunopossa aiutarmi...
    devo disegnare una piramide di x in un array 2d...
    fino al primi 2 cicli for tutto sembra andar bene
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
      int altezza, riga;
      printf("Altezza piramide (1..80) ? ");
      scanf("%d", &altezza);
      riga = altezza;
      printf("%d\n",riga);
      char mat[riga][altezza];
      int i,j;
    
        for (i=0;i<altezza;i++)
            for (j=0;j<riga;j++)
                mat[i][j]=' ';
    
    
        for (riga = 1; riga <= altezza-1; riga++)
        {
            for (i = 0; i < altezza - riga; i++)
            mat[riga][i]= '_';     //fino e qui è chiaro....dopo c'è sicuramente qualcosa che non va!!
                for (i = 0; i <= riga * 2 - 1; i++)
                    mat[riga][i]= 'x';
                    for (i = 0 ; i < altezza - riga ; i++)
                        mat[riga][i]='_';
        }
    
    
    
    
        for (i=1;i<altezza-1;i++)
        {
            for (j=1;j<riga-1;j++)
            {
                printf("%c",mat[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    fino all'inserimento nell'array del simbolo "_" mi restituisce in output

    ________
    _______
    ______
    _____
    ____
    ___
    __
    _

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 © 2025 vBulletin Solutions, Inc. All rights reserved.