Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22
    Fatto ti ringrazio, ma comunque il problema non è risolto!! Se la matrice viene acquisita correttamente (anche con la correzione che mi hai suggerito) perché quando la passo all'altra funzione mi riconosce solo l'elemento 0,0 ?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Quote Originariamente inviata da rino95 Visualizza il messaggio
    Fatto ti ringrazio, ma comunque il problema non è risolto!! Se la matrice viene acquisita correttamente (anche con la correzione che mi hai suggerito) perché quando la passo all'altra funzione mi riconosce solo l'elemento 0,0 ?
    Ma l'hai ricompilato con le modifiche e provato? A me dà questo risultato

    Regione 1: estr. sup. SX = <0,0> b = 2, h = 1, Area = 2
    Regione 2: estr. sup. SX = <1,2> b = 2, h = 2, Area = 4
    Regione 3: estr. sup. SX = <2,5> b = 1, h = 3, Area = 3
    Regione 4: estr. sup. SX = <4,0> b = 1, h = 1, Area = 1
    Regione 5: estr. sup. SX = <4,2> b = 1, h = 1, Area = 1



    P.S. Correggi il \code in /code nel post con il codice in modo che si legga.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22
    Si giuro l'ho fatto! Ho cambiato le intestazioni delle funzioni sia nel prototipo che nella dichiarazione come hai detto tu, ma niente ottengo lo stesso risultato... visto che a te funziona allora vuol dire che è il mio compilatore o pc il problema proprio come speravo, ciò vuol dire che il codice è giusto! Ti ringrazio dei suggerimenti!
    ps la prossima volta proverò a impostare il tag code correttamente, purtroppo non mi faceva già più accedere alla domanda per modificarla dopo che hai risposto tu.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Mi sembra strano ... riproponi adesso tutto il codice modificato (con i tag code corretti) così lo controllo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Mi sembra strano ... riproponi adesso tutto il codice modificato (con i tag code corretti) così lo controllo ...

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #define FILE_IN "file_in.txt"
    #define MAXR 50
    int leggiMatrice(int maxr, int m[][maxr], int *r, int *c);
    int riconosciRegione(int nr, int nc, int M[][nc],int r, int c, int *bp, int *hp);
    int main()
    {
        int b,h,i,j,nr,nc,p;
        int regione=1;
        int M[MAXR][MAXR];
        p = leggiMatrice(MAXR,M,&nr,&nc);
        if(p==-1)
        {
            printf("ERRORE: impossibile aprire %s.", FILE_IN);
            exit(-2);
        }
        if(p==0)
        {
            printf("ERRORE: le dimensioni della matrice devono essere al piu' %d x %d.", MAXR, MAXR);
            exit (-1);
        }
        for(i=0; i<nr; i++)
            for(j=0; j<nc; j++)
                if(riconosciRegione(nr,nc,M,i, j, &b, &h)==1)
                    {
                        printf("Regione %d: estr. sup. SX = <%d,%d> b = %d, h = %d, Area = %d\n", regione, i, j, b, h, b*h);
                        regione++;
                    }
        return 0;
    }
    int leggiMatrice(int maxr, int m[][maxr], int *r, int *c)
    {
        int i,j;
        FILE *fr;
        fr=fopen(FILE_IN, "r");
        if(fr==NULL)
           return -1;
        fscanf(fr, "%d %d", &(*r), &(*c));
        if((*r) > maxr || (*c) > maxr)
            return 0;
        for(i=0; i<(*r); i++)
            for(j=0; j<(*c); j++)
              fscanf(fr, "%d ", &m[i][j]);
        fclose(fr);
        return 1;
    }
    int riconosciRegione(int nr, int nc, int M[][nc], int r, int c, int *bp, int *hp)
    {
        int i,j,k,l,flag;
        i=r;
        j=c;
        if(M[i][j] == 1)                                  
        {                                                 
            flag=1;                                       
            for((*bp)=0,k=0; (j+k)<nc && flag==1; k++)    
            {                                             
                if(M[i][j+k] == 1)
                    (*bp)++;                              
                                                          
                else
                    flag=0;
            }
                                                          
            flag=1;                                      
            for(k=1,(*hp)=1; (k+i)<nr && flag==1; k++)    
            {                                            
                for(l=0; l<(*bp) && flag==1; l++)        
                    if(M[i+k][j+l] != 1)                  
                        flag=0;                          
                                                          
                if(flag==1)                               
                    (*hp)++;                              
            }                                             
            for(i=0; i<(r+(*hp)); i++)                   
                for(j=c; j<(c+(*bp)); j++)                
                    M[i][j]=-1;                           
            return 1;
        }
        return 0;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Il codice NON è modificato ... ti avevo chiesto di riproporre il codice dopo le modifiche.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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