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上过不了,请各位帮忙找出原因,帮我改一下,谢谢、
你的程序默认“-”后面只有一个单词!
②你的程序没有考虑这种情况: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;
这个输入没影响的
跪求指导,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)
你没看到嘛 我已经遍历了呀
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函数,写好了却运行不了怎么回事?