Salve a tutti,
Ho un file .h precompilato e per esercizio devo implementare nel file .cpp ciò che è stato scritto nell'header dopodiché dovrò inserirlo in un posto che con il file di test correggerà, senza la necessità di scrivere il main.
ovviamente ho provato a scriverlo il main per testare a mia volta e non dà errori di compilazione.
Su tre test ne passa solo 1, e mi avverte che l'array non è inizializzata a zero, però non ho capito come mai.
Oltretutto credo di non aver compreso cosa richiede il testo riguardo l'uso del metodo get e metodo set, infatti sono momentaneamente uguali, proprio perché non ho inteso cosa abbiano di diverso, ma credo siano entrambi sbagliati dal momento che il test non lo passano
il testo dell'esercizio è il seguente :
-creare una matrice impostando tutti i valori a zero
-se si cerca di impostare un valore a coordinate fuori dal range della dimensione della matrice il metodo setValue rende false; se si imposta un valore a coordinate accettabili rende true.
-se si cerca di ottenere come terzo argomento del metodo getValue un valore a coordinate fuori dal range il metodo rende fals, altrimenti rende true, mentre il valore della matrice è reso usando l'argomento.
il file .h
#ifndef SIMPLEMATRIX_H_
#define SIMPLEMATRIX_H_
class SimpleMatrix {
public:
SimpleMatrix(int r, int c);
~SimpleMatrix();
void print();
bool setValue(int x, int y, int v);
bool getValue(int x, int y, int& v);
private:
int rows;
int cols;
int* data;
};
mentre il .cpp
#include "SimpleMatrix.h"
#include <iostream>
using namespace std;
SimpleMatrix::SimpleMatrix(int r, int c) {
rows = r;
cols = c;
int dim = rows*cols;
data = new int[rows*cols];
for(int i = 0; i < dim; i++)
data[i]=0;
}
SimpleMatrix::~SimpleMatrix() {
delete []data;
}
void SimpleMatrix::print(){
for(int i = 0; i < rows*cols ; i++)
cout<< data[i] <<endl;
}
bool SimpleMatrix::setValue(int x, int y, int v) {
if((v >= 0) && (v <= x && v <= y)){
cout<< "vero set" <<endl;
return true;
}
else {
cout << "falso set" << endl;
return false;
}
}
bool SimpleMatrix::getValue(int x, int y, int &v) {
if((v >= 0) && (v <= x && v <= y)){
cout<< "vero get" <<endl;
return true;
}
else {
cout << "falso get" << endl;
return true;
}
}
grazie in anticipo a chi risponderà