C++英文缩写单词,写好了,OJ上过不了,求帮助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++英文缩写单词,写好了,OJ上过不了,求帮助相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
using namespace std;
int main()

string line,word;
vector<string> st;
vector<string>::iterator it;
int size,i;
int tl;
string tmp,tmp1,tmp2;
while(getline(cin,line))

st.clear();
istringstream stream(line);
while(stream>>word)

if(word!="a"&&word!="an"&&word!="the"&&word!="of"&&word!="and"&&word!="for"&&word!="A"&&word!="An"&&word!="The"&&word!="Of"&&word!="And"&&word!="For"&&word!="AN"&&word!="THE"&&word!="OF"&&word!="AND"&&word!="FOR")

size=word.size();
for(i=0,tl=0;i<size;i++,tl++)

if(word[i]=='-')
break;

if(i==size)

tmp=word[0];
st.push_back(tmp);

else

tmp1=word.substr(0,tl);
tmp=tmp1[0];
st.push_back(tmp);
tmp2=word.substr(tl+1,size-tl);
tmp=tmp2[0];
st.push_back(tmp);



for(it=st.begin();it!=st.end();it++)

cout<<*it;

cout<<endl;

return 0;


http://acm.cs.ecnu.edu.cn/problem.php?problemid=2897

测试都是对的啊,不知道为什么Oj上过不了,请各位帮忙找出原因,帮我改一下,谢谢、

①首先你没考虑这种情况:Well-Known-Cat 【三个单词的链接】
你的程序默认“-”后面只有一个单词!
②你的程序没有考虑这种情况:all-of 【“-”后面跟了一个要忽略的单词(a,an,the,of,for)】
你只考虑了单个单词的忽略,没考虑可能在“-”之后。追问

撞墙。。。

追答

。。

追问

不会改了

追答

225267 CrystalFan 2897 Yes 260K 0MS C++ 1.57K 2012-08-12 21:00:55

追问

好吧,求代码~~~

追答

int main()

string line,word;
vector st;
vector::iterator it;
int size,i;
int tl;
string tmp,tmp1,tmp2;
while(getline(cin,line))

st.clear();
istringstream stream(line);
while(stream>>word)

if(word!="a"&&word!="an"&&word!="the"&&word!="of"&&word!="and"&&word!="for"&&word!="A"&&word!="An"&&word!="The"&&word!="Of"&&word!="And"&&word!="For"&&word!="AN"&&word!="THE"&&word!="OF"&&word!="AND"&&word!="FOR")

size=word.size();
i=0,tl=0;
int ltl=0;
while(1)

if(i>=size)break;
for(;i<size;i++,tl++)

if(word[i]=='-')
break;

tmp1=word.substr(ltl,tl-ltl);
if(tmp1!="a"&&tmp1!="an"&&tmp1!="the"&&tmp1!="of"&&tmp1!="and"&&tmp1!="for"
&&tmp1!="A"&&tmp1!="An"&&tmp1!="The"&&tmp1!="Of"&&tmp1!="And"&&tmp1!="For"
&&tmp1!="AN"&&tmp1!="THE"&&tmp1!="OF"&&tmp1!="AND"&&tmp1!="FOR")

tmp=word[ltl];
st.push_back(tmp);

ltl =tl+1;
i++;
tl++;


// if(i==size)
//
// tmp=word[0];
// st.push_back(tmp);
//
// else
//
// tmp1=word.substr(0,tl);
// tmp=tmp1[0];
// st.push_back(tmp);
// tmp2=word.substr(tl+1,size-tl);
// tmp=tmp2[0];
// st.push_back(tmp);
//


for(it=st.begin();it!=st.end();it++)

cout<<*it;

cout<<endl;

return0;

参考技术A 题目要求输入多行之后在输出答案,你的是输入一行输出一行追问

这个输入没影响的

