Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Užkrauna bibliotekas
- #include <cstdlib>
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <windows.h>
- #include <stdlib.h>
- #define PREKIU_SKAICIUS 10 // makrosas prekių sk. nustatyti
- using namespace std; // nustatoma vardų "erdvė"
- // Funkcijų prototipai
- void clear(); // Išvalo langą
- void pagr(); // Parodo pagrindinį menių
- void modulis1(); // Matematinių skaičiavimų modulis
- void modulis2(); // Teksto šifravimo modulis
- void modulis3(); // Skaičiavimų su prekių sąrašais modulis
- void ApkeistiPrekes(int nr1, int nr2); // Apkeičia prekių informaciją
- void IrasytiPrekes(); // Prekių įrašymas į failą
- void PrekiuAtvaizdavimas(); // Prekių sąrašo atvaizdavimas
- struct Preke { // Struktūrinis duomenų tipas
- string pavadinimas;
- int kiekis;
- int kaina;
- int suma;
- };
- Preke N[PREKIU_SKAICIUS];
- // Masyvai, skirti prekių inf. įrašyti paleidžiant programą
- string P[PREKIU_SKAICIUS] = {"ANGLIŠKOS SALOTOS", "TRAŠKIOJI VIŠTIENA", "AITRI KIAULIENOS SPRANDINĖ", "GRUZDINTA ŽUVIS IR BULVYTĖS", "MĖLYNIEJI MOLIUSKAI",
- "VEGETARIŠKAS ŠNICELIS", "ITALIŠKA VIŠTIENA", "VIŠTIENA SU GRYBŲ PADAŽU", "PALTUSO KEPSNYS", "ANTIES KRŪTINĖLĖ APELSINŲ PADAŽE"};
- int K[PREKIU_SKAICIUS] = {rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1, rand() % 15 + 1};
- int K2[PREKIU_SKAICIUS] = {rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1, rand() % 7 + 1};
- main() { // pagrindinė funkcija
- setlocale(LC_ALL, "Lithuanian"); // Nustatoma locale, lietuvių kl., lietuviškų raidžių palaikymui
- /*
- * Sukuriami kintamieji
- * Įrašoma informacija iš masyvų
- */
- int i = 0, j = 0;
- for(i = 0; i < PREKIU_SKAICIUS; i++) {
- N[i].suma = -77;
- }
- /*for(i = 0; i < PREKIU_SKAICIUS; i++) {
- //if(i == 3) {
- // N[i].suma = -77;
- // continue;
- //}
- N[i].pavadinimas = P[i];
- N[i].kiekis = K[i];
- N[i].kaina = K2[i];
- N[i].suma = (N[i].kiekis * N[i].kaina);
- }*/
- pagr(); // iškviečiama funkcija su pagrindinio meniu kodu
- system("pause>nul"); // Užlaiko iki tol, kol nebus suvesta informacija
- return EXIT_SUCCESS; // funkcija gražina EXIT_SUCCESS, reiškia, kad funkcija suveikė gerai
- }
- void clear() { // Funkcija langui išvalyti
- system("cls");
- }
- void pagr() {
- cout << "PASIRINKITE MODULĮ (ĮRAŠYKITE MODULIO NR.):\n\n\t1. Matematinių skaičiavimų modulis\n\t2. Teksto šifravimo modulis\n\t3. Skaičiavimų su prekių sąrašais modulis\n\n\t[!] Norėdami užbaigti, suveskite „0“\n\n\n";
- int m;
- do {
- cin >> m;
- switch(m) {
- case 0: {
- clear();
- cout << "MODULIO PASIRINIKIMAS:\n\n\tVeiksmas nutraukiamas!\n\n\n";
- return;
- }
- case 1: modulis1(); break;
- case 2: modulis2(); break;
- case 3: modulis3(); break;
- default: {
- cout << "Klaida, modulio su tokiu nr. nėra! Bandykite dar kartą!\n";
- break;
- }
- }
- }
- while (!cin.good());
- }
- void modulis1() {
- clear();
- cout << "MATEMATINIŲ SKAIČIAVIMŲ MODULIS:\n\n\tĮrašykite 2 skaičius:\n\n\n";
- int sk1, sk2;
- cin >> sk1 >> sk2;
- clear();
- cout << "MATEMATINIŲ SKAIČIAVIMŲ MODULIS/REZULTATAS:\n\n";
- cout << "\t" << sk1 << " + " << sk2 << " = " << sk1 + sk2 << endl;
- cout << "\t" << sk1 << " - " << sk2 << " = " << sk1 - sk2 << endl;
- cout << "\t" << sk1 << " * " << sk2 << " = " << sk1 * sk2 << endl;
- cout << "\t" << sk1 << " / " << sk2 << " = " << float(sk1) / float(sk2) << " (" << sk1 % sk2 << ") " << "\n\n\n";
- }
- void modulis2() {
- clear();
- cout << "TEKSTO ŠIFRAVIMO MODULIS:\n\nPASIRINKITE SUB-MODULĮ (ĮRAŠYKITE SUB-MODELIO NR.)\n\n";
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
- cout << "\t1. Nuskaityti tekstinį failą su tekstu ir jį užšifruojant išsaugoti į atskirą užšifruoto teksto failą\n\t2. Nuskaityti užšifruoto teksto failą jį iššifruojant ir parodant rezultatą ekrane\n\t3. Nuskaityti užšifruoto teksto failą jį iššifruojant ir įrašant rezultatą tekstiniame faile\n\t4. „abcd“ užšifravimas\n\n\n";
- SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
- int sb;
- do {
- cin >> sb;
- }
- while (!cin.good() || !(sb == 1 || sb == 2 || sb == 3 || sb == 4));
- clear();
- switch(sb) {
- case 1: {
- cout << "TEKSTO ŠIFRAVIMO MODULIS/1 SUB-MODULIS\n\nĮrašykite failo pavadinimą, iš kurio bus skaitomas tekstas, ir failo pavadinimą, į kurį bus įrašytas užšifruotas tekstas:\n\n[!] Failas atidaromas ir sukuriamas „txt“ aplankale\n\n\n";
- string i, o;
- do {
- cin >> i >> o;
- clear();
- int s = -1;
- char sim;
- string n, h;
- i.insert(0, "txt/");
- o.insert(0, "txt/");
- cout << "TEKSTO ŠIFRAVIMO MODULIS/1 SUB-MODULIS\n\nFailų pavadinimai:\n" << i << endl << o << "\n__________\n" << endl;
- ifstream fs(i.c_str());
- if (!fs.is_open()) {
- cout << "Failas, pavadinimu: " << i << " nerastas, programa nutraukia veiksmą.";
- return;
- }
- while (fs.get(sim)) {
- s++;
- n.insert(s, 1, char(sim));
- h.insert(s, 1, char(sim+7));
- }
- fs.close();
- ofstream fr(o.c_str());
- if (!fr.is_open()) return;
- fr << h;
- fr.close();
- cout << "Paprastas tekstas iš failo: " << n << endl;
- cout << "Užkoduotas tekstas: " << h << "\n\n\n";
- }
- while (!cin.good());
- break;
- }
- case 2: {
- cout << "TEKSTO ŠIFRAVIMO MODULIS/2 SUB-MODULIS\n\nĮrašykite failo pavadinimą, iš kurio bus skaitomas užšifruotas tekstas:\n\n[!] Failas atidaromas „txt“ aplankale\n\n\n";
- string i;
- do {
- cin >> i;
- clear();
- int s = -1;
- char sim;
- string n, h;
- i.insert(0, "txt/");
- cout << "TEKSTO ŠIFRAVIMO MODULIS/2 SUB-MODULIS\n\nFailo pavadinimas: " << i << "\n__________\n" << endl;
- ifstream fs(i.c_str());
- if (!fs.is_open()) {
- cout << "Failas, pavadinimu: " << i << " nerastas, programa nutraukia veiksmą.";
- return;
- }
- while (fs.get(sim)) {
- s++;
- n.insert(s, 1, char(sim-7));
- h.insert(s, 1, char(sim));
- }
- fs.close();
- cout << "Užkoduotas tekstas: " << h << endl;
- cout << "Paprastas tekstas iš failo: " << n << "\n\n\n";
- }
- while (!cin.good());
- break;
- }
- case 3: {
- cout << "TEKSTO ŠIFRAVIMO MODULIS/3 SUB-MODULIS\n\nĮrašykite failo pavadinimą, iš kurio bus skaitomas tekstas, ir failo pavadinimą, į kurį bus įrašytas iššifruotas tekstas:\n\n[!] Failas atidaromas ir sukuriamas „txt“ aplankale\n\n\n";
- string i, o;
- do {
- cin >> i >> o;
- clear();
- int s = -1;
- char sim;
- string n, h;
- i.insert(0, "txt/");
- o.insert(0, "txt/");
- cout << "TEKSTO ŠIFRAVIMO MODULIS/3 SUB-MODULIS\n\nFailų pavadinimai:\n" << i << endl << o << "\n__________\n" << endl;
- ifstream fs(i.c_str());
- if (!fs.is_open()) {
- cout << "Failas, pavadinimu: " << i << " nerastas, programa nutraukia veiksmą.";
- return;
- }
- while (fs.get(sim)) {
- s++;
- n.insert(s, 1, char(sim-7));
- h.insert(s, 1, char(sim));
- }
- fs.close();
- ofstream fr(o.c_str());
- if (!fr.is_open()) return;
- fr << n;
- fr.close();
- cout << "Užkoduotas tekstas: " << h << endl;
- cout << "Iššifruotas tekstas: " << n << "\n\n\n";
- }
- while (!cin.good());
- break;
- }
- case 4: {
- cout << "TEKSTO ŠIFRAVIMO MODULIS/4 SUB-MODULIS\n\n\n";
- char r[5] = "abcd";
- cout << "„" << char(r[0]) << char(r[1]) << char(r[2]) << char(r[3]) << "“" << " tekstas užkoduotas atrodo štai taip: " << "„" << char(r[0] + 7) << char(r[1] + 7) << char(r[2] + 7) << char(r[3] + 7) << "“" << "\n\n\n";
- break;
- }
- }
- }
- void modulis3() {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS:\n\nPASIRINKITE SUB-MODULĮ (ĮRAŠYKITE SUB-MODULIO NR.)\n\n\t1. Į esamą sąrašą pridėti papildomas prekes\n\t2. Įrašyti turimą prekių sąrašą į tekstinį failą\n\t3. Atidaryti prekių sąrašą nuskaitant jį iš tekstinio failo\n\t4. Atvaizduoti esamų prekių sąrašą ekrane\n\t5. Atvaizduoti prekių sąrašą jį surūšiavus pagal vieną iš kintamųjų (prekių pavadinimą, kiekį arba kainą, sumą)\n\t6. Ištrinti pasirinktą prekių sąraše esančią prekę\n\t7. Apskaičiuoti bendrą visų prekių sumą\n\n\n";
- int sb;
- do {
- cin >> sb;
- }
- while (!cin.good() || !(sb > 0 && sb << 8));
- switch(sb) {
- case 1: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKĖS (-IŲ) PRIDĖJIMAS:\n\n\tĮrašykite prekės pavadinimą, kiekį ir kainą:\n\n\n";
- string name;
- int q, price;
- do {
- cin >> name >> q >> price;
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- if(N[c].suma != -77) continue;
- clear();
- N[c].pavadinimas = name;
- N[c].kiekis = q;
- N[c].kaina = price;
- N[c].suma = (N[c].kiekis * N[c].kaina);
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKĖS (-IŲ) PRIDĖJIMAS:\n\nPRIDĖJOTE PREKĘ:\n\tPavadinimas: " << name << "\n\tKiekis: " << q << "\n\tKaina: " << price << "\n\tSuma: " << q * price << "\n\n\n";
- return;
- }
- cout << "Nepavyko pridėti prekės, todėl, kad masyve nėra vietos.\n\n\n";
- return;
- }
- while (!cin.good());
- break;
- }
- case 2: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ ĮRAŠYMAS Į FAILĄ:\n\nPrekės įrašytos į failą.\n\n\n";
- IrasytiPrekes();
- break;
- }
- case 3: { // Prekių sąrašo nuskaitymas iš failo
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ ĮRAŠYMAS IŠ FAILO:\n\n";
- ifstream f("txt/prekes.txt");
- int k = -1, r = 0, s = -1, d[4];
- if(f.is_open()) {
- string temp;
- string kiekis;
- while(getline(f, temp)) {
- cout << k + 2 << ") " << temp << endl;
- k++;
- s = -1;
- for(r = 0; r < temp.length(); r++) {
- if(temp[r] == '\n') break;
- if(temp[r] == '|') {
- s++;
- d[s] = r;
- if(s == 2) {
- N[k].pavadinimas.append(temp, 0, d[0]);
- cout << "Pav.: " << N[k].pavadinimas << endl;
- kiekis.append(temp, d[0] + 1, (d[1] - d[0] - 1));
- N[k].kiekis = atoi(kiekis.c_str());
- cout << "Kiekis.: " << N[k].kiekis << endl;
- kiekis.clear();
- kiekis.append(temp, d[1] + 1, (d[2] - d[1] - 1));
- N[k].kaina = atoi(kiekis.c_str());
- cout << "Kaina.: " << N[k].kaina << endl;
- kiekis.clear();
- kiekis.append(temp, d[2] + 1, temp.length());
- N[k].suma = atoi(kiekis.c_str());
- cout << "Suma.: " << N[k].suma << endl;
- kiekis.clear();
- s = -1;
- break;
- }
- }
- }
- cout << "____________________\n\n\n";
- }
- }
- f.close();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/ĮRAŠYTŲ PREKIŲ IŠ FAILO, ATVAIZDAVIMAS IŠ KINTAMŲJŲ:\n\n";
- PrekiuAtvaizdavimas();
- break;
- }
- case 4: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/ESAMŲ PREKIŲ SĄRAŠO ATVAIZDAVIMAS:\n\n";
- int k = 0;
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- if(N[c].suma == -77) continue;
- k++;
- if(k == 1) {
- cout << "ESAMŲ PREKIŲ SĄRAŠAS:\n";
- }
- cout << "Pavadinimas: " << N[c].pavadinimas << ", Kiekis: " << N[c].kiekis << ", Kaina: " << N[c].kaina << ", Suma: " << N[c].suma << endl;
- }
- if(k == 0) {
- cout << "Esamų prekių sąrašas: PREKIŲ NĖRA.\n\n\n";
- }
- else {
- cout << "\n\n";
- }
- break;
- }
- case 5: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ SĄRAŠO RŪŠIAVIMAS:\n\nPasirinkite kintamąjį, pagal kurį prekės bus surūšiuotos:\n\t1. Pavadinimą\n\t2. Kiekį\n\t3. Kainą\n\t4. Sumą\n\n\n";
- int sb, i = 0, j = 0;
- do {
- cin >> sb;
- if(0 < sb < 5) {
- switch(sb) {
- case 1: { // Rūšiavimas pagal pavadinimą
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ SĄRAŠO RŪŠIAVIMAS/1:\n\n";
- for(i = 0; i < PREKIU_SKAICIUS; i++) {
- for(j = 0; j < PREKIU_SKAICIUS; j++) {
- if((i != j) && (N[i].suma != -77 && N[j].suma != -77)) {
- if(N[i].pavadinimas < N[j].pavadinimas) {
- ApkeistiPrekes(i, j);
- }
- }
- }
- }
- PrekiuAtvaizdavimas();
- break;
- }
- case 2: { // Rūšiavimas pagal kiekį
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ SĄRAŠO RŪŠIAVIMAS/2:\n\n";
- for(i = 0; i < PREKIU_SKAICIUS; i++) {
- for(j = 0; j < PREKIU_SKAICIUS; j++) {
- if((i != j) && (N[i].suma != -77 && N[j].suma != -77)) {
- if(N[i].kiekis > N[j].kiekis) {
- ApkeistiPrekes(i, j);
- }
- }
- }
- }
- PrekiuAtvaizdavimas();
- break;
- }
- case 3: { // Rūšiavimas pagal kaina
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ SĄRAŠO RŪŠIAVIMAS/3:\n\n";
- for(i = 0; i < PREKIU_SKAICIUS; i++) {
- for(j = 0; j < PREKIU_SKAICIUS; j++) {
- if((i != j) && (N[i].suma != -77 && N[j].suma != -77)) {
- if(N[i].kaina > N[j].kaina) {
- ApkeistiPrekes(i, j);
- }
- }
- }
- }
- PrekiuAtvaizdavimas();
- break;
- }
- case 4: { // Rūšiavimas pagal sumą
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKIŲ SĄRAŠO RŪŠIAVIMAS/4:\n\n";
- for(i = 0; i < PREKIU_SKAICIUS; i++) {
- for(j = 0; j < PREKIU_SKAICIUS; j++) {
- if((i != j) && (N[i].suma != -77 && N[j].suma != -77)) {
- if(N[i].suma > N[j].suma) {
- ApkeistiPrekes(i, j);
- }
- }
- }
- }
- PrekiuAtvaizdavimas();
- break;
- }
- }
- }
- }
- while (!cin.good());
- break;
- }
- case 6: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKĖS IŠTRINIMAS:\n\nPrekių sąrašas:\n";
- int k = 0, var[PREKIU_SKAICIUS];
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- var[c] = -77;
- if(N[c].suma == -77) continue;
- k++;
- var[k-1] = c;
- cout << k << ". Pavadinimas: " << N[c].pavadinimas << ", Kiekis: " << N[c].kiekis << ", Kaina: " << N[c].kaina << ", Suma: " << N[c].suma << endl;
- }
- if(k == 0) {
- cout << "Esamų prekių sąrašas: PREKIŲ NĖRA.\n";
- return;
- }
- else
- {
- int nr;
- do {
- cout << "\nĮrašykite prekės nr., kuria norite ištrinti:\n";
- cin >> nr;
- nr = var[nr-1];
- if(!(nr < 0 || nr > PREKIU_SKAICIUS-1)) {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/PREKĖS IŠTRINIMAS:\n\n";
- cout << "Prekė ištrinta (" << "Pavadinimas: " << N[nr].pavadinimas << ", Kiekis: " << N[nr].kiekis << ", Kaina: " << N[nr].kaina << ", Suma: " << N[nr].suma << ")" << "\n\n\n";
- N[nr].pavadinimas = " ";
- N[nr].kiekis = 0;
- N[nr].kaina = 0;
- N[nr].suma = -77;
- break;
- }
- }
- while (!cin.good() || (nr < 0 || nr > PREKIU_SKAICIUS-1));
- }
- break;
- }
- case 7: {
- clear();
- cout << "SKAIČIAVIMŲ SU PREKIŲ SĄRAŠAIS MODULIS/BENDRA PREKIŲ SUMA:\n\n";
- int sum = 0;
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- if(N[c].suma == -77) continue;
- sum += N[c].suma;
- }
- cout << "Bendrą visų prekių sumą yra: " << sum << " (valiuta)\n";
- break;
- }
- }
- }
- void ApkeistiPrekes(int nr1, int nr2) { // Apkeičia prekės tarpusavyje, masyve
- swap(N[nr1].pavadinimas, N[nr2].pavadinimas);
- swap(N[nr1].kiekis, N[nr2].kiekis);
- swap(N[nr1].kaina, N[nr2].kaina);
- swap(N[nr1].suma, N[nr2].suma);
- }
- void IrasytiPrekes() { // Įrašo prekių informaciją į failą
- ofstream fr("txt/prekes.txt");
- if (!fr.is_open()) return;
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- if(N[c].suma == -77) continue;
- fr << N[c].pavadinimas << "|" << N[c].kiekis << "|" << N[c].kaina << "|" << N[c].suma << endl;
- }
- fr.close();
- }
- void PrekiuAtvaizdavimas() { // Atvaizduoja prekes
- int k = 0;
- for(int c = 0; c < PREKIU_SKAICIUS; c++) {
- if(N[c].suma == -77) continue;
- k++;
- cout << k << ". Pavadinimas: " << N[c].pavadinimas << ", Kiekis: " << N[c].kiekis << ", Kaina: " << N[c].kaina << ", Suma: " << N[c].suma << endl;
- }
- cout << "\n\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement