79 lines
1.7 KiB
C++
79 lines
1.7 KiB
C++
|
/*******************************************************************************************************
|
||
|
|
||
|
The following code is the output produced from the Lab 1 literate program
|
||
|
|
||
|
This is produced by taking the code from section 1 and substituting the named code chunks into this.
|
||
|
|
||
|
This process is repeated until all the chunk references are filled.
|
||
|
|
||
|
For example:
|
||
|
the reference <The main program 3> is replaced with the code in section 3:
|
||
|
|
||
|
int main( )
|
||
|
{
|
||
|
<Variables of main 4>
|
||
|
<Open and validate the input File 6>
|
||
|
<Read the File into the stack 8>
|
||
|
<Pop the words from the stack 10>i
|
||
|
<Finish up 11>
|
||
|
}
|
||
|
|
||
|
Where chunks have the same name they are collected in the order they appear into the final code.
|
||
|
|
||
|
This means that I can write the program in an order that makes sense as it is read and still get a
|
||
|
program that compiles and executes.
|
||
|
|
||
|
For more detailed explanations see the cwebman pdf file.
|
||
|
|
||
|
*******************************************************************************************************/
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <fstream>
|
||
|
using namespace std;
|
||
|
void push(char word[]);
|
||
|
char*pop();
|
||
|
bool isEmpty();
|
||
|
const int STACK_SIZE= 100;
|
||
|
const int WORD_SIZE= 20;
|
||
|
char stack[STACK_SIZE][WORD_SIZE];
|
||
|
int top= 0;
|
||
|
int main()
|
||
|
{
|
||
|
char filename[20];
|
||
|
ifstream fin;
|
||
|
char word[WORD_SIZE];
|
||
|
cerr<<"Please enter the name of the input file: ";
|
||
|
cin>>filename;
|
||
|
fin.open(filename);
|
||
|
if(!fin)
|
||
|
{
|
||
|
cerr<<"Error opening file "<<filename<<". Program will exit."<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
while(fin>>word){
|
||
|
push(word);
|
||
|
}
|
||
|
while(!isEmpty())cout<<pop()<<endl;
|
||
|
}
|
||
|
void push(char word[])
|
||
|
{
|
||
|
if(top==STACK_SIZE)return;
|
||
|
int i= 0;
|
||
|
do
|
||
|
{
|
||
|
stack[top][i]= word[i];
|
||
|
i++;
|
||
|
}
|
||
|
while(word[i]);
|
||
|
top++;
|
||
|
return;
|
||
|
}
|
||
|
char*pop()
|
||
|
{
|
||
|
return stack[--top];
|
||
|
}
|
||
|
bool isEmpty()
|
||
|
{
|
||
|
return top==0;
|
||
|
}
|