我遇到了这个错误,我尝试了所有的方法来摆脱它并进行编译,但是我没有成功,我在同一网站上搜索了此错误,但对我却没有用,我重新启动了电脑,并且更改文件名,但是我什么也没有,我也不知道 const 是否有问题,因为在此错误之前,我得到了C:\ Users \ Brand \ AppData \ Local \ Temp \ ccSqL8DC.o yhh.cpp :(。text + 0xee):未定义对“ promedio(int const *,int)”的引用,这是代码
#include <stdio.h>
#define ESTUDIANTES 3
#define EXAMENES 4
int minimo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
int maximo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
double promedio( const int estableceCalif[], int examenes );
void despliegaArreglo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
int main()
{
int estudiante;
const int calificacionesEstudiantes[ ESTUDIANTES ][ EXAMENES ] ={ { 77, 68, 86, 73 }, { 96, 87, 89, 78 }, { 70, 90, 86, 81 } };
printf( "El arreglo es:\n" );
despliegaArreglo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES );
printf( "\n\nCalificacion mas baja: %d\nCalificacion mas alta: %d\n",
minimo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES ),
maximo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES ) );
for ( estudiante = 0; estudiante < ESTUDIANTES; estudiante++ ) {
printf( "El promedio de calificacion del estudiante %d es %.2f\n", estudiante, promedio( calificacionesEstudiantes[ estudiante ], EXAMENES ) );
}
return 0;
}
int minimo( const int calificaciones[][ EXAMENES ], int alumnos, int
examenes )
{
int i;
int j;
int califBaja = 100;
for ( i = 0; i < alumnos; i++ ) {
for ( j = 0; j < examenes; j++ ) {
if ( calificaciones[ i ][ j ] < califBaja ) {califBaja = calificaciones[ i ][ j ];
}
}
}
return califBaja;
}
int maximo( const int calificaciones[][ EXAMENES ], int alumnos, int
examenes )
{
int i;
int j;
int califAlta = 0;
for ( i = 0; i < alumnos; i++ ) {
for ( j = 0; j < examenes; j++ ) {
if ( calificaciones[ i ][ j ] > califAlta ) { califAlta = calificaciones[ i ][ j ];
}
}
}
return califAlta;
}
void despliegaArreglo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes )
{
int i;
int j;
printf( " [0] [1] [2] [3]" );
for ( i = 0; i < alumnos; i++ ) {
printf( "\ncalificacionesEstudiantes[%d]", i );
for ( j = 0; j < examenes; j++ ) {
printf( "%-5d", calificaciones[ i ][ j ] );
}
}
}
答案 0 :(得分:0)
您声明了despliegaArreglo
,minimo
,maximo
和promedio
,但仅提供了前三个的实现。
如果您像这样提供promedio
的实现,它将编译:
double promedio( const int estableceCalif[], int examenes )
{
return 0.0;
}
当然,这可能不是您promedio
想要的。也许你想要
double promedio( const int estableceCalif[], int examenes )
{
if (examenes ==0) return 0.0;
double average = 0.0;
for (int i=0; i<examenes; ++i)
average += estableceCalif[i];
average /= examenes;
return average;
}
另外,我要指出,您的代码编译为C
,在C++
中标记这样的东西要容易得多。例如,我可以创建一个学生及其考试成绩的列表,并计算每个学生的平均值,如下所示:
#include <vector>
#include <algorithm>
#include <numeric>
using std::vector;
int main()
{
vector<int> student1 = { 56, 90, 72 };
vector<int> student2 = { 90, 98 };
vector < vector<int> > students = { student1, student2 };
for (auto &curStudent : students)
double average = std::accumulate(curStudent.begin(), curStudent.end(), 0.0) / curStudent.size();
}
答案 1 :(得分:0)
我遇到了这个问题,可能您一直在使用任何保留字 并且您尚未声明此保留字的标准库。