Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema: non mi entra nel ciclo for!
Forum - C/C++ - Problema: non mi entra nel ciclo for!

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
FeFeZ (Normal User)
Newbie


Messaggi: 7
Iscritto: 14/06/2017

Segnala al moderatore
Postato alle 17:37
Giovedì, 15/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++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIMR 5
  4. #define DIMC 8
  5. int main(int argc, char *argv[])
  6.  
  7. {
  8.     int i,j,mappa[DIMR][DIMC],trovato,maxr,pos_maxr,k=0,maxc,pos_maxc;
  9.  
  10.     if(argc!=2)
  11.     {
  12.         printf("errore linea di comando");
  13.         return -1;
  14.     }
  15.  
  16.     FILE *fp;
  17.     fp=fopen(argv[1],"r");
  18.  
  19.     if(fp==NULL)
  20.     {
  21.         printf("errore file");
  22.         return -2;
  23.     }
  24.  
  25.     for(i=0;i<DIMR;i++)
  26.     {
  27.         for(j=0;j<DIMC;j++)
  28.         {
  29.             fscanf(fp,"%d",&mappa[i][j]);
  30.         }
  31.     }
  32.  
  33.  
  34.  
  35.     for(i=0;i<DIMR;i++)
  36.     {
  37.      maxr=0;
  38.      for(j=0;j<DIMC;j++)  /*trovo il max di riga*/
  39.      {
  40.          if(mappa[i][j]>maxr)
  41.          {
  42.              maxr=mappa[i][j];
  43.              pos_maxr=j;
  44.              pos_maxc=i;
  45.  
  46.          }
  47.      }
  48.         trovato=0;
  49.        for(k=0;k<DIMR&&trovato==0;k++) /*trovo il max di colonna*/
  50.        {
  51.         if(mappa[k][pos_maxr]>maxr)
  52.         {
  53.          trovato==1;
  54.         }
  55.        }
  56.       if(trovato==0)
  57.       {
  58.        printf("(%d,%d)",pos_maxc,pos_maxr);
  59.       }
  60. }
  61.     return 0;
  62.  
  63. }


Ultima modifica effettuata da FeFeZ il 15/06/2017 alle 17:45
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 17:49
Giovedì, 15/06/2017
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.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:13
Giovedì, 15/06/2017
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à.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 19:34
Giovedì, 15/06/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
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:01
Giovedì, 15/06/2017
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.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:11
Giovedì, 15/06/2017
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à.
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:17
Giovedì, 15/06/2017
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.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:25
Giovedì, 15/06/2017
Testo quotato

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à.
PM Quote
Avatar
FeFeZ (Normal User)
Newbie


Messaggi: 7
Iscritto: 14/06/2017

Segnala al moderatore
Postato alle 12:58
Venerdì, 16/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 :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo