Salve a tutti, ho un problema con un programma in C++.
devo inserire una funzione e richiamarla nel main principale ma non mi da come risultato i valori giusti.
potete dare un controllo al codice e individuare il problema? sto sbattendo la capoccia da 3 ore!
/*
Si progetti e si implementi un algoritmo che preso in input un numero
intero 2<n<150:
* 1. acquisisca da standard input gli elementi di un vettore b-dimensionale
A matrice di dimensioni n*n
* 2. verifichi che sulla diagonale principale di A non ci siano elementi
nulli
* 3. invochi una procedura che fornisca su standard output tutte le righe
* dispari di A.
*/
#include <iostream>
using namespace std;
int dispari () { //DICHIARAZIONE FUNZIONE PER LE RIGHE DISPARI DELLA MATRICE
int n;
int A[n][n];
for (int i=0; i<n; i++) {
cout<<endl;
for (int j=0; j<n; j++) {
cout.width(5);
int A[i][j];
cout<<A[i][j];
}
i++;
}
return A[n][n];
}
int main() {
int n;
cout<<"Inserisci un numero interno N compreso tra 3 e 149: ";
cin>>n; //INSERIMENTO VALORE N
if (n<=2 || n>=150) { //CONTROLLO SULL'INSERIMENTO DI N
cout<<"\nValore inserito non corretto."<<endl;
}
else if (n>2 && n<150) {
int A[n][n]; //DICHIARAZIONE ARRAY/MATRICE BI-DIMENSIONALE
for (int i=0; i<n; i++) { //CICLO INSERIMENTO IN MATRICE
for (int j=0; j<n; j++) { //CICLO INSERIMENTO IN MATRICE
cout<<"\nInserisci elemento ("<<i<<","<<j<<"): ";
cin>>A[i][j]; //INSERIMENTO
}
}
cout<<"\nMatrice: "<<endl;
for (int i=0; i<n;i++) { //CICLO STAMPA MATRICE A VIDEO
cout<<endl;
for (int j=0;j<n;j++) { //CICLO STAMPA MATRICE A VIDEO
cout.width(5); //IDENTAZIONE TABELLA A VIDEO
cout<<A[i][j]; //STAMPA A VIDEO
}
}
int cont=0; //INIZIALIZZO A ZERO LA VARIABILE CONTATORE
for (int i=0; i<n; i++) { //CICLO CONTROLLO SULLA DIAGONALE PRINCIPALE
if (A[i][i]==0) { //SE C'È VALORE 0 INCREMENTA LA VARIABILE
cont++;
}
}
cout<<"\n\nCi sono "<<cont<<" elementi nulli nella diagonale principale."<<endl;
cout<<"\n\nRighe dispari della Matrice: "<<endl;
cout<<dispari(); //RICHIAMO LA FUNZIONE PER LE RIGHE DISPARI
} //PARENTESI ELSE IF
cin.get();
return 0;
}