Chào mọi người, mình đang viết chương trình về mảng, lúc đầu viết chương trình ở chung file mã nguồn thì chạy được, nhưng sau đó tách chương trình ra thành các file như sau: main.cpp, array.cpp và array.h và làm Makefile nhưng khi chạy Makefile nó báo lỗi như sau:
Để chạy được chương trình thì mình cần chương các file obj của các file .cpp, sau đó link các file .o lại với nhau nhưng không hiểu sao lỗi báo là không hiểu các hàm mình đã viết trong chương trình và trong Makefile mình đã thực hiện như sau:
CXX = g++
CXXFLAGS = -Wall -g
main: main.o array.o
$(CXX) $(CXXFLAGS) -o main main.o array.o
# The main.o target can be written more simply
main.o: main.cpp array.h array.cpp
$(CXX) $(CXXFLAGS) -c main.cpp
array.o: array.h array.cpp
$(CXX) $(CXXFLAGS) -c array.cpp
main.cpp
#include <iostream>
#include "array.h"
using namespace std;
int main()
{
int array [6] = {1, 5, 6, 2, 4, 8};
char ArrayCore [] = "ArrayCore";
char *ArrayC = ArrayCore;
int array_copy [6] = {0};
char ArrayCopy [] = "ArrayCopy";
char *ArrayCy = ArrayCopy;
int sum = 0;
double average_value = 0;
int giatriMax = 0;
// Hien thi array
hienthi(array, 6, ArrayCore);
cout << "================================" << endl;
hienthi(array_copy, 6, ArrayCopy);
// Tong cac phan tu trong array
sum = sum_array(array, 6);
cout << "Tong cac gia tri trong array = " << sum << endl;
// average value in array
average_value = average_array (array, 6);
cout << "Trung binh cong cac phan tu trong array = " << average_value << endl;
// Copy du lieu mang array vao mang array_copy
copy_array (array, array_copy, 6);
cout << "Moi ban nhap vao gia tri Max: ";
cin >> giatriMax;
maximun_array (array, 6, giatriMax);
return 0;
}
array.cpp
#include <iostream>
#include "array.h"
using namespace std;
void hienthi (int array1 [], int size_array, char *name)
{
int i = 0;
for (i = 0; i < size_array; i++)
{
cout << "Value " << name << "[" << i << "] = ";
cout << array1[i] << endl;
}
}
int sum_array (int array2 [], int size_array)
{
int sum = 0, i = 0;
for (i = 0; i < size_array; i++)
{
sum = sum + array2[i];
}
return sum;
}
double average_array (int array3 [], int size_array)
{
double sum = 0;
for (int i = 0; i < size_array; i++)
{
sum = sum + array3 [i];
}
return (double(sum/size_array));
}
void copy_array (int array4 [], int array5 [], int size_array)
{
for(int i =0; i < size_array; i++)
{
array5 [i] = array4 [i];
cout << "After copy, array_copy [" << i << "] " << "have value: " << array5[i] << endl;
}
}
void maximun_array (int array6 [], int size_array, int valueMax)
{
for (int i = 0; i < size_array; i++)
{
if(array6[i] > valueMax)
{
array6[i] = 0;
}
cout << "After compare, array [" << i << "] " << array6[i] << endl;
}
}
array.h
#ifndef _ARRAY_H
#define _ARRAY_H
void hienthi (int array1 [], int size_array, char *name);
//Tạo một function tongArray để tính tổng các giá trị chứa trong nó (sử dụng return để trả về giá trị).
int sum_array (int array2 [], int size_array);
// Tạo một function trungBinhArray để tính trung bình các giá trị chứa trong nó.
double average_array (int array3 [], int size_array);
// Tạo một function copyArray để chép nội dung array này sang một array khác.
void copy_array (int array4 [], int array5 [], int size_array);
/* Viết một function maximumArray có nhiệm vụ so sánh tất cả các giá trị chứa bên trong array với
giaTriMax. Nếu có giá trị lớn hơn biến số giaTriMax đưa vào, nó sẽ chuyển thành 0 */
void maximun_array (int array6 [], int size_array, int valueMax);
// Hãy viết một function sapXepArray sắp xếp lại các giá trị bên trong theo thứ tự tăng dần.
void arrange_incremental_array (int array7 [], int size_array);
#endif
Tìm mãi mà mình không biết mình đã thiếu sót ở đâu.
Hiện mình đang làm trên máy Ubuntu và dùng g++. Mong mọi người giúp đở .