问个很囧的问题
在做ACM的期末题,当初偷懒了几节课,结果所有没做出来的都卡在一处了一行输入N个数据(不知N是多少,只知道N的范围),如何将其读取并且分别储存到一组变量里
郁闷死啊郁闷死,求教各位大神,我也搜两道例题看看去
郁闷,搜了好几题,都是已知N的个数的,囧ing
说一句,要C的…… c已经扔得差不多了。。。囧
char buf
gets(buf)
buf 按指定格式划分转数组
这个意思? 恩,scanf估计行不通,想过用数组存,但这样存起来每一位都是一个元素,不好计算,比如输入:
2 15 36 153 4
会存成
'2',' ','1','5',' ','3','6',' ','1','5','3',' ','4'
好好的一个数字就这样分开了,还要很麻烦的重组起来,不知道有没有方便点的录入方法? #include "stdio.h"
int WordToNum (char* word, int len) {
int num = 0;
for (int i = 0; i < len; i++) {
num *= 10;
num += (word - '0');
}
return num;
}
int* Convert(char* buf, int len) {
char word;
int wordIndex = 0;
int* result = new int;
result = 0;
for (int i = 0;i < len; i++) {
if (buf == ' ') {
result ++;
result] = WordToNum(word, wordIndex);
wordIndex = 0;
} else {
word = buf;
wordIndex ++;
}
}
if (wordIndex > 0) {
result] = WordToNum(word, wordIndex);
}
return result;
}
int main() {
char buf;
gets(buf);
int len = 0;
for (int i = 0; i < 100; i++) {
if (buf == '\0') {
len = i;
break;
}
}
printf("\ninpute: %s\n", buf);
printf("\nlen=%d\n", len);
int* result = Convert(buf, len);
printf("\n#result = %d\n", result);
for (int i = 1; i <= result; i++)
printf("\n%d", result);
} 输出:
C:\C_src>g++ test.cpp -o test
C:\C_src>test
1 2 3 4 5 6 10 200 3000 40000 500000
inpute: 1 2 3 4 5 6 10 200 3000 40000 500000
len=36
#result = 10
1
2
3
4
5
6
10
200
3000
500000
C:\C_src> 还是用数组转化啊,好麻烦,呵呵,没办法了,就这样吧,谢了! 你们老师要是允许用库的话,找个string的库,会简单很多,几个api一组合就差不多了 还有在游戏论坛上写作业的
admire 这个玻璃
搞定了
还是不想用string的玩法,回去再详细查了下scanf的语句,找到解了给的数据不知道N为多少,但是是以0为结束标记,所以可以这样
设n的最大数量为N,则程序可以为
int i;
int n;
int len;
for(i=0,len=1;i<n;i++)
{
scanf("%d",&n);
len++;
if(a==0)
break;
}
如此即可 分项输入的阿,看来俺是需求理解错误。。。囧
又看了一遍自己写的东西,可以通过char*的\0方式结束,不一定要传个len进去
果然扔得差不多了ttk_33
[ 本帖最后由 duno 于 2009-6-11 10:54 PM 编辑 ]
页:
[1]