2013-08-31 101 views
1

我認爲它應該工作,我試圖做的是捕獲一個值並將其打印在屏幕上,但我得到以下錯誤。在我的代碼錯誤,沒有在這個範圍內聲明

C:\用戶\路易斯\文件\ C++ \ estructura德DATOS \ ejemplo_lista.cpp在 函數 'void mostrar()': 80 13 C:\用戶\路易斯\文件\ C++ \ estructura德 datos \ ejemplo_lista.cpp [錯誤]'list'未在此範圍內聲明 80 20 C:\ Users \ luis \ Documents \ C++ \ estructura de datos \ ejemplo_lista.cpp [錯誤]'value'未在此範圍

------開始主要---------------------------------

int main(){ 

    menu(); 
    show(); 

    getch(); 
} 

------ end MAIN ------------------------------------

//Function Menu 
    void menu() 
    { 
      NODE = NULL; 
     int choice; 
     int value; 
     while(choice!= 2){ 
     printf("********** MENU **********\n"); 
     printf ("1. Login data \n"); 
     printf ("2. exit \n"); 
     printf("**************************\n"); 
     scanf ("%i",&choice); 


       switch (choice){ 
        case 1: 
         printf("Please enter a value \n"); 
         scanf("%i",&value); 
         add (list, value); 
         break; 
        case 2: 
         break; 
       } 
       system("pause"); 
      } 

    } 

輸入功能

void add (NODE &list,int value) 
{ 

    NODE aux_list; 
    aux_list =(data_structure*) malloc (sizeof (data_structure)); 
    aux_list->data = value; 
    aux_list->next = list; 
    list = aux_list; 
} 
void show() 
{ 

    NODE other_list; 
    add(list, value); 
    other_list = list; 
// Display the elements of the list 
    while(other_list != NULL) 
    { 
     printf("%i \n",other_list->data); 
      other_list = other_list->next; 

    } 

} 

---------------------編輯-------------- ------------

ready to solve it this way void mostrar(NODO lista,int valor) { lista=NULL;

+0

有的請翻譯這個德國或任何語言也。 – P0W

+0

這絕對不是德國人,意大利人或西班牙人,我猜:-) –

+3

在'void mostrar()'你使用的名字是'lista'和'valor',但看起來他們之前沒有被聲明過。另一方面,在'void ingresar'中,這些名稱是指參數,所以它們是已知的。 – dyp

回答

1

隨着錯誤消息告訴您,在功能void mostrar()中,您使用的變量listavalor未在此函數的範圍中定義。

+1

此信息是在問題本身的錯誤消息。 – cpp

+0

你的意思是我應該在} {},()中聲明'list'和'value' void mostrar() – Luisruiz

1

mostrar()中,您嘗試使用變量lista。但是在那個範圍內沒有被列入清單。您需要將它作爲參數傳遞,或者在函數中聲明此變量以避免此錯誤。

1

您忘記聲明變量lista的類型, 或者可能將其聲明爲函數mostrar()中的參數。

NODO lista; /* This one */ 

void mostrar(NODO lista)  /* Or this one */ 

對象列表必須在函數mostrar()中可訪問。

(更新:這個問題已經變爲了英文標識,所以我會在下面添加翻譯版本):

NODE list; /* This one */ 

void show(NODE list)  /* Or this one */ 
+0

@DyP不理解你的解決方案。 lista mostrar o lista valor? – Luisruiz

+0

@Luisruiz你必須爲你的程序選擇更好的解決方案。你需要在你的函數mostrar()中有一個類型爲NODO的變量lista(現在叫做show())。解決方案取決於程序的邏輯。如果lista應該保存來自主程序的值,那麼您必須使用第二個解決方案,其中lista是函數的參數。但是,如果lista是一個在mostrar()完成後將被丟棄的變量,那麼lista是臨時的,並且第一個解決方案適用。 – pablo1977

相關問題