Dubbio sulle matrice di puntatori a stringhe

di il
1 risposte

Dubbio sulle matrice di puntatori a stringhe

Salve a tutti ragazzi, oggi nella risoluzione di questo esercizio ho avuto un dubbio amletico per quanto riguarda le matrici di puntatori a stringhe. Come sappiamo una stringa non è altro che un array di char, di conseguenza una matrice di stringhe non è altro che una matrice in cui troviamo nella riga i e nella colonna j una stringa (ovvero array di char), di conseguenza una stringa dichiarata nel seguente modo string s[2][2]
conterrà 4 stringhe. Detto ciò, cosa si intende per esattamente con matrice di puntatori a stringhe? Ad esempio la dichiarazione string *s[2][2] è una matrice bidimensionale in cui nella riga i e nella colonna j è presente un puntatore a stringhe, quindi potremmo dire che in ogni elemento di riga i e di colonna j è presente un puntatore a puntatore char (**char)? Non mi è ben chiara questa definizione, infatti nello svolgere l'esercizio non riesco a inserire le stringhe nella matrice bidimensionale, vi allego qui il mio codice
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
#define n 2

int funz(string *M[][n], unsigned short int k, unsigned short int s);

int main()
{
	string *M[n][n];
	unsigned short int k;
	unsigned short int s;
	cout << "Inserire il numero di stringhe minimo in ogni colonna: "; cin >> k;
	cout << "Inserire il numero di vocali minore: "; cin >> s;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < n; j++)
			cin >> *M[i][j];
	cout << funz(M,k,s);
}

int funz(string *M[][n], unsigned short int k, unsigned short int s)
{
	short int n_colonne = 0; //Numero colonne che contengono almeno k stringhe con vocali < s
	short int n_vocali = 0; //Conta le vocali e le confronta con s
	char v[6] = {"AEIOU"};
	for(int i = 0; i < n; i++)
	{
		int n_stringhe = 0;
		for(int j = 0; j < n; j++)
		{
			string sPtr = *M[j][i];
			short int l = sPtr.length();
			for (int z = 0; z < l; z++)
				for (int y = 0; y < 5; y++)
					if(toupper(sPtr[z]) == v[y])
						n_vocali++;
			// Questi ultimi due cicli confrontano le lettere della stringa con le vocali una ad una 
			if(n_vocali < s)
				n_stringhe++;
		}
		if(n_stringhe >= k)
			n_colonne++;
	} return n_colonne;
}
Testo dell'esercizio
ESERCIZIO 2
Scrivere un metodo che prenda in input una matrice di puntatori a stringhe M e due numeri short senza
segno, k ed s, e restituisca il numero di colonne contenenti almeno k stringhe con un numero di lettere vocali
minore di s.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte