Passare Matrice ad una procedura

di
Anonimizzato4841
il
2 risposte

Passare Matrice ad una procedura

Ciao, ho un problema con il passaggio di una matrice ad una procedura ma non riesco a capire il problema,
vi posto il programma:

header.h
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>

using namespace std;


void ins_dim_matrice(int &N,int &M);
void inizializza_mat(int N,int M,char a[N][M]);

void acquisisci_mat(string &k,int N,char a[N][M]);
void stampa(int N,int M,char a[N][M]);
void ricerca_occorrenza(int N,int occ,char a[N][M]);
main.cpp
#include "header.h"

main()
{
   int N,M,occ;
   string k;   
   char a[N][M];
   inizializza_mat(N,M,a);
   acquisisci_mat(k,N,a);
   stampa(N,M,a);
   ricerca_occorrenza(N,occ,a);

    system("PAUSE");
    return(0);
}
proc.cpp
#include "header.h"

void ins_dim_matrice(int &N,int &M)
{
      do {
     cout<<"inserisci la dimensione delle righe\n";
       cin>>N;
         if (N<0)
           cout<<"il numero inserito non e' corretto\n";
       }while(N<0);
         cout<<"inserisci la dimensione delle colonne\n";
           do{
            cin>>M;
              if (M<0)
                cout<<"il numero inserito non e' corretto\n";
           } while (M<0);

}

void inizializza_mat(int N,int M,char a[][M])
{
     // inizializzo la matrice con tutti zeri
      for (int k1 = 0; k1<N; k1++){
       for (int kk = 0; kk<M; kk++)
        a[k1][kk]='\0';
          }

}

void acquisisci_mat(string& k,int N,char a[][M])
{
  
   for (int i = 0; i<N; i++){            // acquisizione della matrice
       cout<<"inserisci la riga "<<i<<" di lunghezza massima pari alla dimensione delle colonne : ";    //  per righe
        cin>>k;
        int j=0;
        int app = k.length();                // prendo la lunghezza della stringa acquisita
        while (j<app)
       {  a[i][j] = k[j];        // inserisce carattere per carattere la stringa nella matrice
          j++; }
    }

}

void stampa(int N,int M,char a[][M])
{
  // stampa la matrice
   for (int i = 0; i<N; i++){
      for (int j=0;j<M;j++)
        cout<<a[i][j];
         cout<<endl;
  }
}

void ricerca_occorrenza(int N,int occ,char a[][M])
{
     string stri;
   cout<<"inserire la stringa da cercare    ";
   cin>>stri;

    
  for (int i = 0; i<N; i++)
    {      int conta= 0;
      
    for (int ii = 0; ii<stri.length(); ii++)
      {
       if (stri[ii]==a[i][ii])         // confronta carattere per carattere la stringa da cercare
            conta++;                   // con gli elementi della matrice

     if (conta==stri.length())            // se la parola cercata è presente nella matrice aumenta un contatore
        occ+=1;
    }
 }
    if (occ>0)
      cout<<"la stringa e' presente "<<occ<<" volte\n";
        else
          cout<<"la stringa non e' presente\n";
}
qualcuno puo' darmi una mano? grazie

2 Risposte

  • Re: Passare Matrice ad una procedura

    Credo che non si possa passare un array ad una procedura, ma solo puntatori ad array (quindi l'argomento della procedura dovrebbe essere il puntatore alla matrice che ti interessa). Altri metodi, io non ne conosco
  • Re: Passare Matrice ad una procedura

    Un array monodimensionale si puo' passare, il problema sorge quando l'array ha piu' dimensioni. Leggendo su internet sembra che prima si poteva passare la matrice anche senza puntatori (come nel codice che ho inserito prima), ora invece non è piu' consentito..
Devi accedere o registrarti per scrivere nel forum
2 risposte