一个简单的C++算法题目
输入文件实例:2
1 0
1 1
其中2代表要输入两个点, 1 0代表第一个点坐标(1, 0), 1 1代表第二个点坐标(1, 1)
输出文件样式:
1 0.5
就是输出输入的所有点x坐标的平均值和y坐标的平均值
谢谢, 请您思考思考
小弟因为不知道如何对文件操作, 遂不会做, 请各位帮忙:-)
输入文件实例:2
1 0
1 1
其中2代表要输入两个点, 1 0代表第一个点坐标(1, 0), 1 1代表第二个点坐标(1, 1)
输出文件样式:
1 0.5
就是输出输入的所有点x坐标的平均值和y坐标的平均值
谢谢, 请您思考思考
小弟因为不知道如何对文件操作, 遂不会做, 请各位帮忙:-)
答案:做好了~!文件中不需要输入点的数目。只要一排两个数指定一个点就可以了。
然后将你文件的路径替换掉程序源代码中替换掉引号中的1.txt就可以了。相对路径请放在当前工程目录中。
下面是源代码:
//#include<stdio.h>
//#include<string>
//#include<stdlib.h>
//#include<math.h>
//#include<iostream>
//using namespace std;
////#include"Stack.h"
//#define TRUE 1
//#define FALSE 0
//#define MAXNUM
//typedef char DataType;//栈中存放的数据元素
//
//PSeqStack createEmptyStack_seq(int m){
// PSeqStack pastack=(PSeqStack)malloc(sizeof(struct SeqStack));
// if(pastack!=NULL){
// pastack->s=(DataType*)malloc(sizeof(DataType)*m);
// if(pastack->s){
// pastack->MAXNUM=m;
// pastack->t=-1;
// return(pastack);
// }
// else free(pastack);
// }
// printf("Out of space\n");
// return NULL;
//}
//
//
//int isEmptyStack_seq(PSeqStack pastack){
// if(pastack->t==-1)return 1;
// else return 0;
//}
//
//void push_seq(PSeqStack pastack,DataType x)
//{
// if(pastack->t>=MAXNUM-1)
// printf("Overflow\n");
// else {
// pastack->t=pastack->t+1;
// pastack->s[pastack->t]=x;
// }
//}
//
//
//void pop_seq(PSeqStack pastack)
//{
// if(pastack->t==-1)
// printf("Underflow\n");
// else{
// pastack->t=pastack->t-1;
// }
//}
//
//
//DataType top_seq(PSeqStack pastack)
//{
// if(pastack->t==-1)
// printf("It is empty\n");
// else return (pastack->s[pastack->t];
//}
//
//int infixtoSuffix(const char*infix,char*suffix){
// int state_int=FALSE;
// char c,c2;
// PSeqStack ps=createEmptyStack_seq(0);
// int i,j=0;
// if(infix[0]=='\0')return FALSE;
// for(i=0;infix[i]!='\0';i++){
// c=infix[i];
// switch(c)
// {
// case' ':case'\t':case'\n':
// if(state_int==TRUE)suffix[j++]=' ';
// state_int=FALSE;
// break;
// case'0':case'1':case'2':case'3':case'4':
// case'5':case'6':case'7':case'8':case'9':
// state_int=TRUE;
// suffix[j++]=c;
// break;
// case'(':
// if(state_int==TRUE)suffix[j++]=' ';
// //状态从TRUE转到FALSE时,输出一个空格
// state_int=FALSE;
// push_seq(ps,c);
// break;
// case')':
// if(state_int==TRUE)suffix[j++]=' ';
// state_int=FALSE;
// c2=')';
// while(!isEmptyStack_seq(ps))
// {
// c2=top_seq(ps);
// pop_seq(ps);
// if(c2=='(')
// break;
// }
// suffix[j++]=c2;
// }
// if(c2!='('){
// free(ps);
// suffix[j++]='\0';
// return FALSE;
// }
// break;
// case'+':case'-':
// if(state_int==TRUE)suffix[j++]=' ';
// state_int=FALSE;
// while(!isEmptyStack_seq(ps)){//栈不空时
// c2=top_seq(ps);
// if(c2=='+'||c2=='-'||c2=='*'||c2=='/'){
// pop_seq(ps);
// suffix[j++]=c2;
// }//栈顶为加减乘除时,弹出栈顶元素,并输出
// else break;
// }
// push_seq(ps,c);//运算符入栈
// break;
// case'*':case'/':
// if(state_int==TRUE)suffix[j++]=' ';//状态从TRUE转到FALSE时,输出一个空格
// state_int=FALSE;
// if(!isEmptyStack_sep(ps)){//栈不空时
// c2=top_seq(ps);
// if(c2=='*'||c2=='/'){
// pop_seq(ps);
// suffix[j++]=c2;
// }//栈顶为乘除时,弹出栈顶元素,并输出
// }
// push_seq(ps,c);//运算符入栈
// break;
// default://出现了其他字符,说明表达式infix非法
// free(ps);
// suffix[j++]='\0';
// return FALSE;
// }
//}
//if(state_int==TRUE)suffix[j++]=' ';
//while(!isEmptyStack_seq(ps)){
// c2=top_seq(ps);
// pop_seq(ps);
// if(c2=='('){
// free(ps);
// suffix[j++]='\0';
// return FALSE;//左括号比右括号多
// }
// suffix[j++]=c2;
//}//将栈中剩余元素弹出输出。若遇到左括号,返回FALSE
//free(ps);
//suffix[j++]='\0';
//return TRUE;//转换成功
//}
//
//
//
//int calSuffix(const*suffix,int*presult)
//int state_int=FALSE;
//PSeqStack ps=createEmptyStack_seq();
//int num=0;num1,num2;
//int i;
//char c;
//for(i=0;suffix[i]!='\0';i++){
// c=suffix[i];
// switch(c){
// case'0':case'1':case'2':case'3':case'4':
// case'5':case'6':case'7':case'8':case'9':
// if(state_int==TRUE)num=num*10=c-'0';
// else num=c-'0';
// state_int=TRUE;
// break;
// case' ':case'\t':case'\n':
// if(state_int==TRUE){
// push_seq(ps,num);
// state_int=FALSE;
// }
// break;
//
// case'+':case'-':case'*':case'/':
// if(state_int==TRUE){
// push_seq(ps,num);
// state_int=FALSE;
// }
// if(isEmptyStack_seq(ps)){
// free(ps);
// return FALSE;
// }
// num2=top_seq(ps);
// pop_seq(ps);
// if(isEmptyStack_seq(ps)){
// free(ps);
// return FALSE;
// }
// num1=top_seq(ps);
// pop_seq(ps);
// if(c=='+')push_seq(ps,num1+num2);
// if(c=='-')push_seq(ps,num1-num2);
// if(c=='*')push_seq(ps,num1*num2);
// if(c=='/')push_seq(ps,num1/num2);
// break;
// default:
// free(ps);
// return FALSE;
// }
//}
//*presult=top_seq(ps);
//pop_seq(ps);
//if(!isEmptyStack_seq(ps)){
// free(ps);
// return FALSE;
//}
//free(ps);
//return TRUE;
//}
//
//
//
//
//
//void main()
//{scanf("%c",&c);
//infixtoSuffix(c,c2);
//calSuffix(c2,presult);
//printf("%d",presult);
//}
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
typedef struct tagPoint
{
double x;
double y;
}Point;int main()
{
ifstream instream;
string filename="1.txt";
instream.open(filename.c_str());
if (instream.fail())
{
cout<<"Open file "<<filename<<" failed!"<<endl;
return 0;
}
Point pt;
vector<Point> vec_pt;
while (instream>>pt.x>>pt.y)
{
vec_pt.push_back(pt);
}
Point ave;
ave.x=0;
ave.y=0;
cout<<"The E
上一个:C++上机常见错误及解析
下一个:计算机二级C++考什么内容