Matrici

di il
7 risposte

Matrici

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

  • Re: Matrici

    Un errore ? Quale errore ?
  • Re: Matrici

    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

  • Re: Matrici

    Ma in quale riga?

    E soprattutto ... inserisci il codice tra tag CODE altrimenti è difficile leggerlo, copiarlo, ecc...
  • Re: Matrici

    Dove c'è la funzione void allaga
  • Re: Matrici

    Ok oregon adesso è a posto, scusa la mia distrazione
  • Re: Matrici

    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?
  • Re: Matrici

    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