Полиморфное сложение в C ++ - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь создать программу, которая добавляет полиморфное число, организованное по строкам и столбцам, так что, надеюсь, если вы посмотрите на созданные мной массивы, вы поймете, что я пытаюсь сделать, но Подумайте об этом так: у вас есть 3 массива A, B, C, и я пытаюсь вычислить A+B=C.

Но я не получаю ничего, кроме глупости, мне нужна помощь, потому что я так мало знаю о структурах данных:

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
   int i,j,A[10][10],B[10][10],C[10][10], nf, nc;
   cout<<"#Rows: "<<endl;
   cin>>nf;
   cout<<"#Columns: "<<endl;
   cin>>nc;


   //For the A part
   for(int i=0; i<=nf;i++){
      cout<<"Enter the row Number  # "<<i;
      for(int j= 0; j<=nc;j++){
         cout<<"Enter Column Column#"<<j<<endl;;  
         cin>>A[i][j];
   }}

   //For the B part     
   for(int i=0; i<=nf;i++){
      cout<<"Enter Row # "<<i<<endl;

      for(int j= 0; j<=nc;j++){
         cout<<"Enter Column# "<<j<<endl;  
         cin>>B[i][j];
   }}


   //Calculation              
   for(int i=0; i<nf;i++)
      for(int j=0;j<nc;j++)
         C[i][j]= A[i][j]+ B[i][j];  


   //output     
   for(int i=0; i<nf;i++)
      for(int j=0;j<nc;j++)
          cout<<C[i][j];  

   system("PAUSE");
   return EXIT_SUCCESS;
}

Ответы [ 4 ]

0 голосов
/ 21 марта 2012

Не усложняйте вещи множеством операторов cout.

cout<<"Enter a["<<i<<"]"<<"["<<j<<"] : ";
cin>>a[i][j];

i = 0 до nf означает, что вы читаете nf+1 элементов.Таким образом, есть массив вне границ.Будьте осторожны с i<nf и i<=nf.

0 голосов
/ 21 марта 2012

границы, которые вы вводите для циклов, я думаю, это не то, что вы хотите, или, по крайней мере, это не согласуется с циклом вычислений

for(int j= 0; j<=nc;j++)  vs  for(int j= 0; j<nc;j++)
0 голосов
/ 21 марта 2012

Надеюсь, это будет ваш ответ:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int i,j,A[10][10],B[10][10],C[10][10], nr, nc;
cout<<"#Rows: "<<endl;
cin>>nr;
cout<<"#Columns: "<<endl;
cin>>nc;


//For the A part
for(int i=0; i<nr;i++){
    for(int j= 0; j<nc;j++){
        cout<<"Enter the A["<<i<<"]["<<j<<"]"<<endl;
        cin>>A[i][j];
    }
}

//For the B part     
for(int i=0; i<nr;i++){
    for(int j= 0; j<nc;j++){
        cout<<"Enter the B["<<i<<"]["<<j<<"]"<<endl;
        cin>>B[i][j];
    }
}


//Calculation              
for(int i=0; i<nr;i++)
    for(int j=0;j<nc;j++)
        C[i][j]= A[i][j]+ B[i][j];


//output     
for(int i=0; i<nr;i++)
    for(int j=0;j<nc;j++)
        cout<<C[i][j];

system("PAUSE");
return EXIT_SUCCESS;
}

0 голосов
/ 21 марта 2012

Вы должны инициализировать свои ячейки равными 0. В противном случае они будут содержать нежелательные значения, которые будут использоваться для добавления.Вы можете сделать это путем инициализации или использования цикла.

int main()
{
int nf, nc, A[10][10]={0}, B[10][10]={0}, C[10][10]={0};


}

У вас есть неиспользуемые переменные i и j.они не являются причиной ошибочного вывода, но все же избегают его.

вы можете найти упрощенную исправленную форму вашей программы здесь (границы массива также были исправлены)

 for(int i=0; i<nf;i++)    
    for(int j= 0; j<nc;j++)

эти циклы используются как на входе, так и на выходе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...