Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C]Matrice con cornice di zeri

    Ciao,
    devo fare un programma che, data una matrice RxC, dica se ha una cornice di zeri oppure no.
    Il problema è che mi dice che ha una cornice di zeri solo quando tutti gli elementi sono degli zeri.
    codice:
    #include<stdio.h>
    int main()
    {
      int r, c, nr, nc, tot, op;
      float matrice[100][100], val;
      printf("Inserici il numero di righe\n");
      scanf("%d", &nr);
      printf("Inserici il numero di colonne\n");
      scanf("%d", &nc);
      printf("Dati per la matrice quadrata:\n");
      for(r=0; r<nr; r++)
      {
                for(c=0; c<nc; c++)
                {
                         printf("Inserisci i dati della posizione matrice [%d][%d]", r+1,c+1);
                         scanf("%f", &val);
                         matrice [r][c]=val;
                         while(getchar()!='\n'); //Serve per pulire il buffer di tastiera                     
                }
      }
      tot=nr*2+(nc-2)*2; //Tot è il numero degli elementi della cornice della matrice
      op=ver(matrice,tot,nr,nc);
      if(op==1)
        printf("La matrice ha una cornice di zeri\n");
      else
       printf("La matrice non ha una cornice di zeri\n");
      system("pause");
      return 0;
    }
    //Implementazione della funzione per la verifica
    int ver(float mat[][100], int totale, int righe, int colonne)
    {
        int x, y, tot=0;
        for(x=0; x<righe; x++)
        {
                for(y=0; y<colonne; y++)
                {
                         if(mat [x][0]==0 || mat [x][colonne-1]==0 || mat [0][y]==0 || mat [righe-1][y]==0)
                         tot++;
                }
        }
        if(tot==totale)
          return 1;
        else
          return -1;
    }
    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Ho provato ad aiutarti ma non ci sono riuscito, secondo me è una brutta logica quella che usi tu...Io ti provo ad aiutare con questo che dovrebbe funzionare

    codice:
    int ver2(float mat[][100], int righe, int colonne)
    {
        int i, j;
        for(i=0;i<righe;i++)
        {
            for(j=0;j<colonne;j++)
            {
                if((mat[0][j] != 0 || mat[righe-1][j] != 0) && (mat[i][0] != 0 || mat[i][colonne-1] == 0))
                {
                    return 0;
                }
            }
        }
        return 1;
    }
    Ragiono partendo dal fatto che ho una matrice con la cornice di 0, al primo intoppo ritorna 0 e quindi la matrice non ha la cornice di 0...
    Molto semplice ed intuitivo

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.