簡體   English   中英

調試horner的規則程序

[英]debug horner's rule programme

我是初學者,完全糊塗了。 我的c ++代碼中出現兩個錯誤:

程序:32:5:錯誤:重新定義'main'程序:3:6:注意:'main'的先前定義在這里

給出一個n次多項式。 多項式的形式為P(x)= anxn + an-1xn-1 + ... + a0。 對於給定值k和m,您需要在Horner規則的第m次迭代結束時找到P(k)。 Horner規則涉及的步驟如下,

Pn(x)= an

Pn-1(x)= an-1 + x * Pn(x)第1次迭代。

Pn-2(x)= an-2 + x * Pn-1(x)第二次迭代。

P0(x)= a0 + x * P1(x)第n次迭代。

通常,Pi(x)= ai + x * Pi + 1(x)和P0(x)是最終結果。 程序的輸入如下,

第1行包含由空格分隔的整數n,m和k。

第2行包含由空格分隔的系數a,an-1 ...,a0。

INPUT:整數n,m,k和如上所述的系數。

OUTPUT:第m次迭代結束時的P(k)值。

樣本輸入:

2 2 5

3 2 1

樣本輸出:

86

約束:

1 <= n,k,m <= 10

0 <= ai <= 10

   #include <stdio.h>  
 #include <string.h>  
 int main() {  
   int num, i, j, result, index;  
   char name[11][11];   
   char temp[11];           
   scanf("%d\n", &num);  
   for(i = 0; i < num; i++)  
     scanf("%s\n", name[i]);  
   for(i = 0; i < num; i++) {   
     index = i;  
     for(j = i + 1; j < num; j++) {  
       result = strcmp(name[index], name[j]);  
       if(result > 0)                  
         index = j; 
         }  
     strcpy(temp, name[index]);  
     strcpy(name[index], name[i]);           
     strcpy(name[i], temp);  
   }  
   for(i = 0; i < num-1; i++) {  
     printf("%s", name[i]);  
     printf("\n");  
   }  
   printf("%s", name[num-1]);  
   return 0;  
 }  

#include<stdio.h>

int horner(int [], int, int);
int main()
{
    int n, m, k, i;
    int a[10];
    scanf("%d%d%d",&n,&m,&k);
    for (i=0; i<=n; ++i){
        scanf("%d",&a[i]);
    }
    printf("%d",horner(a,m,k));
    return 0;
}

int horner(int a[], int m, int k){
    if (m==0){
        return a[m];
    }
    else{
        return a[m] + k * horner(a,m-1,k);
    }
    }

錯誤消息似乎已經很好地解決了問題。 你有兩個主要功能。 你只能有一個,所以選擇一個並刪除另一個。

Program:32:5: error: redefinition of 'main'

在“程序”第32行第5列中,標識符main在同一范圍內第二次定義。

Program:3:6: note: previous definition of 'main' was here 

第一個定義是在“程序”第3行第6列。

你在這。 您不能兩次定義相同的功能。 真的沒有什么可補充的。


除了:

  • 使用一致的縮進。 總是四個空間是一個很好的規則。 避免使用制表如果可以的話,他們是在自找麻煩。
  • 始終{}放在ifforwhile的塊周圍,即使它們只是一行。 就個人而言,我甚至在塊為空時添加它們,添加// EMPTY注釋以明確表示空虛不是由於簡單的輸入錯誤。
  • 空白是免費的。 它不會減慢您的打字速度,它確實使閱讀源變得更加容易。 閱讀源代碼頻率遠遠超過鍵入源代碼,因此請您自己這樣做。

然后是調試101:

  • 切掉一些看起來不像是對你的問題有貢獻的來源(在這種情況下,是“重新定義'主'”,而不是霍納的規則)。
  • 檢查問題是否仍然存在。
  • 切斷更多來源,直到找到使您的錯誤消失的ONE更改。 問題現在對你來說很明顯, 或者你找到了一個最小的例子來發布像StackOverflow這樣的東西。

你可能已經基本上切掉了所有東西並最終得到:

int main()
{
    return 0;
}

int main()
{
    return 0;
}

嗯......似乎是什么問題? 也許我重新定義'main()'? ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM