程序开发C ++ [错误] id返回1退出状态

时间:2018-11-21 02:17:38

标签: c++

我遇到了这个错误,我尝试了所有的方法来摆脱它并进行编译,但是我没有成功,我在同一网站上搜索了此错误,但对我却没有用,我重新启动了电脑,并且更改文件名,但是我什么也没有,我也不知道 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 ] );
 } 
 } 
 }

2 个答案:

答案 0 :(得分:0)

您声明了despliegaArreglominimomaximopromedio,但仅提供了前三个的实现。

如果您像这样提供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)

我遇到了这个问题,可能您一直在使用任何保留字 并且您尚未声明此保留字的标准库。