当前位置:编程学习 > C/C++ >>

一个简单的C++算法题目

输入文件实例:

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++考什么内容

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,