Oppure

Loading
15/06/17 15:37
FeFeZ
Ciao a tutti, di seguito vi sarà il codice del mio programma in cui sto riscontrando il problema.
Tutto funziona fino al for in cui c'è k=0;k<DIMR&&trovato==0;k++ ....il problema è che non entra in quel ciclo e non riesco a capire perché , ho sbagliato qualcosa per quanto riguarda la sintassi? (il problema consiste in una matrice letta da file in cui devo cercare ogni numero che è sia max di riga che di colonna. Nel for che parte con k=0 sto cercando il massimo di colonna rispetto alla riga in cui ho trovato il max, e poi confronterei i due max per vedere se sono uguali, ma non entra proprio in quel ciclo for!!)
grazie

#include <stdio.h>
#include <stdlib.h>
#define DIMR 5
#define DIMC 8
int main(int argc, char *argv[])

{
    int i,j,mappa[DIMR][DIMC],trovato,maxr,pos_maxr,k=0,maxc,pos_maxc;

    if(argc!=2)
    {
        printf("errore linea di comando");
        return -1;
    }

    FILE *fp;
    fp=fopen(argv[1],"r");

    if(fp==NULL)
    {
        printf("errore file");
        return -2;
    }

    for(i=0;i<DIMR;i++)
    {
        for(j=0;j<DIMC;j++)
        {
            fscanf(fp,"%d",&mappa[i][j]);
        }
    }



    for(i=0;i<DIMR;i++)
    {
     maxr=0;
     for(j=0;j<DIMC;j++)  /*trovo il max di riga*/
     {
         if(mappa[i][j]>maxr)
         {
             maxr=mappa[i][j];
             pos_maxr=j;
             pos_maxc=i;

         }
     }
        trovato=0;
       for(k=0;k<DIMR&&trovato==0;k++) /*trovo il max di colonna*/
       {
        if(mappa[k][pos_maxr]>maxr)
        {
         trovato==1;
        }
       }
      if(trovato==0)
      {
       printf("(%d,%d)",pos_maxc,pos_maxr);
      }
}
    return 0;

}
Ultima modifica effettuata da FeFeZ 15/06/17 15:45
aaa
15/06/17 15:49
AldoBaldo
A vista (non sono andato oltre nel leggere il codice), non è che nelle righe 43 e 44 hai scambiato pos_maxr e pos_maxc? Non lo do per certo, propongo un dubbio.
Ultima modifica effettuata da AldoBaldo 15/06/17 15:50
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
15/06/17 17:13
nessuno
Come hai visto che "non entra"? Hai eseguito passo passo o pensi che non entri nel ciclo ma non ne sei sicuro?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
15/06/17 17:34
Mikelius
Potresti mandare un esempio del file da leggere?
Cosi si possono fare delle prove.

Ultima modifica effettuata da Mikelius 15/06/17 17:39
aaa
15/06/17 20:01
AldoBaldo
Sempre nell'ottica del "mi sembra strano", prova a dare un'occhiata alla riga 53... dovrebbe essere trovato==1 (come hai scritto) o trovato=1 (a me sembra più probabile).
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
15/06/17 20:11
nessuno
Sicuramente deve essere

trovato=1

Per questo motivo ti SEMBRA che non sia entrato nel ciclo, ma ci entra ...

Devi imparare a fare un po' di debugging, impostare breakpoint, eseguire passo passo le linee di codice e controllare il valore delle variabili durante l'esecuzione. Così risolverai questi problemi banali.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
15/06/17 20:17
AldoBaldo
Nessuno, mi sa che hai risposto a me pensando di rispondere a FeFeZ...
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
15/06/17 20:25
nessuno
Postato originariamente da AldoBaldo:

Nessuno, mi sa che hai risposto a me pensando di rispondere a FeFeZ...


No. ho proprio risposto a te con le prime due righe.

E a FeFeZ per il resto ...

:-)
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.