| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4807 人关注过本帖
标题:从键盘输入数据对数组进行初始化,编写计算数组元素的最大值、最小值和平均 ...
只看楼主 加入收藏
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:16 
从键盘输入数据对数组进行初始化,编写计算数组元素的最大值、最小值和平均值和删除某一个位置元素的函数。这是作业,我写了一道程序,就是不知道哪里错误了,希望大神可以
2、数组操作,参见下例程序,熟悉数组运算。
#include <iostream>
using namespace std;
void sort(int T[])
{int temp;
    for (int i=0;i<20;i++)
    {
        for (int j=i+1;j<20;j++)
        {
            if (T[i]<=T[j])
            {
                temp=T[i];
                T[i]=T[j];
                T[j]=temp;
            }
        }
    }
}

int search(int T[],int key)
{
    int index;
    for(int i=0;i<20;i++)
    {
        if (T[i]==key)
        {    index=i;
            break;
        }

    }
    return index;
}
void main()
{
    int A[20]={12,23,34,10,16,45,29,34,98,56,67,78,23,44,55,66,77,88,99,69};
   
    sort(A);

    for (int i=0;i<20;i++)
    {
        cout<< A[i] <<"  ";   
    }
    int kk;
    cout<<"输入要查找的数据:";
    cin>>kk;
    kk=search(A,kk);
    cout <<"查找的数据在数组的第"<<kk<<"位置。"<<endl;


}
3、按照上例的方法生成一个一维数组,从键盘输入数据对数组进行初始化,编写计算数组元素的最大值、最小值和平均值和删除某一个位置元素的函数。

以下是我的程序
//从键盘输入数据对数组进行初始化,编写计算数组元素的最大值、最小值和平均值和删除某一个位置元素的函数//

#include "stdafx.h"
#include <iostream>
using namespace std;
int A[];

void max(int T[])//这是求最大值的函数//
{   int temp;
    for (int i=0;i<5;i++)
    {
        for (int j=i+1;j<5;j++)
        {
            if (T[i]<=T[j])
            {
                temp=T[i];
                T[i]=T[j];
                T[j]=temp;
            }
        }
    }
    cout<<T[0];
}

void min(int T[])//这是求最小值的函数//
{   int temp;
    for (int i=0;i<5;i++)
    {
        for (int j=i+1;j<5;j++)
        {
            if (T[j]<=T[i])
            {
                temp=T[i];
                T[i]=T[j];
                T[j]=temp;
            }
        }
    }
       cout<<T[0];
}

void average(int A[],int aver)//这是最平均值的函数,但不知道为什么输出的时候就是没有初始化//
{   int sum;

    for (int i=0;i<5;i++)
    {
       sum+=A[i];
    }
    aver=sum/5;
    cout<<aver;  
}
void delete_item(int A[], int item, int* n) //这是删除一个数据的函数,我自己上网找的,因为删除其中一个数据是可以找到它然后把后面的元素往前推//
{
  int i, j;
  for(i=0;i <(*n);i++)
  {
    if(A[i]==item)
    {
      for(j=i;j <(*n);j++)
        A[j]=A[j+1];
      (*n)--;
    }
  }


 
void main()
{   int aver;
    int A[5]={0};
    for(int i=0;i<5;i++)
    {
    cout<<"请输入第"<<i<<"个数据:";
    cin>>A[i];
    }
   
    cout<<"max=";
    max(A);
    cout<<""<<endl;
    cout<<"min=";
    min(A);
    cout<<""<<endl;
    cout<<"average=";
    average(A,aver);
    cout<<""<<endl;
   
    int n;
    n=sizeof(A)/sizeof(int); //这个是引用了C语言的,但是我学的是C++,希望通过visualc++6.0就可以编译//
    printf("n=%d\n", &n);
    delete_item(A, A[5], n);
for(;i<5;i++)
    {  cout<<A[i]<<" ";
    }

}



C:\Program Files\Microsoft Visual Studio\MyProjects\shiyan6\shiyan6.cpp(70) : error C2601: 'main' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\shiyan6\shiyan6.cpp(97) : fatal error C1004: unexpected end of file found
这是编译出现的错误,我不知道为什么会变成这个样子。希望高人帮我看看哪里需要改的哟,谢谢啦,辛苦了~
搜索更多相关主题的帖子: include search 平均值 最大值 
2014-12-15 09:47
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:5 
参考一个这个代码:
程序代码:
#include <iostream>
using namespace std;
int A[];
void max(int T[])//这是求最大值的函数//
{   int temp;
for (int i=0;i<5;i++)
{
    for (int j=i+1;j<5;j++)
    {
        if (T[i]<=T[j])
        {
            temp=T[i];
            T[i]=T[j];
            T[j]=temp;
        }
    }
}
cout<<T[0];
}
void min(int T[])//这是求最小值的函数//
{   int temp;
for (int i=0;i<5;i++)
{
    for (int j=i+1;j<5;j++)
    {
        if (T[j]<=T[i])
        {
            temp=T[i];
            T[i]=T[j];
            T[j]=temp;
        }
    }
}
cout<<T[0];
}
void average(int A[],int aver)//这是最平均值的函数,但不知道为什么输出的时候就是没有初始化//
{   int sum = 0;
for (int i=0;i<5;i++)
{
    sum+=A[i];
}
aver=sum/5;
cout<<aver;
}
void delete_item(int A[], int item, int n) //这是删除一个数据的函数,我自己上网找的,因为删除其中一个数据是可以找到它然后把后面的元素往前推//
{
    int i, j;
    for(i=0;i <(n);i++)
    {
        if(A[i]==item)
        {
            for(j=i;j <(n);j++)
                A[j]=A[j+1];
            (n)--;
        }
    }
}

    void main()
    { 
        int aver = 0;
    int A[5]={1,2,3,4,5};
    //for(int i=0;i<5;i++)
    //{
    //    cout<<"请输入第"<<i<<"个数据:";
    //    cin>>A[i];
    //}
    cout<<"max=";
    max(A);
    cout<<""<<endl;
    cout<<"min=";
    min(A);
    cout<<""<<endl;
    cout<<"average=";
    average(A,aver);
    cout<<""<<endl;
    int n;
    n=sizeof(A)/sizeof(int); //这个是引用了C语言的,但是我学的是C++,希望通过visualc++6.0就可以编译//
    delete_item(A, A[4], n);
    for(int i = 0;i<n - 1;i++)
    {
        cout<<A[i]<<" ";
    }
    cout<<endl;
}


~~~~~~我的明天我知道~~~。
2014-12-15 10:10
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
收藏
得分:0 
回复 2楼 xufan
谢谢你,可是我要从键盘中输入数组元素,而且要随机删除一个数据,就是指定删除A[3]才可以哦,可以再帮我看看嘛,感激不尽~
2014-12-15 10:16
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
收藏
得分:0 
回复 2楼 xufan
#include "stdafx.h"
#include <iostream>
using namespace std;
int A[];
void max(int T[])//这是求最大值的函数//
{   int temp;
for (int i=0;i<5;i++)
{
    for (int j=i+1;j<5;j++)
    {
        if (T[i]<=T[j])
        {
            temp=T[i];
            T[i]=T[j];
            T[j]=temp;
        }
    }
}
cout<<T[0];
}
void min(int T[])//这是求最小值的函数//
{   int temp;
for (int i=0;i<5;i++)
{
    for (int j=i+1;j<5;j++)
    {
        if (T[j]<=T[i])
        {
            temp=T[i];
            T[i]=T[j];
            T[j]=temp;
        }
    }
}
cout<<T[0];
}
void average(int A[],int aver)//这是最平均值的函数,但不知道为什么输出的时候就是没有初始化//
{   int sum = 0;
for (int i=0;i<5;i++)
{
    sum+=A[i];
}
aver=sum/5;
cout<<aver;
}
void delete_item(int A[], int item, int n) //这是删除一个数据的函数,我自己上网找的,因为删除其中一个数据是可以找到它然后把后面的元素往前推//
{
    int i, j;
    for(i=0;i <(n);i++)
    {
        if(A[i]==item)
        {
            for(j=i;j <(n);j++)
                A[j]=A[j+1];
            (n)--;
        }
    }
}

    void main()
    {   int i=0;
        int aver = 0;
    int A[5]={1,2,3,4,5};
    for(;i<5;i++)
    {
        cout<<"请输入第"<<i<<"个数据:";
      cin>>A[i];
    } for(;i<5;i++)
  cout<<A[i]<<' ';
 cout<<endl;
    cout<<"max=";
    max(A);
    cout<<""<<endl;
    cout<<"min=";
    min(A);
    cout<<""<<endl;
    cout<<"average=";
    average(A,aver);
    cout<<""<<endl;
    int n;
    n=sizeof(A)/sizeof(int); //这个是引用了C语言的,但是我学的是C++,希望通过visualc++6.0就可以编译//
    delete_item(A, A[4], n);
    for(;i<n - 1;i++)
    {
        cout<<A[i]<<" ";
    }
    cout<<endl;
}
刚刚改了一下,可以输入了,平均值也对了,就是不能删除数据,可以帮我改改吗,O(∩_∩)O谢谢
2014-12-15 10:26
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
delete_item(A, A[4], n);第二个参数就是待删除的值, 你用一个变量替换就可以了。
收到的鲜花
  • 我是C渣渣2014-12-26 00:35 送鲜花  3朵   附言:我很赞同

~~~~~~我的明天我知道~~~。
2014-12-15 10:57
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
收藏
得分:0 
回复 5楼 xufan
我不是很明白用变量替换是什么意思,可以解释一下吗,O(∩_∩)O谢谢
2014-12-15 11:02
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
求最大值最小值及平均值是推荐用数组的,但如果还要删除其中其一元素的话,我感觉更推荐用链表来做,把前一元素的next指针指向后一元素,中间的元素自然就不存在了。总觉得用数组太繁琐,还涉及到更新脚标等一系列问题。
另外,求最大值或最小值应该可以一个循环完成吧?只是求一个极值,又不全部排序,总觉得单一循环的两两比较算法应该可以解决才对。不过我没有具体去写,光说不练,以上看法仅供参考。
2014-12-15 12:59
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
收藏
得分:0 
回复 7楼 yangfrancis
我不是很懂你说的链表,因为我是C++初学者,这是老师布置的作业,要求我们用数组去做,定位其中一个元素,然后把后面的值赋给前面的元素就可以实现删除数据。但是我编译的不知道为什么不可以。可以帮我看看程序哪里错误了吗,O(∩_∩)O谢谢
2014-12-15 16:39
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
void delete_item(int A[], int item, int* n) //这是删除一个数据的函数,我自己上网找的,因为删除其中一个数据是可以找到它然后把后面的元素往前推//
{
  int i, j;
  for(i=0;i <(*n);i++)
  {
    if(A[i]==item)
    {
      for(j=i;j <(*n);j++)
        A[j]=A[j+1];
      (*n)--;
    }
  }
恕小可眼拙,楼主的这部分代码好像逻辑上看不出什么问题呢。或许仅仅是因为你少了半边花括号吗?不会是这么狗血的错误吧。
2014-12-15 22:35
我是C渣渣
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-31
收藏
得分:0 
回复 9楼 yangfrancis
没有哦。我在原来的程序里面是有花括号的,没有语法错误,就是没办法执行这个语句,不能删除数据~好郁闷,不过还是谢谢你的解答。
2014-12-15 23:53
快速回复:从键盘输入数据对数组进行初始化,编写计算数组元素的最大值、最小值和 ...
数据加载中...
 
   



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

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