FeFeZ (Normal User)
Newbie
Messaggi: 7
Iscritto: 14/06/2017
|
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
Codice sorgente - presumibilmente C++ |
#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 il 15/06/2017 alle 17:45 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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 il 15/06/2017 alle 17: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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
Mikelius (Member)
Expert
Messaggi: 525
Iscritto: 14/04/2017
|
Potresti mandare un esempio del file da leggere?
Cosi si possono fare delle prove.
Ultima modifica effettuata da Mikelius il 15/06/2017 alle 19:39 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
FeFeZ (Normal User)
Newbie
Messaggi: 7
Iscritto: 14/06/2017
|
Innanzitutto ringrazio tutti per le risposte!
Ho risolto il problema, come detto da alcuni di voi alla riga 53 dovevo scrivere trovato=1 e non trovato==1 come ho scritto io.
Comunque affermavo che non entrasse nel ciclo perché avevo provato ad utilizzare il debug e vedevo che nel momento in cui arrivava a quel for lo saltava completamente ed usciva con k=5 (ancora adesso non riesco a spiegarmi il perché xD).
Comunque mettendo trovato=1 ho risolto il problema ed ora il programma funziona.
Grazie a tutti
|
|