2017-11-02 16 views
0

今のところ、sumtwonums.cppファイルからコードを実行できますが、メインから実行しようとすると多くのエラーが発生します。私は非常に長い時間このコードを研削してきましたが、私はそれを手に入れることはできません。 (私はC++の初心者ですので、コードを大幅に改善できます)。
とにかく、sumから実行しようとしたときにエラーが表示されます。C++ - 定義されていない複数ファイルの関数への参照

#include <iostream> 
#ifndef SUMTWONUMS_H 
#define SUMTWONUMS_H 

const int LENGTH = 20; 

struct SumTwoNums{ 
    public: 
     int array[LENGTH]; 
     char c_array[LENGTH]; 
}; 
void input(SumTwoNums &s); 
void sum(SumTwoNums &s1, SumTwoNums &s2, int s[]); 
void print (SumTwoNums &s); 
void print (int a[]); 
#endif 

#include "sumtwonums.h" 

using namespace std; 


void sum(SumTwoNums &s1, SumTwoNums &s2, int s[]){ 
    for (int i = LENGTH-1; i >= 0; i--){ 
     if (s1.array[i] + s2.array[i] + s [i] > 9 && i != LENGTH-1){ 
      s [i] += (s1.array[i] + s2.array[i] - 10); 
      s [i-1] += 1; 
     }else if (s1.array[i] + s2.array[i] + s [i]<= 9 && i != LENGTH-1){ 
      s [i] += s1.array[i] + s2.array[i]; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i]> 9){ 
      s[i] += s1.array[i] + s2.array[i]; 
      s[i-1] += 1; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i] <= 9){ 
      s[i] += s1.array[i] + s2.array[i]; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i] > 9){/////// 
      s [i] += (s1.array[i] + s2.array[i]);       ////Check To see if overflow 
      cout << "There is an overflow" << endl;      /////// 
     } 
    } 
} 
void input(SumTwoNums &s){ 
    int dig = 0; 
    for (int i = 0; i < LENGTH; i++){ 
     s.array[i] = 0; 
    } 
    cout << "Please enter a number:\n"; 
char next; 
int x = LENGTH-1; 
cin.get(next); 
while (next != '\n' && next != 'E' && x >= 0){ 
    dig++; 
    s.c_array[x] = next; 
    cin.get(next); 
    x--; 
} 
for (int i = 1; i <= LENGTH; i++){ 
    if (dig != 0) { 
     s.array[LENGTH - dig] = s.c_array[LENGTH - i] - '0'; 
     dig--; 
     } 
    } 
} 

void print (SumTwoNums &s){ 
    int count = 2; 
    for (int i = 0; i < LENGTH ; i++){ 
     if (s.array[i] != 0 || (s.array[i - 1] != 0 && s.array[i] == 0 && s.array[i + 1] != 0)){ 
       cout << s.array[i]; 
      if (count%3==0 && count != 0 && i != LENGTH-1){ 
       cout << ","; 
      } 
     } 
     count++; 
} 
cout << endl; 
} 
void print (int a[]){ 
    int count = 2; 
    for (int i = 0; i < LENGTH ; i++){ 
     if (a[i] != 0 || (a[i - 1] != 0 && a[i] == 0 && a[i + 1] != 0)){ 
       cout << a[i]; 
      if (count%3==0 && count != 0 && i != LENGTH-1){ 
       cout << ","; 
      } 
     } 
     count++; 
} 
cout << endl; 
} 

sum.cpp次のように示される:

#include <iostream> 
#include "sumtwonums.h" 
using namespace std; 

int main() { 
    SumTwoNums num1; 
    SumTwoNums num2; 
    int total [LENGTH]; 
    int rtotal [LENGTH]; 
    for (int i = 0; i < 20; i ++){ 
     total[i] = 0; 
     rtotal[i] = 0; 
    } 

    input(num1); 
    input(num2); 
    print(num1); 
    print(num2); 
    sum (num1,num2,total); 
    print(total); 

    return 0; 
} 

私はこの質問は前に頼まれているけど、私は答えを見つけることができませんでした、次のように示さ

