Member 13002485 Ответов: 2

Как я могу удалить эти ошибки и вычислить время выполнения


#include <stdio.h>
        #include <time.h>

        int MaxSubsequenceSum( int,int);
        int  main (void){

            clock_t start, end;
            double run_time;
            int rtime1=((int)run_time);
            double rtime2=(run_time-rtime1)*1000;


              start = clock();
            MaxSubsequenceSum( int A[],int N);

              end = clock();

              run_time=(end-start)/((double)CLOCKS_PER_SEC);
              printf("The runtime of code is %d seconds and %f milliseconds/n",rtime1,rtime2);
            return 0;
        }

        int MaxSubsequenceSum(int A[],int N)
         {

            int ThisSum,MaxSum,i,j;
                MaxSum=0;
                for(i=0;i<N;i++)
                {
                    ThisSum = 0;
                    for(j=i;j<N;j++)
                    {
                        ThisSum +=A[j];
                        if(ThisSum>MaxSum)
                            MaxSum=ThisSum;
                    }
                    }

                    return MaxSum;

         }

Таким образом, вышеупомянутый код и ошибки являются :
. слишком мало аргументов для функции MaxsubsequenceSum(при вызове)
. конфликтующие типы MaxsubsequenceSum(в определении функции)

Что я уже пробовал:

я пытался изменить типы переменных ,размер массива, объявление перед основной функцией, но ничего не получалось.

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
. конфликтующие типы MaxsubsequenceSum(в определении функции)

проблема заключается в прототипе, первый параметр-это int
int MaxSubsequenceSum( int,int);

а в функции есть array ООО Интс
int MaxSubsequenceSum(int A[],int N)

Вам нужно выбрать то, что вы хотите, и сделать так, чтобы оба совпадали.


Рейтинг:
1

Jochen Arndt

Это объявление функции C старого стиля (также называемое прототипом):

int MaxSubsequenceSum( int,int);
Он используется для того, чтобы разрешить вызов этой функции перед реализацией. Поэтому его еще и называют форвардная декларация.

Это определение функции (реализация):
int MaxSubsequenceSum(int A[],int N)
{
    /* ... */
}

Ваша первая ошибка заключается в том, что они не идентичны. Таким образом, вы должны изменить декларацию на:
int MaxSubsequenceSum( int[],int);
или лучше сказать:
int MaxSubsequenceSum(int A[],int N);


Теперь перейдем к использованию (вызову функции). Вы используете
MaxSubsequenceSum( int A[],int N);
что опять же является объявлением, но не вызовом функции. Вы должны использовать что-то вроде этого, где параметры должны быть существующими переменными:
int A[] = { 1, 2, 3 };
int N = 3; /* or N = sizeof(A) / sizeof(A[0]) */
int MaxSum = 0;
/* ... */
MaxSum = MaxSubsequenceSum(A, N);


Смотреть также Декларации, Прототипы, Определения[^]

Как только вы поймете это и исправите свой код, вы можете начать исправлять вычисления времени (на самом деле вы печатаете значения, которые не были рассчитаны с истекшего времени).