Napisz funkcje o naglowku. bool copy(string znak, string kopia), ktora kopiuje zawartosc pliku. o nazwe przekazanej przez parametr zrobia do pliku o nazwie przekazanej przez parametr kopia. zapisujac kazde slowo w nowej lini, poprzedzajac numerem slowa i znakiem : . np. Ala ma kota 1: Ala 2: ma 3: kota Ponadto funckja ma zwracac true, w przypadku gdy zrobie ta funkcje inaczej false #pragma hdrstop #include<iostream> #include<string> #pragma argsused #include <iostream> #include <fstream> using namespace std; bool Copy(string zrodlo, string docelowy) { bool wystartowany; string slowo; int obrot =1; ifstream in(zrodlo.c_str()); ofstream out(docelowy.c_str()); if (in.is_open() && out.is_open()) { while (!in.eof()) { in >> slowo; out<< licznik <<" " << slowo<< endl; licznik++; } return true; } else { return false; }; if (plik_pocz.is_open()) { while (!plik_pocz.eof()) { for(int i=0; i<50;i++) { plik>>i>> ": ">> zmienna[i]; } } //plik_pocz.close(); } }; } int main(int argc, char* argv[]) { while(true) { Copy("begin","end"); } return 0; } --------------------- 2.8 Dana jest deklaracja struktury struct Tznaki { int ileSpacji; int ileTabulacji; int ileNowychPlikow; }; Napisz funkcje logiczna, któa w pliku tekstowym o nazwie otrzymanej w parametrze policzy ilość znaków spacji, tabulacji i nowej lini, a otrzymane wyniki umiesci w odpowiednich polach struktury BZnaki otrzymanej w parametrze. Funckja ta powina zwracac true or false, w zaleznosci od tego czy powiodla sie operacje plikowe czy tez nie. struct BZnaki { int ileSpacji; int ileLini; int ileNowychPlikow; }; bool PoliczwPliku (string filename, BZnaki &bz) // & jest w celu wprowadzania danych do strukt, gdyz po wyjsciu z petli niszczy sie kopia { bool wystartowany; char znak; int obrot =1; ifstream plik(filename.c_str()); if (plik.is_open()) { bz.ileSpacji = 0; bz.ileLini =0; bz.ileNowychPlikow =0; while (plik.get(znak)) { switch(znak) { case ' ': bz.ileSpacji ++; break; case '\n': bz.ileLini ++; break; } plik.clear(); } } ... ---------------------------------------- 2.9 Dane sa typy strukturalne struct TPrzesylka { string nazwa; float uwaga; bool priorytet; // true znak przesylkki priorytetowej } struct TListaPrzesylek { int ileP // ile przesylek ile<=100; } TP ileP[100]; // tablica posiada dane o wszystkich przesylkach. Napisz funkcje o naglowku. int ZapiszP(TListaPrzesylek &L, string str) ktora zapisze do pliku o nazwie przekazanej w parametrze npstr , pelna informacje oprzesylkach priorytetowych ze struktury L Wartoscia funkcji jest ilosc zapisan ej w przesylek. JEsli w struktorze brak jest przesylek priorytetowych, to w pliku zapisujemy komunikat "brak przesylek priorytetowych" JEsli nei uda sie w otwartym pliku o podaneej nazwie wartoscia funkcji ma byc -1. #pragma hdrstop #include<iostream> #include<string> #pragma argsused #include <iostream> #include <fstream> using namespace std; struct TPrzesylka { string zKad, dKad; float waga; bool priorytet; // true znak przesylkki priorytetowej }; struct TListaPrzesylek { int ileP; // ile przesylek ile<=100; TPrzesylka tabP[100]; // tablica posiada dane o wszystkich przesylkach. }; int ZapiszP(TListaPrzesylek &L, string str) { int temp_priorytet; ofstream plik(str.c_str()); if(true) { for (int i=0; i<L.ileP; i++) { plik << "Zkad: "<<L.tabP[i].zKad<< "Dokad: "<< L.tabP[i].dKad<< "Waga: "<<L.tabP[i].waga<<"Priorytet: "<< L.tabP[i].priorytet "\n"; if (L.tabP[i].priorytet) { temp_priorytet ++; } } if (temp_priorytet == 0) { str = "Brak listow priorytetowych"; } else { str = "Lista priorytetow: "<< temp_priorytet; }; return 1; { else { return -1; } }; TListaPrzesylek L; int main(int argc, char* argv[]) { while(true) { ZapiszP(L); } } Do Domu: 2.10 Dana jest funkcja o naglowku. char PrzesunZ(char zn, int h) ktorej wartoscia jest znak powstaly po przesuneiciu znaku zn, o wartosc h. (mod 255) (modulo 255) np. 'a' -> 'c' (+2) 'c' -> 'b' (-1) Napisz funkcje o naglowku int Szyfruj(string nazwaZ, string nazwaW) Funkcja ta ma zaszyfrowac zawartosc pliku o nazwie nazwa.b szyfrem Cezarym. Aby plik umiescic w pliku o nazie nazwa.b Szyfr cezara to szyfr o przesuneiciu o 3 do przodu. Struktura pliku ma zostac nie zmieniona. Tzn. Nie szyfrujemy znakow spacji,tabluajcji i znakow konca lini. Wartoscia funkcji jest ilosc zaszyfrowanych znakow, lub -1 jesli nie udalo sie operacja otwarcia pliku. char PrzesunZnak(char zn. int h) { return (zn+4)%255; } //otiweramy plik, idziemy po wszystkich znakach, sprawdzamy czy to jest spacja tabulacja czy nowa lnia, jezeli nie jest to szyfrujemy znaki po czym zapisuejmy w nowym pliku. // Aby sprawdzic czy program dobrze dziala to dla szyfrowania 3, uruchamiamy szyfr -3 #pragma hdrstop #include<iostream> #include<string> #pragma argsused #include <iostream> #include <fstream> using namespace std; char PrzesunZnak(char zn, int h) { char znak; ifstream in("plik.txt"); ofstream out("szyfr.txt"); while(!in.eof()) { in.get(znak); // pobierz kolejny znak switch(znak) case '': {znak >> out;} break; case "\n": znak >> out; break; default: (znak + h) >> out; break;// znak + h przesuneicia w prawo. } return (zn+4)%255; } int main(int argc, char* argv[]) { while(true) { ZapiszP(L); } }
Sin