In function 'main': 
16 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `input(SumTwoNums&) 
17 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `input(SumTwoNums&) 
18 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `print(SumTwoNums&)' 
19 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `print(SumTwoNums&)' 
20 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `sum(SumTwoNums&, SumTwoNums&, int*)' 
21 C:\Users\jozef\Desktop\SYDE 2017\SYDE 121 LABS\Lab702\sum.cpp undefined reference to `print(int*)' 

sumtwonums.cpp適切に理解する。ありがとうございました。

+3

どのようにあなたのプログラムを構築するのですか?すべてのオブジェクトファイルとリンクするか、ビルド時にすべてのソースファイルを使用しますか? –

+0

'sum.cpp'ファイルとは何ですか? – Daniel

+0

http://idownvotedbecau.se/beingunresponsive –

答えて

0

sumtwonums.cppを2つのファイルに分割して機能させる必要があります。

sumtwonums.h

#include <iostream> 
#ifndef SUMTWONUMS_H 
#define SUMTWONUMS_H 

const int LENGTH = 20; 

struct SumTwoNums{ 
    public: 
     int array[LENGTH]; 
     char c_array[LENGTH]; 
}; 
void input(SumTwoNums &s); 
void sum(SumTwoNums &s1, SumTwoNums &s2, int s[]); 
void print (SumTwoNums &s); 
void print (int a[]); 

#endif 

sumtwonums.cpp

#include "sumtwonums.h" 

using namespace std; 


void sum(SumTwoNums &s1, SumTwoNums &s2, int s[]){ 
    for (int i = LENGTH-1; i >= 0; i--){ 
     if (s1.array[i] + s2.array[i] + s [i] > 9 && i != LENGTH-1){ 
      s [i] += (s1.array[i] + s2.array[i] - 10); 
      s [i-1] += 1; 
     }else if (s1.array[i] + s2.array[i] + s [i]<= 9 && i != LENGTH-1){ 
      s [i] += s1.array[i] + s2.array[i]; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i]> 9){ 
      s[i] += s1.array[i] + s2.array[i]; 
      s[i-1] += 1; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i] <= 9){ 
      s[i] += s1.array[i] + s2.array[i]; 
     }else if (i == LENGTH-1 && s1.array[i] + s2.array[i] + s [i] > 9){/////// 
      s [i] += (s1.array[i] + s2.array[i]);       ////Check To see if overflow 
      cout << "There is an overflow" << endl;      /////// 
     } 
    } 
} 
void input(SumTwoNums &s){ 
    int dig = 0; 
    for (int i = 0; i < LENGTH; i++){ 
     s.array[i] = 0; 
    } 
    cout << "Please enter a number:\n"; 
char next; 
int x = LENGTH-1; 
cin.get(next); 
while (next != '\n' && next != 'E' && x >= 0){ 
    dig++; 
    s.c_array[x] = next; 
    cin.get(next); 
    x--; 
} 
for (int i = 1; i <= LENGTH; i++){ 
    if (dig != 0) { 
     s.array[LENGTH - dig] = s.c_array[LENGTH - i] - '0'; 
     dig--; 
     } 
    } 
} 

void print (SumTwoNums &s){ 
    int count = 2; 
    for (int i = 0; i < LENGTH ; i++){ 
     if (s.array[i] != 0 || (s.array[i - 1] != 0 && s.array[i] == 0 && s.array[i + 1] != 0)){ 
       cout << s.array[i]; 
      if (count%3==0 && count != 0 && i != LENGTH-1){ 
       cout << ","; 
      } 
     } 
     count++; 
} 
cout << endl; 
} 
void print (int a[]){ 
    int count = 2; 
    for (int i = 0; i < LENGTH ; i++){ 
     if (a[i] != 0 || (a[i - 1] != 0 && a[i] == 0 && a[i + 1] != 0)){ 
       cout << a[i]; 
      if (count%3==0 && count != 0 && i != LENGTH-1){ 
       cout << ","; 
      } 
     } 
     count++; 
} 
cout << endl; 
} 
関連する問題