Hello everyone. I'm writing a program which uses a class called matrix. I have written all of the different functions, constructor, etc.
When I run the program I receive "Constructo r", which I placed in the constructor, and then the program crashes. I have no clue where my problem is.
The matrix is for size 2x2 up to 10x10, and it must be square.
Below is the code: -
#include <iostream>
-
#include <ctype.h>
-
using namespace std;
-
int innerprod(int s[][10],int t[][10],int r,int c,int size)
-
{
-
int temp=0,i;
-
for (i=0;i<=size;++i)
-
{
-
temp=temp+s[r][i]*t[i][c];
-
}
-
return temp;
-
}
-
class Matrix
-
{
-
public:
-
~Matrix(){};
-
Matrix();
-
void readm();
-
void addm(Matrix);
-
void multm(Matrix);
-
void print();
-
private:
-
int a[10][10];
-
int size;
-
};
-
Matrix::Matrix()
-
{
-
cout<<"Constructor"<<endl;
-
int i=0, j=0;
-
for (i=0;i<=10;++i)
-
for (j=0;j<=10;++i)
-
{
-
a[i][j]=0;
-
}
-
}
-
void Matrix::readm()
-
{
-
int i=0,j=0;
-
for (i=0;i<=10;++i)
-
for (j=0;j<=10;++j)
-
{
-
cin>>a[i][j];
-
}
-
}
-
void Matrix::addm(Matrix B)
-
{
-
int i=0,j=0;
-
for (i=0;i<=10;++i)
-
for (j=0;j<=10;++j)
-
{
-
a[i][j]=a[i][j]+B.a[i][j];
-
}
-
}
-
void Matrix::multm(Matrix B)
-
{
-
int i=0,j=0,temp[10][10],n=2;
-
for(i=0;i<=10;++i)
-
for (j=0;j<=10;++j)
-
{
-
temp[i][j]=innerprod(a,B.a,i,j,n);
-
}
-
for (i=0;i<=10;++i)
-
for (j=0;j<=10;++j)
-
{
-
a[i][j]=temp[i][j];
-
}
-
}
-
void Matrix::print()
-
{
-
int i=0,j=0;
-
for (i=0;i<=10;++i)
-
{
-
cout<<endl<<endl;
-
for (j=0;j<=10;++j)
-
{
-
cout<<" "<<a[i][j];
-
}
-
}
-
cout<<endl;
-
}
-
void main()
-
{
-
char choice;
-
Matrix x,y;
-
cout<<" Welcome to Matrix Manipulations."<<endl;
-
x.print();
-
cout<<" You may add or multiply a matrix."<<endl;
-
cout<<" Enter choice: (a)dd or (m)multiply. "<<endl;
-
cin>>choice;
-
choice>>tolower(choice);
-
cout<<" Enter a square matrix from 2x2 to 10x10 in row order:"<<endl;
-
x.readm();
-
switch(choice)
-
{
-
case 'a':cout<<"Enter a square matrix from size 2x2 to 10x10 in row order:"<<endl;
-
y.readm();
-
x.print();
-
cout<<endl<<" +";
-
y.print();
-
cout<<endl<<" =";
-
x.addm(y);
-
x.print();
-
break;
-
case 'm':cout<<"Enter a square matrix from size 2xe to 10x10 in row order:"<<endl;
-
y.readm();
-
x.print();
-
x.multm(y);
-
cout<<endl<<" *";
-
y.print();
-
cout<<endl<<" =";
-
x.print();
-
break;
-
default: cout<<" INVALID CHOICE!";
-
break;
-
};
-
}
-
-
Thanks,
J
18 2471 JosAH 11,448
Recognized Expert MVP
Your loops all have an off by one error. When the maximum dimension of an array
equals 10, valid index values are 0, 1, 2, 3, 4, 5, 6 , 7, 8, and 9 (count them:
there are 10 different index values). Therefore your loops should all have a
terminating condition such as: -
for (int i= 0; i < 10; i++) ...
-
kind regards,
Jos
Back to my rescue again hun JosAH?
I understand what you're saying, and that is right...I wasn't thinking when I made them less than or equal to 10. The program still crashes, so the functions aren't going out of scope (or whatever it's called).
J
JosAH 11,448
Recognized Expert MVP
Back to my rescue again hun JosAH?
I understand what you're saying, and that is right...I wasn't thinking when I made them less than or equal to 10. The program still crashes, so the functions aren't going out of scope (or whatever it's called).
J
I took a bit closer look at your code: have a look at the inner loop in your ctor:
it increments 'i' instead of 'j' and it will shoot you in your foot for it ;-)
kind regards,
Jos
Awesome. I never used 'i' and 'j' before because they look so much alike! But seems that my instructor uses them so I've started.
I also removed the destructor function...whic h stopped the program from crashing. Do you know why that would be?
J
I know need to set the size of my matrix to the input from the user from the default size of the matrix (the constructor). Do I need to create an entirely differnent function for this?
something like:
void SetMatrix() ?
I know need to set the size of my matrix to the input from the user from the default size of the matrix (the constructor). Do I need to create an entirely differnent function for this?
something like:
void SetMatrix() ?
Is passing the size of the array to the functions just like passing any other info to a function?
Thanks,
J
Well I have found my problem, however there is a problem with my multiplication.
J
JosAH 11,448
Recognized Expert MVP
Well I have found my problem, however there is a problem with my multiplication.
J
What's the problem then? And please don't say "it produces the wrong results" ;-)
kind regards,
Jos
Hah. Well it does give the wrong answer. Anyway, I think the problem is in the innerprod function. When I do addition the program works great. When I do the multiplication it returns a HUGE number for a matrix with all 1's as the input. I pass all types of information to the innnerprod function including both matrices and size. The size is correct, however the numbers within the matrix are incorrect.
I'm going to check my code and make sure the one posted in the thread is up to date.
Thanks,
J
Sign in to post your reply or Sign up for a free account.
Similar topics |
by: Ben Ingram |
last post by:
Hi all,
I am writing a template matrix class in which the template parameters are
the number of rows and number of columns. There are a number of reasons
why this is an appropriate tradeoff for my particular application. One of the
advantages is that the _compiler_ can force inner matrix dimensions used in
multiplication to agree. A _complie-time_ error will be triggered if you
write A * B and the number of coluns in A does not equal the...
|
by: Steven T. Hatton |
last post by:
This is a purely *hypothetical* question. That means, it's /pretend/,
CP. ;-)
If you were forced at gunpoint to put all your code in classes, rather than
in namespace scope (obviously classes themselves are an exception to this),
and 'bootstrap' your program by instantiating a single application object
in main(), would that place any limitations on what you could accomplish
with your program? Are there any benefits to doing things that...
|
by: Srini nandiraju |
last post by:
Hi folks,
I am trying to implement a friend class and the following is what I did.
Please scroll down.
/***************** CODE **********************************/
class BKP
{
private:
int nVar;
|
by: Steven T. Hatton |
last post by:
This is a question about coding styles. I've seen some cases where the
programmer has redeclared the pure virtual functions from an interface
class in the implementation derived from it. For example, I have this
abstract base class:
namespace widgets {
template<Var_T=float>
class VFunctor_IF {
public:
virtual void operator()(const std::vector<Var_T>& vars_ptr) = 0;
|
by: Desperate |
last post by:
I want to create class Matrix which contains array of class Rows and some additions
Class Rows contains array of Cells
Here is the declaration
public class Cell
public int value = 0
public int color = 0
public int background = 0
| |
by: Duncan M Gunn |
last post by:
Hi,
I need to store the following matrix of values:
T U V
A 2 1 1
B 2 - -
C - - 2
Where (-) is an empty cell.
|
by: toton |
last post by:
Hi,
I have a STL vector of of characters and the character class has a
Boost array of points.
The things are vector<Characterchars; and
class Character{
private:
array<Point,Npoints;
};
Now are the memory layout is contiguous? i.e all the character resides
side by side just like array, and all Points side by side insede the
|
by: MathStuf |
last post by:
I am working on a class that will be a matrix based on a vector of
vectors. I am having trouble with the following code causing errors on
compilation:
template<class Tclass MatrixBase
{
public:
MatrixBase()
{
width = 0;
|
by: almurph |
last post by:
Hi everyone,
Concerning the Needleman-Wunsch algorithm (cf.
http://en.wikipedia.org/wiki/Needleman-Wunsch_algorithm) I have
noticed a possible loop.
Inside the algorithm there is an important decision making mechanism.
Its a "if, else if, else if" structure like:
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |