Witam. Jestem straszna noga z programowania a dostałem za zadanie dodać do tej "powłoki systemowej" parę funkcji np. tworzenie, kasowanie, edytowanie plików czy też "rysowanie" równoległoboku (cokolwiek to znaczy). Prosiłbym Was o pomoc, bo nie wiem jak się za to zabrać. Dodałem niby tą funkcję "rysuj trójkąt" wzorując się na innych, ale już reszty to nie wiem jak zrobić.
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <unistd.h>
#include <sys/param.h>
#include <sys/types.h>
#include <dirent.h>
#include <fstream>
#include <sstream>
using namespace std;
string WczytajSciezke();
string polecenie;
string domowy = WczytajSciezke();
const char * domowyKatalog = domowy.c_str();
//*****************************************************************************************
string WczytajSciezke(){
char *buffer = new char[256];
getcwd(buffer,256);
if(buffer != NULL){
string ret(buffer);
delete[] buffer;
return ret;
}else{
delete[] buffer;
return string();
}
}
void pwd()
{
cout << WczytajSciezke() <<endl;
}
void cd(string parametr2)
{
const char *par2=parametr2.c_str();
if (parametr2 == "")
chdir(domowyKatalog);
else{
chdir(par2);
}
}
void ls()
{
DIR *dpdf;
struct dirent *epdf;
dpdf = opendir("./");
if (dpdf != NULL){
while (epdf = readdir(dpdf)){
cout << epdf->d_name << endl;
}
}
}
void kopiuj(string par2,string par3)
{
ifstream plik1 (par2.c_str(), fstream::binary);
if (!plik1.good() )
cout << "Plik nie istnieje" <<endl;
else {
ofstream plik2 (par3.c_str(), fstream::trunc|fstream::binary);
if(!plik2.good())
cout << "Nie mozna otworzyc pliku do zapisu" << endl;
else{
plik2 << plik1.rdbuf ();
plik1.close();
plik2.close();
cout << "Zrobione" << endl;
}
}
}
void rysuj_trojkat()
{
for(int i=5;i>=0;i--){
for(int j=i;j>=0;j--)
cout << " ";
for(int j=i;j<5;j++)
cout << "*";
cout << "\n";
}
}
void polacz(string in1,string in2,string out)
{
ifstream plik1 (in1.c_str(), fstream::binary);
ifstream plik2 (in2.c_str(), fstream::binary);
if (!plik1.good())
cout << "Plik "<< in1 << "Nie istnieje lub nie mozna uzyskac dostepu "<< endl;
else if (!plik2.good())
cout << "Plik "<< in2 << "Nie istnieje lub nie mozna uzyskac dostepu "<< endl;
else {
ofstream plik3 (out.c_str(), fstream::trunc|fstream::binary);
if(!plik3.good())
cout << "Nie mozna otworzyc pliku do zapisu" << endl;
else{
plik3 << plik1.rdbuf ();
plik3 << plik2.rdbuf();
plik1.close();
plik2.close();
plik3.close();
cout << "Zrobione" << endl;
}
}
}
void wypisz(string inp)
{
ifstream plik1 (inp.c_str(), fstream::in);
if (!plik1.good() )
cout << " Plik nie istnieje lub brak dostepu " <<endl;
else {
cout << plik1.rdbuf ();
cout<<endl;
plik1.close();
}
}
void pomoc()
{
cout << "Mozliwe komendy do wpisania"<< endl;
cout << "'cd' 'ls' 'pwd' 'kopiuj' 'pomoc' 'polacz' 'wypisz' 'rysuj_trojkat'"<<endl;
cout << "<komenda> --pomoc (Wyswietla pomoc do danej komendy)"<<endl;
cout << "zakoncz -konczy dzialanie programu "<< endl;
}
int main()
{
vector <string> historia;
pomoc();
cout <<endl;
while((polecenie !="zakoncz") && (polecenie !="zakoncz")){
cout << WczytajSciezke() <<" -> ";
getline(cin,polecenie);
string parametr_1, parametr_2, parametr_3,parametr_4,parametr_5;
istringstream StrStream(polecenie);
StrStream >> parametr_1;
StrStream >> parametr_2;
StrStream >> parametr_3;
StrStream >> parametr_4;
StrStream >> parametr_5;
if (parametr_2 == "--pomoc"){
if (parametr_1=="pwd")
cout << "Wyswietla aktualna sciezke "<<endl;
if (parametr_1=="ls")
cout << "Wyswietla listing biezacego katalogu "<< endl;
if (parametr_1=="pomoc")
cout << "Wyswietla liste mozliwych komend " <<endl;
if (parametr_1=="cd")
cout << "cd <sciezka> -zmienia katalog roboczy. cd -zmienia na domowy."
" cd / -zmienia na glowny. cd .. -cofa "<< endl;
if (parametr_1=="kopiuj")
cout << " kopiuj <plik zrodlowy> <plik docelowy> " <<
"- Kopiuje plik zrodlowy pod nazwa zadana jako docelowy"<< endl;
if (parametr_1=="polacz")
cout<<"polacz <plik1> <plik2> <plik docelowy> - "<<
"Laczy dwa pliki i zapisuje go jako plik docelowy"<< endl;
if (parametr_1=="wypisz")
cout <<"wypisz <plik> - Wypisuje zawartosc pliku jako tekst"<<endl;
}
else {
if (parametr_1 == "pwd"){
pwd();
historia.push_back(polecenie);
}
if (parametr_1 == "rysuj_trojkat"){
rysuj_trojkat();
historia.push_back(polecenie);
}
if (parametr_1 == "cd"){
cd(parametr_2);
historia.push_back(polecenie);
}
if (parametr_1 == "ls"){
ls();
historia.push_back(polecenie);
}
if (parametr_1 == "kopiuj" && !parametr_2.empty() && !parametr_3.empty()){
kopiuj(parametr_2,parametr_3);
historia.push_back(polecenie);
}
if (parametr_1 == "pomoc"){
pomoc();
historia.push_back(polecenie);
}
if (parametr_1 == "polacz"&& !parametr_2.empty() && !parametr_3.empty()&& !parametr_4.empty()){
polacz(parametr_2,parametr_3,parametr_4);
historia.push_back(polecenie);
}
if (parametr_1 == "wypisz"){
wypisz(parametr_2);
historia.push_back(polecenie);
}
if (parametr_1 == "."){
}
}
}
return 0;
}