| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 351 人关注过本帖
标题:C语言编程,求高人解答
只看楼主 加入收藏
magepower
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
C语言编程,求高人解答
怎么把一堆数量未知的数据输到数列当中,并且以如下方式表示出来。范围是0到100之内的任何一个数,区间可以自己定
如图:
0- 9 |
10- 19 |**
20- 29 |*
30- 39 |
40- 49 |*
50- 59 |***
60- 69 |*******
70- 79 |*********************
80- 89 |********
90- 99 |**
100-100 |***
搜索更多相关主题的帖子: C语言 编程 
2012-06-16 13:48
magepower
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-16
收藏
得分:0 
我的想法是这样:一个数列统计0到区间值减1;下一个数列统计区间值到区间值的2倍减1;以此类推直到最后一个数列统计最大数字除以区间值;然后所有超出此范围的数字全部作废,输入-1结束
不过不知道怎么把数列输进去
2012-06-16 14:20
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>

int* RandomNumberGenerator(int*, int, int, int);
int* NumberGrouping(int*, int, int, int*);
void PrintAGroup(int, int, int*, int, const char*);
void ShowGroup(int, int, int*);

int main(void)
{
    int* array, *map;
    int low, high, size, mapSize;
    scanf("%d%d%d", &low, &high, &size);
    array = malloc(sizeof(int) * size);
    mapSize = sizeof(int) * (high / 10 + 1 - low / 10);
    map = malloc(mapSize);
    memset(map, 0, mapSize);
    RandomNumberGenerator(array, low, high, size);
    NumberGrouping(array, low, size, map);
    ShowGroup(low, high, map);
    free(array);
    free(map);
    return 0;
}

int* RandomNumberGenerator(int* array, int low, int high, int size)
{
    srand(time(0));
    while (size--)
        array[size] = rand() % (high - low + 1) + low;
    return array;
}

/* map must be initialize to zero */
int* NumberGrouping(int* array, int low, int size, int* map)
{
    int bottom = low / 10;
    while (size--)
        ++map[array[size] / 10 - bottom];
    return map;
}

void PrintAGroup(int low, int high, int* map, int index, const char* format)
{
    int i;
    printf(format, low, high);
    for (i = 0; i < map[index]; ++i)
        putchar('*');
    putchar('\n');
}

void ShowGroup(int low, int high, int* map)
{
    char format[31]; /* "%nd -- %nd |" */
    int width = !high ? 1 : (int)log10(high) + 1;
    int index = 0, i, j;
    sprintf(format, "%%%dd -- %%%dd |", width, width);
    for (i = low; i <= high; i = j + 1) {
        j = (i / 10 + 1) * 10 - 1;
        PrintAGroup(i, j < high ? j : high, map, index++, format);
    }
}

图片附件: 游客没有浏览图片的权限,请 登录注册


通过输入确定区间上限和下限以及数组大小,该数组通过RandomNumberGenerator随机生成,并保证每个数在[low,high]内,然后通过NumberGrouping把分组统计情况写到map里,然后通过ShowGroup可以输出分组情况。

My life is brilliant
2012-06-16 17:23
快速回复:C语言编程,求高人解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031764 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved