Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**************************
- * Anrijs Gedroics, ag18065
- *Izveidot programmu valodā C++. Ja programma darbojas ar failu, nedrīkst dublēt visa faila saturu operatīvajā atmiņā.
- *Ar faila komponenti tiek saprasts fiksēta garuma ieraksts. Sīkākās prasības sk. Laboratorijas darbu noteikumos.
- * H7. Uzrakstīt programmu, kas visus standarta C++ rezervētos vārdus ieliek sakārtotā tabulā. Uzrakstīt funkciju, kas ar binārās meklēšanas
- *palīdzību nosaka, vai dotā simbolu virkne (garums līdz 30) ir C++ rezervētais vārds vai nav. Tabulu realizēt kā tiešās pieejas failu. C++ rezervētie vārdi programmai jānolasa no teksta faila.
- * Programma izveidota: 23/04/2019
- */
- #include <iostream>
- #include <cstring>
- #include <fstream>
- #include <list>
- #include "lvfriendly.h"
- using namespace std;
- bool is_keyw(const string keyw, int Size) {
- int low = 0;
- char word[30];
- string tmp;
- ifstream read_bin("keyw.bin", ios::binary);
- int mid;
- while(low < Size) {
- tmp = "";
- mid = (low + Size) / 2;
- read_bin.seekg(mid * 30);
- read_bin.read(word, 30);
- for(int i=0; i<29; ++i) {
- if(word[i] != '\0')
- tmp += word[i];
- else
- break;
- }
- if(tmp == keyw.c_str()) {
- return true;
- } else if(tmp < keyw.c_str()) {
- low = mid + 1;
- } else {
- Size = mid;
- }
- }
- read_bin.close();
- return false;
- }
- int main() {
- string rinda;
- string d_rinda; // Dotā rinda
- bool ok = false;
- int Size = 0; // Atslēgvārdu daudzums
- list<string> keyw;
- ifstream keyw_unsorted("reserved.txt");
- getline(keyw_unsorted, rinda);
- keyw.push_back(rinda);
- while(!keyw_unsorted.eof()) {
- getline(keyw_unsorted, rinda);
- keyw.push_back(rinda);
- }
- keyw_unsorted.close();
- keyw.sort();
- cout << "Vai vēlaties izprintēt atslēgvārdus?" << endl;
- cin >> ok;
- if(ok) {
- for(auto i = keyw.begin(); i!=keyw.end(); ++i) {
- cout << *i << endl;
- }
- }
- ofstream bin("keyw.bin", ios::binary);
- for(auto i = keyw.begin(); i!=keyw.end(); i++) {
- bin.write((*i).c_str() + '\0', 30);
- ++Size;
- }
- bin.close();
- cout << "Ievadiet atslēgvārdu, kuru meklēt" << endl;
- cin >> d_rinda;
- cout << is_keyw(d_rinda, Size);
- }
- /* Testa plāns
- *Ievads Izvads
- * if 1
- * and 1
- * g 0
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement