#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <ctime>
#include <fstream>
#include <windows.h>
#pragma once
using namespace std;
int counter( FILE * File) {
int i = 0 ;
int s;
do {
s = fgetc ( File) ;
if ( s == '"' )
i++ ;
} while ( s ! = EOF ) ;
rewind ( File) ;
i = 1 + rand ( ) % ( i - 1 ) ;
return i;
}
void output( FILE * File, int i) {
fgetc ( File) ;
int j = 1 ;
while ( j ! = i) {
if ( fgetc ( File) == '"' )
j++ ;
}
char c = fgetc ( File) ;
while ( c ! = '"' ) {
cout << c;
c = fgetc ( File) ;
}
}
void random_place( ) {
FILE * placeFile = fopen ( "rPlace.txt" , "r" ) ;
int i = counter( placeFile) ;
output( placeFile, i) ;
fclose ( placeFile) ;
}
int random_item( int a, bool tr) {
FILE * itemFile = fopen ( "rItem.txt" , "r" ) ;
int i;
if ( tr == true )
i = counter( itemFile) ;
else i = a;
output( itemFile, i) ;
fclose ( itemFile) ;
return i;
}
void random_action( ) {
FILE * actionFile = fopen ( "rAction.txt" , "r" ) ;
int i = counter( actionFile) ;
output( actionFile, i) ;
fclose ( actionFile) ;
}
void add( FILE * File, char * b) {
OemToCharA( b, b) ;
for ( int i = 0 ; b[ i- 1 ] ! = '"' ; i++ ) {
fputc ( b[ i] , File) ;
}
system ( "cls" ) ;
cout << "Added \n " ;
}
void out( ) {
int actionA = 0 ;
cout << "Иду я как то по " ;
random_place( ) ;
cout << ", вдруг вижу - " ;
actionA = random_item( actionA, true ) ;
cout << "! Мне конечно чужого не надо. Определяю хозяина путём " ;
random_action( ) ;
cout << ", связываюсь с ним, а там 'Слышь, падла!Верни " ;
random_item( actionA, false ) ;
cout << " в течение " << rand ( ) % 15 + 1 << " минут! \n \n \n " ;
}
int main( )
{
int a;
srand ( time ( NULL ) ) ;
setlocale( LC_ALL, "Russian" ) ;
FILE * placeFile = fopen ( "rPlace.txt" , "a" ) ;
FILE * itemFile = fopen ( "rItem.txt" , "a" ) ;
FILE * actionFile = fopen ( "rAction.txt" , "a" ) ;
zero:
cout << "Выберите действие: \n " << "1. Сгенерировать историю \n " << "2. Добавить место \n " << "3. Добавить предмет\n " << "4. Добавить способ вычисления\n " << "0. Выход \n " ;
cin >> a;
char * b = new char [ 255 ] ;
switch ( a) {
case 1 :
out( ) ;
goto zero;
break ;
case 2 :
cout << "Введите новое место. Ввод завершите символом \" \n " ;
cin .ignore ( ) ;
cin .getline ( b, 255 ) ;
add( placeFile, b) ;
goto zero;
break ;
case 3 :
cout << "Введите новый предмет. Ввод завершите символом \" \n " ;
cin .ignore ( ) ;
cin .getline ( b, 255 ) ;
add( itemFile, b) ;
goto zero;
break ;
case 4 :
cout << "Введите новое действие. Ввод завершите символом \" \n " ;
cin .ignore ( ) ;
cin .getline ( b, 255 ) ;
add( actionFile, b) ;
goto zero;
break ;
case 0 :
goto one;
default :
system ( "cls" ) ;
cout << "Неверный пункт меню. Попробуйте еще раз \n " ;
goto zero;
}
one:
delete [ ] b;
fclose ( actionFile) ;
fclose ( itemFile) ;
fclose ( placeFile) ;
system ( "pause" ) ;
return 0 ;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNwcmFnbWEgb25jZSAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBjb3VudGVyKEZJTEUgKkZpbGUpewogICAgaW50IGkgPSAwOwogICAgaW50IHM7CiAgICBkbyB7CiAgICAgICAgcyA9IGZnZXRjKEZpbGUpOwogICAgICAgIGlmIChzID09ICciJykKICAgICAgICAgICAgaSsrOwogICAgfSB3aGlsZSAocyAhPSBFT0YpOwogICAgcmV3aW5kKEZpbGUpOwogICAgaSA9IDEgKyByYW5kKCkgJSAoaSAtIDEpOwogICAgcmV0dXJuIGk7Cn0Kdm9pZCBvdXRwdXQoRklMRSAqRmlsZSwgaW50IGkpIHsKICAgIGZnZXRjKEZpbGUpOwogICAgaW50IGogPSAxOwogICAgd2hpbGUgKGogIT0gaSkgewogICAgICAgIGlmIChmZ2V0YyhGaWxlKSA9PSAnIicpCiAgICAgICAgICAgIGorKzsKICAgIH0KICAgIGNoYXIgYyA9IGZnZXRjKEZpbGUpOwogICAgd2hpbGUgKGMgIT0gJyInKSB7CiAgICAgICAgY291dCA8PCBjOwogICAgICAgIGMgPSBmZ2V0YyhGaWxlKTsKICAgIH0KfQp2b2lkIHJhbmRvbV9wbGFjZSgpewogICAgRklMRSAqIHBsYWNlRmlsZSA9IGZvcGVuKCJyUGxhY2UudHh0IiwgInIiKTsKICAgIGludCBpID0gY291bnRlcihwbGFjZUZpbGUpOwogICAgb3V0cHV0KHBsYWNlRmlsZSwgaSk7CiAgICBmY2xvc2UocGxhY2VGaWxlKTsKfQppbnQgcmFuZG9tX2l0ZW0oaW50IGEsIGJvb2wgdHIpewogICAgRklMRSAqIGl0ZW1GaWxlID0gZm9wZW4oInJJdGVtLnR4dCIsICJyIik7CiAgICBpbnQgaTsKICAgIGlmICh0ciA9PSB0cnVlKQogICAgICAgIGkgPSBjb3VudGVyKGl0ZW1GaWxlKTsKICAgIGVsc2UgaSA9IGE7CiAgICBvdXRwdXQoaXRlbUZpbGUsIGkpOwogICAgZmNsb3NlKGl0ZW1GaWxlKTsKICAgIHJldHVybiBpOwp9CnZvaWQgcmFuZG9tX2FjdGlvbigpewogICAgRklMRSAqIGFjdGlvbkZpbGUgPSBmb3BlbigickFjdGlvbi50eHQiLCAiciIpOwogICAgaW50IGkgPSBjb3VudGVyKGFjdGlvbkZpbGUpOwogICAgb3V0cHV0KGFjdGlvbkZpbGUsIGkpOwogICAgZmNsb3NlKGFjdGlvbkZpbGUpOwp9CnZvaWQgYWRkKEZJTEUgKkZpbGUsIGNoYXIgKmIpIHsKICAgIE9lbVRvQ2hhckEoYiwgYik7CiAgICBmb3IgKGludCBpID0gMDsgYltpLTFdICE9ICciJzsgaSsrKXsKICAgICAgICBmcHV0YyhiW2ldLCBGaWxlKTsKICAgIH0KICAgIHN5c3RlbSgiY2xzIik7CiAgICBjb3V0IDw8ICJBZGRlZCBcbiI7Cn0Kdm9pZCBvdXQoKXsKICAgIGludCBhY3Rpb25BID0gMDsKICAgIGNvdXQgPDwgItCY0LTRgyDRjyDQutCw0Log0YLQviDQv9C+ICI7CiAgICByYW5kb21fcGxhY2UoKTsKICAgIGNvdXQgPDwgIiwg0LLQtNGA0YPQsyDQstC40LbRgyAtICI7CiAgICBhY3Rpb25BID0gcmFuZG9tX2l0ZW0oYWN0aW9uQSwgdHJ1ZSk7CiAgICBjb3V0IDw8ICIhINCc0L3QtSDQutC+0L3QtdGH0L3QviDRh9GD0LbQvtCz0L4g0L3QtSDQvdCw0LTQvi4g0J7Qv9GA0LXQtNC10LvRj9GOINGF0L7Qt9GP0LjQvdCwINC/0YPRgtGR0LwgIjsKICAgIHJhbmRvbV9hY3Rpb24oKTsKICAgIGNvdXQgPDwgIiwg0YHQstGP0LfRi9Cy0LDRjtGB0Ywg0YEg0L3QuNC8LCDQsCDRgtCw0LwgJ9Ch0LvRi9GI0YwsINC/0LDQtNC70LAh0JLQtdGA0L3QuCAiOwogICAgcmFuZG9tX2l0ZW0oYWN0aW9uQSwgZmFsc2UpOwogICAgY291dCA8PCAiINCyINGC0LXRh9C10L3QuNC1ICIgPDwgcmFuZCgpICUgMTUgKyAxIDw8ICIg0LzQuNC90YPRgiEgXG4gXG4gXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBhOwogICAgc3JhbmQodGltZShOVUxMKSk7CiAgICBzZXRsb2NhbGUoTENfQUxMLCAiUnVzc2lhbiIpOwogICAgRklMRSAqIHBsYWNlRmlsZSA9IGZvcGVuKCJyUGxhY2UudHh0IiwgImEiKTsKICAgIEZJTEUgKiBpdGVtRmlsZSA9IGZvcGVuKCJySXRlbS50eHQiLCAiYSIpOwogICAgRklMRSAqIGFjdGlvbkZpbGUgPSBmb3BlbigickFjdGlvbi50eHQiLCAiYSIpOwp6ZXJvOgogICAgY291dCA8PCAi0JLRi9Cx0LXRgNC40YLQtSDQtNC10LnRgdGC0LLQuNC1OiBcbiIgPDwgIjEuINCh0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINC40YHRgtC+0YDQuNGOIFxuIiA8PCAiMi4g0JTQvtCx0LDQstC40YLRjCDQvNC10YHRgtC+IFxuIiA8PCAiMy4g0JTQvtCx0LDQstC40YLRjCDQv9GA0LXQtNC80LXRglxuIiA8PCAiNC4g0JTQvtCx0LDQstC40YLRjCDRgdC/0L7RgdC+0LEg0LLRi9GH0LjRgdC70LXQvdC40Y9cbiIgPDwgIjAuINCS0YvRhdC+0LQgXG4iOwogICAgY2luID4+IGE7CiAgICBjaGFyKiBiID0gbmV3IGNoYXJbMjU1XTsKICAgIHN3aXRjaCAoYSkgewogICAgY2FzZSAxOgogICAgICAgIG91dCgpOwogICAgICAgIGdvdG8gemVybzsKICAgICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQvdC+0LLQvtC1INC80LXRgdGC0L4uINCS0LLQvtC0INC30LDQstC10YDRiNC40YLQtSDRgdC40LzQstC+0LvQvtC8IFwiXG4iOwogICAgICAgIGNpbi5pZ25vcmUoKTsKICAgICAgICBjaW4uZ2V0bGluZShiLCAyNTUpOwogICAgICAgIGFkZChwbGFjZUZpbGUsIGIpOwogICAgICAgIGdvdG8gemVybzsKICAgICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQvdC+0LLRi9C5INC/0YDQtdC00LzQtdGCLiDQktCy0L7QtCDQt9Cw0LLQtdGA0YjQuNGC0LUg0YHQuNC80LLQvtC70L7QvCBcIlxuIjsKICAgICAgICBjaW4uaWdub3JlKCk7CiAgICAgICAgY2luLmdldGxpbmUoYiwgMjU1KTsKICAgICAgICBhZGQoaXRlbUZpbGUsIGIpOwogICAgICAgIGdvdG8gemVybzsKICAgICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQvdC+0LLQvtC1INC00LXQudGB0YLQstC40LUuINCS0LLQvtC0INC30LDQstC10YDRiNC40YLQtSDRgdC40LzQstC+0LvQvtC8IFwiXG4iOwogICAgICAgIGNpbi5pZ25vcmUoKTsKICAgICAgICBjaW4uZ2V0bGluZShiLCAyNTUpOwogICAgICAgIGFkZChhY3Rpb25GaWxlLCBiKTsKICAgICAgICBnb3RvIHplcm87CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDA6CiAgICAgICAgZ290byBvbmU7CiAgICBkZWZhdWx0IDoKICAgICAgICBzeXN0ZW0oImNscyIpOwogICAgICAgIGNvdXQgPDwgItCd0LXQstC10YDQvdGL0Lkg0L/Rg9C90LrRgiDQvNC10L3Rji4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidC1INGA0LDQtyBcbiI7CiAgICAgICAgZ290byB6ZXJvOwogICAgfQpvbmU6CiAgICBkZWxldGVbXSBiOwogICAgZmNsb3NlKGFjdGlvbkZpbGUpOwogICAgZmNsb3NlKGl0ZW1GaWxlKTsKICAgIGZjbG9zZShwbGFjZUZpbGUpOwogICAgc3lzdGVtKCJwYXVzZSIpOwogICAgcmV0dXJuIDA7Cn0=