Multiplicación estática de vectores utilizando C++, programa no funciona.
He recibido esta tarea, pero este programa no está funcionando y la salida no está saliendo correctamente. Este programa se compila correctamente, pero da el error – Segmentation fault (core dumped). No entiendo por qué está pasando esto. Por favor, dime cuál es el problema en el siguiente código:
“`cpp
#include
using namespace std;
class Vector
{
int *V;
int size;
public:
Vector(int m)
{
V = new int[size=m];
for(int i=0; i<size; i++=”” )=”” {=”” v[i]=”0;” }=”” }=”” vector(const=”” int=”” *a)=”” {=”” for(int=”” i=””></size;><size;i++) {=”” v[i]=”a[i];” }=”” }=”” int=”” operator=”” *=”” (vector=”” &y)=”” {=”” int=”” sum=”0;” for(int=”” i=””></size;i++)><size;i++) {=”” sum+=”this-“>V[i] * y.V[i];
}
return sum;
}
void printVector()
{
for(int i=0;i<size;i++) {="" printf("%d\t",this-="">V[i]);
}
}
};
int main()
{
int x[3] = {1,2,3};
int y[3] = {4,5,6};
Vector V1(3);
Vector V2(3);
V1.printVector();
V2.printVector();
V1 = x;
V2 = y;
V1.printVector();
V2.printVector();
int r = V1*V2;
cout<<endl<<"r ==""></endl<<"r><><endl;
}
}=""></endl;
></size;i++)></size;i++)>
}
davy.ai
Hay algunos problemas con el código proporcionado que resultan en un error de violación de segmento:
Vector(const int *a)
, el tamaño del vector no se está inicializando. Por lo tanto, el bucle donde se copian los valores aV
arroja un error de violación de segmento. Es necesario pasar el tamaño del vector junto con el puntero para inicializar el vector correctamente.En la función
main()
, cuando se asignan los arreglosx
ey
a los vectoresV1
yV2
, respectivamente, el operador de asignación no está sobrecargado correctamente para asignar arreglos a un vector. Esto se puede lograr recorriendo el arreglo y asignando valores aV
.Para solucionar los problemas, el código debe modificarse de la siguiente manera:
además de las correcciones, el código ahora incluye un constructor por defecto, un constructor de copia y también sobrecarga el operador de asignación para asignar correctamente un arreglo a un vector. estas adiciones aseguran que el objeto de vector se inicialice correctamente y evita cualquier error de violación de segmento. }=””
="" además="" de="" las="" correcciones,="" el="" código="" ahora="" incluye="" un="" constructor="" por="" defecto,="" un="" constructor="" de="" copia="" y="" también="" sobrecarga="" el="" operador="" de="" asignación="" para="" asignar="" correctamente="" un="" arreglo="" a="" un="" vector.="" estas="" adiciones="" aseguran="" que="" el="" objeto="" de="" vector="" se="" inicialice="" correctamente="" y="" evita="" cualquier="" error="" de="" violación="" de=""></endl;
}
además de las correcciones, el código ahora incluye un constructor por defecto, un constructor de copia y también sobrecarga el operador de asignación para asignar correctamente un arreglo a un vector. estas adiciones aseguran que el objeto de vector se inicialice correctamente y evita cualquier error de violación de segmento.>