Matrici

di Anonimizzato11691 il
7 risposte
Salve a tutti, ho un problema con questo esercizio:

"La mappa di un territorio viene schematizzata tramite una matrice di dimensioni M per N, all'interno della quale ogni elemento contiene un numero intero che rappresenta in metri l'altezza del terreno in quella zona. In un elemento di cui sono note le coordinate di riga e di colonna, è presente una sorgente d'acqua. Sapendo che l'acqua può scendere in tutte le direzioni verso punti con quota monore o uguale ma che non può risalire verso punti di quota superiore, fornire la mappa delle zone che verranno allagate(con un *) e non allagate(con un .) ".

Questo è quello che ho fatto io, il problema è che mi dà un errore nella funzione allaga, e non so perché.

#include <iostream>
using namespace std;

const int r=10, c=15;

void allaga (int pr, int pc, int M[r][c], char[Ma][c+1])
{
     int L, m;
     
for (L=pr-1; L<pr+1; L++)
{
if (0=L<r)
{
for (m=pc-1; m<=pc+1; m++)
{
if (0<=m<c)
{
if (M[L][m]=='o')
{
if(M[L][m]<=m[pr][pc])
Ma[L][m]='*';
else
Ma[L][m]= '.';
}}}}}}

int conta_indecise(char MA[r][c+1])
{
int c=0, L, m;

for (L=0; L<r; L++)
for(m=0; m<c+1; M++)
if(Ma[L][m]=='0')
c++;

return c;
}


main (){
        int i,j,r,c,M[r][c],k=0,y;
        char Ma[r][c+1]='o';

for (i=o; i<r; i++)
for (j=0; j<c; j++)
{
cout<<" Inserire l'altezza zona di coordinate "<<i<<" "<<j<<endl;
cin>> M[i][j];
}

cout<<" Inserire coordinate posizione sorgente "<<endl;
cin>> y; 
cin>> c;

allaga(r,c,M,Ma);
k=conta_indecise(Ma);

while (k>0)
{
      for(i=0; i<r; i++)
      for(j=0; j<r; j++)
      if(Ma[i][j]=='*')
      allaga(i,j,M,Ma);
      k=conta_indecise(Ma);
      {
      cout<< Stampa il territorio con le zone allagate "<<endl;
      for(i=0; i<r; i++)
      for(j=0; j<c; j++)
      {
      cout<<Ma[i][j]<<" ";
      cout<<endl;
      }
      system ("pause");
      }

7 Risposte

  • Un errore ? Quale errore ?
  • 1) " invalid types ‘int[int]’ for array subscript " e
    2) " cannot convert ‘char (*)[(((sizetype)((ssizetype)c)) + 1)]’ to ‘char (*)[16]’ for argument ‘1’ to ‘int conta_indecise(char (*)[16])’ "

    P.S.--> Stò programmando da ubuntu con gedit; su windows l'errore era " cannot convert float to float " o una roba del genere

  • Ma in quale riga?

    E soprattutto ... inserisci il codice tra tag CODE altrimenti è difficile leggerlo, copiarlo, ecc...
  • Dove c'è la funzione void allaga
  • Ok oregon adesso è a posto, scusa la mia distrazione
  • Esistono un bel po' di errori ... ad esempio

    if (0=L<r)

    oppure

    if (0<=m<c)

    oppure

    for(m=0; m<c+1; M++)

    oppure

    if(Ma[L][m]=='0')

    oppure

    for (i=o; i<r; i++) ---> o al posto di zero

    ...

    cerca di correggere tutto quello che il compilatore ti indica prima di quell'altro errore ... ce ne sono troppi ... ma con quale ambiente/compilatore lavori ? Come mai non hai gli altri errori?
  • Ok grazie mille !!!!! Il mio compilatore segna gli errori ogni volta che ne incontra uno, quindi se lo incontra alla prima riga (per dire) segna l'errore e non cerca gli altri....... Non so se solo il mio fa così.... bo
Devi accedere o registrarti per scrivere nel forum
7 risposte