跪求指导,java中将遍历出来的多个txt文件写入一个指定的大的txt文件中,代码已经写好了,但是有BUG!

第一部分
package No7;

import java.io.File;
import java.io.FileFilter;

public class FileFilterDemo implements FileFilter
public boolean accept(File pathname)
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt"))
return true;

return false;



第二部分
package No7;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class FilterDemo
/**
* @param args
*/
public static void main(String[] args)
throws IOException
//Scanner console = new Scanner(System.in);
//System.out.println("请输入文件路径:");
File file = new File("L:\\Users\\xiaozilu\\workspace\\Exercise");
File[] s = file.listFiles(new FileFilterDemo());
String[] ary = new String[s.length];
int i = 0;
for (File temp : s)
ary[i] = temp.getName();
i++;

for (int j = 0; j < ary.length; j++)
join(ary[j]);

System.out.println("写入文件成功!");

public static void join(String filename)
throws IOException
try
File read = new File(filename);
File write = new File("L:\\User\\Big.txt");
BufferedReader in =
new BufferedReader(new FileReader(read));
BufferedWriter out =
new BufferedWriter(new FileWriter(write,true));
String temp;
while ((temp = in.readLine())!= null)
out.write(temp + "\r\n");

in.close();
out.close();
catch (FileNotFoundException e) //文件未找到
System.out.println(e);
catch (IOException e)
System.out.println(e);



这是我的代码,但是测试出来的话只能在当前目录下进行遍历所有Txt文件然后写入我当前目录所指定的Big.txt中去,没法跨目录遍历后写入。我想问的是如何跨目录进行遍历了以后把遍历出来的Txt文件写进指定的Txt中去,我需要修改好的代码,是修改好的,求高手指导!谢谢!

你根本没有遍历子目录哇

你应该写个函数来获取一个目录下所有txt文件

思路是 先用listFiles获取文件列表
然后遍历数组
然后通过file.isDirectory来判断是否是目录
如果是目录递归调用这个方法

非常抱歉用ipad上的不方便贴代码
不过我已经说的很详细了相信你可以实现出来追问

for (File temp : s)

你没看到嘛 我已经遍历了呀

追答 public static void main(String[] args) 

  List<File> files = listDirectoryFiles(new File("D:\\\\ant"));

  for (File file : files)

   System.out.println(file.getAbsolutePath());

 

 

 public static List<File> listDirectoryFiles(File file) 

  List<File> fileList = new ArrayList<File>();

  if (null == file || !file.exists())

   return fileList;

  

  File[] files = file.listFiles();

  

  if (null == files) 

   fileList.add(file);

   return fileList;

  

  

  for (File subFile : files)

   if (subFile.isDirectory())

    fileList.addAll(listDirectoryFiles(subFile));

   else if (subFile.isFile())

    fileList.add(subFile);

  

  return fileList;

 

你只遍历了第一层,后面的你都没遍历
你看下我写的这个

参考技术A 你不是在你的FileFilter中把子目录给过滤掉了吗?
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt"))
return true;

那还怎么遍历子目录?追问

那我应该怎么把别的目录下的txt文件写到Big.txt里呢我现在只能写当前目录下的

追答

你可以在FileFilter中把!去掉,然后把条件&&变成||,这样就能把子目录给保留下来,然后在进行处理时可以对这两者分别进行处理。如果是别的目录的话那就得重新处理你传进来的路径。

参考技术B 跨目录,是什么概念,是不是需要递归查找子目录。 参考技术C 不明觉理。

以上是关于C++英文缩写单词,写好了,OJ上过不了,求帮助的主要内容,如果未能解决你的问题,请参考以下文章

爱的英文缩写

C语言!stdlib.h包含calloc函数,写好了却运行不了怎么回事?

C++语言中,指针的英文单词是啥?

百练OJ:2804词典

centos7安装图形界面,如下图,密码设置好了,前进是灰色的点不了

C++实现日期相关OJ题