2015-11-25 29 views
-2

我正在試圖製作一個C程序(用於學校目的),它讀取區間[0,99]中的數字,並用十個數字創建一個幹葉圖一排的開始,然後是所有的單位。創建一個幹葉圖

下面是示例輸入的:

和輸出應爲:

0 | 12245
2 | 57
5 | 18
9 | 333

,這裏是我的代碼:

// uloha-9-5.c -- Tyzden 9 - Uloha 5 
// Adam Kotvas, 18.11.2015 10:02:12 

#include <stdio.h> 

int main() 
{ 
    int n[100],i=0,j=0,l=0,desiatky[10],temp=0,k=0; 
    while(scanf("%d",&n[i])>0) 
    { 
    if(n[i]>99 || n[i]<0){ 
     continue; 
    } 
    i++; 
    } 

    for(j=0;j<=10;j++) 
    { 
    desiatky[j]=0; 
    } 
    for(j=0;j<i;j++) 
    { 
    desiatky[(n[j]/10)%10]=1; 
    } 
    for(k=0;k<i;k++) 
    { 
    for(j=0;j<i;j++) 
    { 
    if(n[j]>n[j+1] && j!=i-1) 
    { 
     temp=n[j]; 
     n[j]=n[j+1]; 
     n[j+1]=temp; 
    } 
    } 
    } 
    for(j=0;j<10;j++) 
    { 
    if(desiatky[j]==1) 
    { 
     printf("%d | ",j); 
     for(l=0;l<i;l++) 
     { 
      if((n[l]/10)%10==j) 
      printf("%d",n[l]%10); 
     } 
     printf("\n"); 
    } 
    } 
    return 0; 
} 

的問題是,它有利於在給定的間隔內的所有號碼,但是當我嘗試提交它說,錯誤的輸出:(你有什麼想法。 ?什麼可能是可能是錯這個程序

+1

*「當我嘗試提交它,它說的輸出錯誤」 *所以這是一個自動化挑戰?如果所以,或許輸出格式不完全是**問題所要求的。 –

+0

我已經根據您的意思是[stem-and-leaf](https://en.wikipedia.org/wiki/Stem-and-leaf_display)圖表而不是直方圖來編輯該問題。如果這不是你的意思,隨意編輯回來。 – ace

回答

0

你的代碼是有點史詩更重要的一點:

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

int cmp(const void *av, const void *bv) { return *(int*)av - *(int*)bv; } 

int main(void) { 
    unsigned n[1000000], i = 0, x; 
    while (scanf("%d", &x) == 1) if (x < 100) n[i++] = x; 
    if (i == 0) return 0; 
    qsort(n, i, sizeof n[0], cmp); 
    unsigned k = 0; 
    while (k < i) { 
    unsigned d = n[k]/10; 
    printf("%d|", d); 
    while (k < i && n[k]/10 == d) printf("%d", n[k++] % 10); 
    printf("\n"); 
    } 
    return 0; 
}