| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12688 人关注过本帖
标题:【求助】如何输入未知长度的数组啊
只看楼主 加入收藏
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:12 
【求助】如何输入未知长度的数组啊
想要输入一串任意长度的数组
自己写了一点。。
程序代码:
int b[100];
    cout<<"请输入一组整数,数量在100以内"<<endl;
    for(int i=0;i<100;i++)
    {
        cin>>b[i];
        if(b[i]=='over')
            break;

    }
输入over后结束循环 = =,
运行后。。。出现的奇怪的事。。。
。。。话说怎么发图啊
想截图发上来
搜索更多相关主题的帖子: 长度 输入 
2009-09-10 09:36
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
各位大人~~请为小的解惑吧~~~
谢谢了~~~
2009-09-10 10:47
哥特复兴
Rank: 2
来 自:China-上海
等 级:论坛游民
帖 子:20
专家分:64
注 册:2009-6-23
收藏
得分:20 
你定义的上整型的数组,怎么让b[i]==字符串
用这样的数组一般用在字符串上..代码如下:
#include<iostream>  
using namespace std;  
void main()  
{  
    int i;
    int j;
    char b[100];     //定义字符串数组,长度为100;  
    cout<<"请输入任意长度字符串"<<endl;  
    for(i=0; i<100; i++)  
    {  
        cin>>b[i];  
        if(b[i]=='p')   //输入P退出,
            break;  
    }  
    cout<<"输出刚才输入的字符串"<<endl;  
    for(j=0; j<i; j++) //这里需要注意,我犯了好多错误,最后才想到是这里的错误,,输出是长度一定要和输入是的一样,否则会出现内存泄露。。。。
    {  
        cout<<b[j]<<" ";  
    }  
    cout<<endl;  
}
2009-09-10 12:03
哥特复兴
Rank: 2
来 自:China-上海
等 级:论坛游民
帖 子:20
专家分:64
注 册:2009-6-23
收藏
得分:0 
吃饭……
有什么问题留言~~~~~~
2009-09-10 12:06
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
谢谢指教~~~~
原来我输出时候出现的奇怪事物是内存泄漏。。。。。
2009-09-10 12:41
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
还是有问题。。。。
整个代码是这样的
程序代码:
#include "stdafx.h"
using namespace std;
class ARR
{
    int m;                                                       //数组实际元素个数
    int a[100];                                                  //存放原始数组以及结果数组
    int t[100];                                                  //存放每个数据重复次数
public:
    ARR(int c[],int size)                                         
    {
        m=size;
        for(int i=0;i<m;i++)
        {
            a[i]=c[i];
            t[i]=0;
            
        }
    }
    void stl();                                                 //把数组元素从小到大排序
    void delsame();                                             //完成数组a中相同元素的删除工作 以及统计重复次数工作
    void show()                                                 //输出数组
    {

        for(int i=0;i<m;i++)
        {
            cout<<a[i]<<"   ";
        }
        cout<<endl;
    }
    void showT()
    {
        for(int i=0;i<m;i++)
        {
            cout<<a[i]<<"出现了 "<<t[i]<<"次";
            if(((i+1)%3)==0)
                cout<<endl;
        }
    }
};
void ARR::stl()                                     //类外定义函数 完成数组排序工作
{
    int i,j,temp;
    for(i=0;i<m-1;i++)
    {
        for(j=i+1;j<m-1;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
};
void ARR::delsame()                                  //在类的外部定义函数,完成数组a中相同元素的删除工作
{
    int i,j;
    for(i=0;i<m-1;i++)
    {
        t[i]+=1;                                    //统计该元素出现次数
        if(a[i]==a[i+1])
        {
            for(j=i+1;j<m-1;j++)
            {
                a[j]=a[j+1];
            }
            m--;
            i--;
        }
    }
};


int _tmain(int argc, _TCHAR* argv[])
{
    int b[100];
    int i;
    cout<<"请输入一组整数,数量在100以内"<<endl;
    for(i=0;i<100;i++)
    {
        cin>>b[i];
        if(b[i]=='p')
            break;

    }
    ARR v(b,i);
    v.show();
    v.delsame();
    v.show();
    v.showT();
    return 0;
}
想的是输入任意长度的数
排序后把相同的元素删除

修改后还是会出现内存泄露。。。。

2009-09-10 12:49
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
int _tmain(int argc, _TCHAR* argv[])
{
    int b[100];
    int i;
    cout<<"请输入一组整数,数量在100以内"<<endl;
    for(i=0;i<100;i++)
    {
        cin>>b[i];
        if(b[i]=='p')
            break;

    }
    ARR v(b,i);    //这里原来是 ARR v(b,sizeof(b)/sizeof(b[0]))  
    v.show();
    v.delsame();
    v.show();
    v.showT();
    return 0;
}
2009-09-10 12:55
a2696026
Rank: 2
等 级:论坛游民
帖 子:21
专家分:33
注 册:2009-9-9
收藏
得分:0 
回复 5楼 liang890806
就一个短程序  有必要写这么长吗?
2009-09-10 14:02
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
= =
重点是ARR v(b,i)这么写为什么会内存泄漏
错在哪里
如何解决

2009-09-10 14:52
andytony1234
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:102
注 册:2009-11-9
收藏
得分:0 
我也在想这个问题,我用的是Turbor C++;
冥思苦想,然后不断验证,发现这个方法居然可以!!这个是原程序,你看下..
#include<stdio.h>
void main()
{char a[100],i,n;clrscr();
for(i=0;i<100;i++)
{scanf("%c",&a[i]);    /当输入o的时候就表示停止向数组输入元素,/
if(a[i]=='o')
break;}
n=i;                          并且n就是数组长度了里面的元素是(a[0]~a[n-1])
for(i=0;i<=n-1;i++)
printf("%c",a[i]);}

输入:1 2 3 4 5 6 7 8 9 10 o 回车
输出:1 2 3 4 5 6 7 8 9 10


这是个意外,因为我printf函数里明明就是%c为什么输出的还是数字呢,这个我就不理解了....我也是初学...而且scanf函数里,也是要求输入%c(字符)而我却是输入的数字,但是却也行!!
第一次替人回答,呜呜.....
2009-11-09 15:00
快速回复:【求助】如何输入未知长度的数组啊
数据加载中...
 
   



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

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