File: save.cpp | Size: 1,151 bytes | Download file | Back to directory listing | BWPOW's homepage
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include "ts.h"
 
using namespace std;
 
extern map<INSTR,INSTR> instr;
extern vector<string> state;
extern vector<char> pr,pl;
extern INFO info;
extern char chars[256];
 
int save_output(void)
{
  FILE *s;
  s=fopen(info.outfile,"w");
  if(s==0) return -1;
 
  if(info.output==0){
    if(!info.cl){
      for(int i=pl.size()-1;i>=0;i--){
        fputc(pl[i],s);
      }  
    }  
    if(info.cr){
      for(int i=0;i<info.maxmemory;i++){
        if(i<pr.size()) fputc(pr[i],s);
        else fputc(info.zero,s);
      }  
    }
    else{
      for(int i=0;i<pr.size();i++){
        fputc(pr[i],s);
      }  
    }    
  }  
  if(info.output==1){
    fprintf(s,"%s\n",state[info.state].c_str());
  }  
  if(info.output==2){
    int n=0;
    for(int i=0;i<pr.size();i++) if(pr[i]==info.one) n++;
    for(int i=0;i<pl.size();i++) if(pl[i]==info.one) n++;
    fprintf(s,"%d\n",n);
  }  
  fclose(s);
 
  return 0;
}  
 
void print_output(void)
{
  printf("OK.\n");
  printf("%d steps\n",info.steps);
  printf("%d instructions\n",instr.size());
}