| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1816 人关注过本帖
标题:流程图 流程图化简
只看楼主 加入收藏
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
 问题点数:0 回复次数:19 
流程图 流程图化简
最近开始想到编程要画流程图了
但是第一个作业就给我难堪!自己画出的流程图却给不出一个对应的程序阿!非得用goto才能弄出来,可我又不想用goto。所以想请问一下,有没有高手指点一下画流程的技巧或是画了出来后化简的办法
搜索更多相关主题的帖子: 流程图 
2005-08-30 09:23
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
goto 是绝对可以避免的。
你没有给出你的流程图,叫我怎么帮你化简呢?最好直接给出你的问题,这样才能帮你找到最简便的方案。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-08-30 19:47
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 

多谢斑竹关心!!!!!!!!!题下: 做个程序,要求:2. 写一个程序统计在一个C 语言源程序文件中各ANSI C 关键字出现的次数。 我的做法: #include <stdio.h> #include <iostream.h> #include <string.h> void main() { FILE *fp; char word[10]; char* keyword[2]={"int","char"}; int count[2]={0,0}; if((fp=fopen("source.dat","r"))==NULL) { cout<<"cannot open file"<<endl; return; }////给出同目录下的source.dat(只是原来的source.cpp改名而来,为了防止出错debug下也放一个) char ch; ch=fgetc(fp); while(ch!=EOF) { int i=0; while(ch!=' ') { word[i]=ch; ch=fgetc(fp); i++; }///以空格为标志取单词 word[i]='\0';////以上为从文件中取出单词word for(int j=0;j<2;j++) { if(strlen(word)==strlen(keyword[j])&&strcmp(word,keyword[i])==0) count[i]++; }////给出某个单词出现的次数 } for(int j=0;j<2;j++) { cout<<keyword[j]<<" occured "<<count[j]<<" times"<<endl; }////输出单词出现的次数 fclose(fp); }

提示access violation 另外,debug 提示 c 的打开目录找不到 文件 这是我的另一种做法,大致是从源文件中一个一个的读入字符,然后以空格,活()为间隔 存入 字符数组 word 。那他与 keyword比较。得出结果


http://kongfuziandlife. http://codeanddesign.
2005-08-31 14:03
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
斑竹,也可以不管我的想法,但是帮我找到解决问题的源代码。至少让我看看别人是怎么想的阿

http://kongfuziandlife. http://codeanddesign.
2005-09-01 18:35
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;cstdlib&gt;
using namespace std;

class Keyword
{
    string strKeyword;
    int posForCompare;
    int count;
public:
    Keyword(string k, int n = 0)
    {
        strKeyword = k;
        count = n;
        posForCompare = 0;
    }
    void compare(char ch)
    {
        int length = strKeyword.length();
        if(posForCompare &lt; length)
        {
            char currentCh = strKeyword.at(posForCompare);
            if(currentCh == ch)
            {
                if(posForCompare == length-1)
                {
                    count++;
                    posForCompare = 0;
                }
                else
                    posForCompare++;
            }
            else
                posForCompare = 0;
        }
    }
    void showResult()
    {
        cout&lt;&lt;"Count of keyword"&lt;&lt;"\""&lt;&lt;strKeyword&lt;&lt;"\": "&lt;&lt;count&lt;&lt;endl;
    }
};

class CountOfKeywords
{
    vector&lt;Keyword&gt; keywordVC;
    string filename;
public:
    CountOfKeywords(string filename)
    {
        this-&gt;filename = filename;
    }
    void addKeyword(string k)
    {
        keywordVC.push_back( Keyword(k) );
    }
    void calCountOfKeyword()
    {
        // create input stream object for new file and call it fin
        ifstream fin(filename.c_str());
        char ch;
        while(fin.get(ch))  // read character from file
        {
            for(int i = 0; i&lt;keywordVC.size(); i++)
            {
                keywordVC.at(i).compare(ch);
            }
        }
        fin.close();
    }
    void showResult()
    {
        cout&lt;&lt;"statistical result: "&lt;&lt;endl;
        for(int i = 0; i&lt;keywordVC.size(); i++)
        {
            keywordVC.at(i).showResult();
        }
    }
};

int main()
{
    string strKw1 = "int";
    string strKw2 = "char";
   
    CountOfKeywords cks = CountOfKeywords("sourcefile.cpp");
   
    cks.addKeyword(strKw1);
    cks.addKeyword(strKw2);
   
    cks.calCountOfKeyword();
   
    cks.showResult();

    system("pause");
    return 0;
}

如果关键字出现在一个单词中,它也被统计一次,不知符合你的要求不?
将上面程序存为sourcefile.cpp
然后编译,运行。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-01 21:41
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
彻底底解决了,斑竹就是强阿!!!!!
以后要多靠你了

http://kongfuziandlife. http://codeanddesign.
2005-09-02 18:49
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
提个,额外的要求,看看我的程序,能告诉我问题在那里吗?

http://kongfuziandlife. http://codeanddesign.
2005-09-02 19:49
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
你的ch 只取得一次,怎么可以始终来比较呢?还有你用空隔来作为是否是一个单词的标准,这也不对,你想那个 char*keyword[2]={"int","char"}; 紧跟单词char后面的是*并不是一个空格,而char这个单词已经出现了,这样你就漏判断了。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-02 20:50
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
是阿,呵呵。昨天回去就分析你的程序了 ,思想是和我一开始的想法一样,但我不能和斑竹比阿,斑竹的程序写的真是太漂亮了。用到了一些我查资料才知道的知识。看来斑竹是个滋生的程序员阿!!!我的程序条理性太差了阿! 不过我也要指出斑竹的程序的漏洞阿 ,斑竹给出的程序不能完成题目的要求,至少在某种情况下不能。正如斑竹最后指出的 如果关键字出现在一个单词中,它也被统计一次,不知符合你的要求不?有时是不符合的 比如 ifstream 如果统计 if 。。。还有比如我创建一个叫 intchar的变量 彻底的解决这个问题还有很多要考虑的,比如要去处程序的注释等 还有斑竹的程序效率不是很高,每比较一个关键字就要把文件全部读一编。如果文件很长,关键字很多呢?

http://kongfuziandlife. http://codeanddesign.
2005-09-03 08:41
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
我现在的想法是这样的,将文件读出来,然后将其中的单词按照“空格开始空格结速”“空格开始(结束”“空格开始;结束”等等原则提取出来,放入容器。然后再和关键字比较。这样也许能完全解决问题!
不过还是请斑竹帮助找出其bug,另外最关键的提取字符窜我没有思路阿,希望指教!!!

http://kongfuziandlife. http://codeanddesign.
2005-09-03 08:48
快速回复:流程图 流程图化简
数据加载中...
 
   



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

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