Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string.h>
- #include <string>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <semaphore.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #include <sys/ipc.h>
- #include <vector>
- #include <sstream>
- #define SHMSIZE 1024
- using namespace std;
- namespace patch
- {
- template < typename T > std::string to_string( const T& n )
- {
- std::ostringstream stm ;
- stm << n ;
- return stm.str() ;
- }
- }
- struct process
- {
- int r;
- string name;
- vector<string> lines;
- };
- int main(int argc, char * argv[])
- {
- int firstRun = 1; //Skipping First Line of Assign-1.ip.
- int quantum = 0; //For taking input of quantum.
- int count = 0; //For number of processes.
- int pchtoint;
- string c;
- char * pch; //For tokenization.
- string reading_file; //Reading a line from file.
- char * readarr; //Converting "reading_file" to readarr for tokenization.
- process * p;
- //=== Quantum Input ===//
- cout<<"Enter Quantum size [1-1000]: ";
- cin>>quantum;
- while(quantum < 1 || quantum > 1000)
- {
- cout<<"Wrong input!!! Enter Again [1-1000]: ";
- cin>>quantum;
- }
- //=====================//
- //===Filing===//
- ifstream read("Assign-2.ip");
- if(read.is_open())
- {
- while(!read.eof())
- {
- getline(read, reading_file);
- readarr = new char[reading_file.size() + 1];
- for(int i = 0; i < reading_file.length(); i++)
- {
- readarr[i] = reading_file[i];
- }
- if(firstRun > 1)
- {
- int countingline = 0; //counting the number of lines in a process.
- pch = strtok (readarr," ,");
- while (pch != NULL)
- {
- c = pch[1];
- pchtoint = atoi(c.c_str());
- p[pchtoint-1].r++;
- p[pchtoint-1].lines.push_back(pch);
- for(int i = 0; i < p[pchtoint-1].lines.size(); i++)
- cout<<p[pchtoint-1].name<<"=="<<p[pchtoint-1].lines.at(i)<<endl;
- pch = strtok (NULL, " ,");
- }
- }
- else
- {
- pch = strtok (readarr,",.-");
- while (pch != NULL)
- {
- count++;
- pch = strtok (NULL, ",.-");
- }
- p = new process[count];
- string s = "p";
- for(int i = 0; i < count; i++)
- {
- s = s + patch::to_string(i+1);
- p[i].name = s;
- s = s[0];
- }
- firstRun++;
- }
- }
- }
- else
- {
- cout<<"Cannot open file!!!"<<endl;
- }
- read.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement