2015-10-15 65 views
0

我試圖讓自己更清楚的問題,但我不知道如何問我的問題。 所以我想創建一個代碼,我在其中輸入N張票和N個贏家。例如:在C中使用數組(用另一個輸入打印輸入)

輸入:

5 3 (Here is 5 and a 3, each one a different input) 
382 
55 
44 
451 
128 
1 
4 
3 

輸出:

382 
451 
44 

所以我有什麼的代碼是這樣的:

#include <stdio.h> 

int main() 
{ 
    int winners;  
    int n; 
    int m; 
    char ticketWinners[1000][100], ticket[1000]; 
    int i; 
    int j; 
    int max[100]; 

    scanf("%d", &n); //Input for Number of tickets 
    scanf("%d", &m); //Input of the ticket numbers(order) that won 

    for(i=0;i<n;i++) 
    { 
     scanf("%s",&ticket[i]); 
     { 
      for(j=0; j<m;j++) 
      { 
       scanf("%s", &ticketWinnersj]); 
      } 

      if (j=i); 
       printf("%d", winners); 
     } 
    } 
} 

的事情是,我不知道如何打印票1,票4和票3(我可以選擇憑藉輸入贏得哪張票,因此不是1,4和3;我可以分別選擇3,5和1 )

回答

2

如果我正確理解你的問題,以下應該工作。

在原始代碼中有一個嵌套循環。我假設這不是這個意圖。

在原始代碼中,整數被讀入char數組中。我將其更改爲int,因爲它更適合程序邏輯。

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    int winners; 
    int n; 
    int m; 
    int ticketWinners[1000], ticket[1000]; 
    int i; 
    int j; 
    int max[100]; 

    scanf("%d", &n); //Input for Number of tickets 
    scanf("%d", &m); //Input of the ticket numbers(order) that won 

    for(i = 0; i < n; i++) 
    { 
     scanf("%d", &ticket[i]); 
    } 

    for(j = 0; j < m; j++) 
    { 
     scanf("%d", &ticketWinners[j]); 
    } 

    for(j = 0; j < m; j++) 
    { 
     // ticketWinners[] has the index of winners. Lets access 
     // ticket[] with those indices. Since input index starts 
     // from 1 rather than 0, subtract 1 
     printf("%d \n", ticket[ticketWinners[j] - 1]); 
    } 
} 
+1

我認爲你對這個問題的解釋是正確的(起初解碼有點困難)。但幾個尼特。爲什麼'scanf(「%s」)'然後'atoi'而不是直接使用'scanf(「%d」)'?在使用它作爲最後'for'循環中'ticket'的索引之前,可能應該對輸入進行清理。 – kaylum

+0

你會很好地解釋你的解決方案與原來相比有什麼不同。 (現在您已經編輯了代碼,這樣做更有意義。)請注意,在使用結果之前確保每個'scanf()'操作都成功是一個好主意。 –

+0

@kaylum我只是修復它 – knightrider