Помощь - Поиск - Пользователи - Календарь
Полная версия: Орел или решка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
CORS@R
Задача такая: написать игру типа орел или решка, но с деньгами. Данные должны считываться из файла(а именно имя и деньги) и сохранятся в файл.
uses crt;
const N=1000;
label save, view, start, money, exit;
type
Dengi=record
name:string[12];
babki:integer;
end;
var
imya:char;
x,y:byte;
mas: array[1..N] of dengi;
i,sum,rez,otv,stavka,count:integer;
f:text;

begin
textbackground(1);
textcolor(10);
clrscr;
count:=0;
assign(f,'c:\123.txt');
reset(f);
begin
while (not eof(f)) do
begin
readln(f,mas[count].name);
readln(f,mas[count].babki);
inc(count);
end;
end;
close(f);
randomize;
sum:=100;
writeln;
writeln( ' Ћђ…‹ €‹€ ђ…˜ЉЂ ');
while sum>0 do
begin
if sum>=1000 then
begin
writeln;
writeln(' Њ®Ґ Є §Ё­® ®Ў ­Єа®вЁ«®бм, в Є зв® Ё¤Ё Є вл ®вбо¤ Ї®Є п вҐЎп ­Ґ гЎЁ«');
writeln;
readln;
goto exit;
end;
start:
writeln;
writeln(' 0-Ћђ…‹ 4-‘®еа ­Ёвм 1-ђ…˜ЉЂ 2-‚›•Ћ„ €‡ €ѓђ› 3-Џа®б¬®ва');
writeln;
readln(otv);
if otv>4 then
begin
writeln;
writeln(' ’л зҐ б«ҐЇ®©? Ќ ЇЁб ­® ¦Ґ 0-Ћђ…‹ 4-‘®еа ­Ёвм 1-ђ…˜ЉЂ 2-‚›•Ћ„ €‡ €ѓђ› 3-Џа®б¬®ва ');
writeln;
writeln( ' Ђ ' ,otv,' п зв®-в® ­Ґ ўЁ¦г');
writeln;
goto start;
end;
if otv=3 then goto view;
if otv=4 then goto save;
if otv=2 then goto exit;
if otv=0 then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' Ћђ…‹');
end;
if otv=1 then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' ђ…˜ЉЂ');
end;
money: begin
writeln;
Writeln(' ” ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?');
writeln;
readln(stavka);
if stavka>sum then
begin
writeln;
writeln(' ’л зҐ бзЁв вм зв® «Ё ­Ґ 㬥Ґим, г вҐЎп ­Ґв в ЄЁе ¤Ґ­ҐЈ!!!');
readln;
goto money;
end;
rez:=random(2);
if rez=1 then
begin
writeln;
writeln(' ‚лЇ « ђ…˜ЉЂ');
end;
if rez=0 then
begin
writeln;
writeln(' ‚лЇ « Ћђ…‹');
end;
if rez=otv then
begin
writeln;
writeln(' ”г и а ');
sum:=sum+stavka;
writeln;
writeln(' ‘зҐв: ',sum);
writeln('-----------------------------------------------------------------');
end
else begin
writeln;
writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ ­Ґ Ё­вҐаҐб­®');
sum:=sum-stavka;
writeln;
writeln(' ‘зҐв: ',sum);
writeln('------------------------------------------------------------------');
end;
end;
end;
if sum<=0 then
begin
writeln;
writeln(' ” вҐЎп § Є®­зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § 室Ё');
readln;
end;

view:if count>0 then
writeln(' €Ја®Є „Ґ­мЈЁ ');
if count>0 then
begin
i:=0;
while i<count do
writeln(mas[i].name,mas[i].babki) ;
end
else writeln(' ‘ЇЁб®Є Їгбв');
goto start;


save: if count<N then
begin
writeln('‚ўҐ¤ЁвҐ бў®Ґ Ё¬п ');
readln(imya);
mas[count].name:=imya;
inc(count);
end
else
writeln('ЌҐв бў®Ў®¤­®Ј® ¬Ґбв ');
assign (f,'c:\123.txt');
append(f);
i:=0;
while i<count do
begin
mas[i].babki:=sum;
writeln(f,mas[i].name);
writeln(f,mas[i].babki);
end;
close(f);
goto start;

exit: end.


Дело в том что инфа никак не может сохраниться(помогает только CTRL+BREAK), а сам файл все толстеет и толстеет. При просмотре все время пишет что список пуст

Кто видел наверно еще не забыл
volvo
под меткой View:
  view:
if count>0 then writeln(' Игрок Деньги ');
if count>0 then begin
i:=0;
while i<count do begin
writeln(mas[i].name, mas[i].babki) ;
inc(i) { <--- Увеличивать счетчик кто будет ? }
end;
end;

Аналогично при Save:
  { assign (f,'123.txt'); } { <--- Это совсем не обязятельно, переменная уже связяна с файлом }
append(f);
i:=0;

while i<count do begin
mas[i].babki:=sum;
writeln(f,mas[i].name);
writeln(f,mas[i].babki);
inc(i) { <--- А вот это - обязательно !!! }
end;

И мой тебе совет: во-первых, забудь вообще, что есть метки (и про Goto тоже забудь, ты пишешь не на Бейсике, а на Паскале !!!), а во-вторых, подумай о других - кириллицу переводи в Windows-кодировку. А то если я буду выкладывать файлы так, как удобно мне - поверь, ты мало что поймешь...
CORS@R
Точно про счетчик то я забыл. С goto вроде как то проще(в школе бейсик был). Есть маленький глюк при просмотре, но эта фигня щас поправим. С кодировкой больше так не буду. Thank you very much
CORS@R
Цитата(CORS@R @ 4.02.2006 2:49) *

Есть маленький глюк при просмотре, но эта фигня щас поправим


Блин глюк оказался не маленьким и не при просмотре а при сохранение: играю я значит и решил сохранить результат(Допустим имя qw, а деньги - 130). Сохранил. Нажимаю просмотр - все хорошо
(qw 130).
Дальше играю, опять сохраняю(имя as деньги 45), смотрю а там вместо
qw 130
as 45
вот такое чудо
qw 130
qw 45
as 45

Посмотри еще разок, а то я запарился уже wacko.gif
volvo
Переделай часть с Save и View вот так:

  view:
if count>0 then writeln(' player money ');
if count>0 then begin
i:=1; { <--- Индексация начинается с 1, а не с 0 !!! }
while i<=count do begin { Соответственно не забывай про "=" }
writeln(mas[i].name, ' ', mas[i].babki);
inc(i)
end;
end
else writeln(' <empty>');

goto start;

save:
if count<N then begin
writeln('enter your name ');
readln(imya);
inc(count); { <--- Сначала увеличь счетчик, потом - работай с записью }
mas[count].name:=imya;
mas[count].babki:=sum; { <--- Сразу заполняй число денег для записываемого игрока... }

append(f); { ... и записывай в файл ... }
writeln(f,mas[count].name); { <--- Не надо ДОзаписывать ВСЕ, достаточно только mas[count] }
writeln(f,mas[count].babki);
close(f);
end
else writeln('not enough mem ');
goto start;

А в начале программы при чтении из файла -
  while (not eof(f)) do begin
inc(count); { <--- Сначала увеличиваем индекс, потом читаем }
readln(f,mas[count].name);
readln(f,mas[count].babki);
end;
CORS@R
Спасибо, все работает. good.gif А я вчера чуть ли не всю ночь сидел, нифига не получалось, только что проснулся и сразу сюда.
CORS@R
А как сделать так чтобы экзешник и файл 123.txt находились в любой папке ?
volvo
Не указывай путь к TXT файлу явно. Напиши просто '123.txt' - тогда, если EXE и TXT будут в ОДНОЙ и той же папке, программа будет работать...
CORS@R
Я так и делал, вылетало с какой-то ошибкой. Щас попробовал - работает. Наверное я сам виноват не тот экзешник наверное в папку к txt - файлу кидал
CORS@R
Блин, хочется зашифровать данные в файле. Вроде как я понял можно сделать файл типизированным а не текстовым, но тогда вроде как нельзя пользоваться функцией append или я что-то не так понял
volvo
Все правильно понял... Append работает только с текстовыми файлами... Можешь зашифровать простым XOR-ом: перед тем, как записать в файл строку - пройти по ней и сделать так:
XorKey := ... { тут - любое значение типа Byte }
For i := 1 To Length(s) Do
s[i] := Char( Byte(s[i]) Xor XorKey );


Теперь строка будет не в таком явном виде, как раньше... Для расшифровки - повторить ту же операцию с тем же XorKey, при повторном прогоне Xor восстанавливаются исходные значения...
CORS@R
С шифровкой понял, реализую потом. Есть маленькая проблема: при сохранение имя игрока сохраняется но потом при большом количестве раз сохранений этот список разрастается. Хочется сделать чтобы если при совпадение введенного имени и имени который уже в файле поле babki не заменялось новым значением sum а прибавлялось к старому. Вот я что-то наклепал но это что-то не пашет
save:
if count<N then begin

writeln('Введи имя');

readln(imya);
if imya=mas[count].name then
begin
inc(count);
mas[count].name:=imya;
mas[count].babki:=mas[count].babki+sum;
goto w;
end;

inc(count);

mas[count].name:=imya;

mas[count].babki:=sum;


w: append(f);

writeln(f,mas[count].name);

writeln(f,mas[count].babki);

close(f);

end

else writeln('Нет места ');
volvo
YYY.gif Опять метки...
save:

writeln('‚Введи имя'); readln(imya);
b := False; { <--- Эту переменную придется определить в начале }
for i := 1 to count do begin
if imya = mas[i].name then begin

inc(mas[i].babki, sum);
rewrite(f);
for j := 1 to count do begin
writeln(f, mas[j].name); { <--- Здесь была ошибка ! }
writeln(f, mas[j].babki);
end;
close(f);
b := true; break;
end;
end;

if not b then
if count<N then begin
inc(count);
mas[count].name:=imya;
mas[count].babki:=sum;
append(f);
writeln(f,mas[count].name);
writeln(f,mas[count].babki);
close(f);
end;
else writeln('Нет места ');
Идея понятна?
CORS@R
че то не так...
Играю - сохраняю qw 77
играю - сохраняю as 88
играю - сохраняю zx 145
смотрю - все нормально
потом играю, сумма 55, сохраняю как qw
Должно быть
qw 132
as 88
zx 145
но там
zx 145
zx 145
zx 145
volvo
Я подправил, проверь...
CORS@R
Работает good.gif . А я уж было собирался через удаление делать. Ищем имя потом все данные которые принадлежат этому имени удаляем и заново на его место записываем новые данные. Но раз ты выбрал свой метод значит он лучше(тем более рабочий)
CORS@R
Еще одна малюсенькая просьба: при просмотре имя игрока находится под надписью "ИГРОК" а значение денег располагается не под "ДЕНЬГИ" а в зависимости отдлины имени игрока. Хочется чтобы и значение денег находились строго под "ДЕНЬГИ". В Си это делается легко а в Паскале не знаю
volvo
Цитата(CORS@R @ 5.02.2006 0:13)
В Си это делается легко а в Паскале не знаю

А в Паскале - еще легче:
view:
if count > 0 then writeln('player':15, 'money':7);
if count>0 then begin
i:=1;
while i<=count do begin
writeln(mas[i].name:15,mas[i].babki:7) ;
inc(i)
end;
end
else writeln(' <empty>');
CORS@R
Блин, че то я уже совсем туплю. Я делал так
view:

if count > 0 then writeln('ИГРОК ДЕНЬГИ'); {<---А про это я че то не подумал}

if count>0 then begin

i:=1;

while i<=count do begin

writeln(mas[i].name:15,mas[i].babki:7) ;

inc(i)

end;

end

else writeln(' <empty>');


И у меня все съезжало вправо.
CORS@R
volvo, смотри: Чтоб сразу нельзя было сохранять деньги я сначала сделал вот так
Код

uses crt;
const N=1000;
label  start1,save, view,view1, start, money, exit;
type
Dengi=record
name:string[9];
babki:word;
end;
var
b,flag:boolean;  {<--- Обрати внимание}
imya:string[15];
x,y,rez:byte;
tmp:word;
mas: array[1..N] of dengi;
otv,otvet:char;
i,j,sum,stavka,count:integer;
f:text;

begin    {start1:}
textbackground(1);
textcolor(10);
clrscr;
start1:count:=0;

assign(f,'123.txt');
reset(f);
begin
while (not eof(f)) do
begin
inc(count);
readln(f,mas[count].name);
readln(f,mas[count].babki);

end;
end;
close(f);
flag:=false;  {<--}
writeln;
writeln('            -------------   --------   --------------- ');
writeln('           |1-ЌЋ‚›‰ €ѓђЋЉ| |2-€ѓђЋЉ€| |3-‚›•Ћ„ €‡ €ѓђ›|');
writeln('            -------------   --------   --------------- ');
writeln;
otvet:=readkey;
if otvet='1' then begin
writeln;
writeln(' Љ Є вҐЎп §®ўгв ?я');
writeln;
readln(imya);
end;
if otvet='2' then goto view1;
if otvet='3' then goto exit;
randomize;
sum:=100;
writeln;
writeln( '                               Ћђ…‹ €‹€ ђ…˜ЉЂ            ');
while sum>0 do
begin
if sum>=1000 then
begin
writeln;
writeln(' Њ®Ґ Є §Ё­® ®Ў ­Єа®вЁ«®бм, в Є зв® Ё¤Ё Є  вл ®вбо¤  Ї®Є  п вҐЎп ­Ґ гЎЁ«');
writeln;
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto save;
end;
start:
writeln;
writeln(' --------   ---------   ----------   ------------------   ----------------- ');
writeln('| 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | ');
writeln(' --------   ---------   ----------   ------------------   ----------------- ');
writeln;
otv:=readkey;
if otv>'4' then
begin
writeln;
writeln(' ” ⥡п ᮢᥬ Ї«®е® б® §аҐ­ЁҐ¬ ? Ќ ЇЁб ­® ¦Ґ: ');
writeln;
writeln('  --------   ---------   ----------   ------------------   ----------------- ');
writeln(' | 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | ');
writeln('  --------   ---------   ----------   ------------------   -----------------  ');
writeln;
writeln( ' Ђ ' ,otv,' п зв®-в® ­Ґ ўЁ¦г');
writeln('--------------------------------------------------------------------------------');
goto start;
end;
if otv='2' then goto view;
if otv='3' then
begin
if  not flag then {<--}
goto save
else
begin
writeln;
writeln(' •®зҐим ¤Ґ­мЈЁ § Ўа вм? ЌҐ в Є Ўлбва®. —в®Ўл ¤Ґ­мЈЁ § Ўа вм Ёе ­г¦­® § а Ў®в вм!');
writeln;
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto start;
end;
end;
if otv='4' then goto exit;
if otv='0' then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' Ћђ…‹');
end;
if otv='1' then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' ђ…˜ЉЂ');
end;
money: begin
writeln;
Writeln(' ” ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?');
writeln;
readln(stavka);
if stavka>sum then
begin
writeln;
writeln(' ’л зҐ бзЁв вм зв® «Ё ­Ґ 㬥Ґим, г вҐЎп ­Ґв в ЄЁе ¤Ґ­ҐЈ!!!');
writeln('-----------------------------------------------------------------');
readln;
goto money;
end;
rez:=random(2);
if rez=1 then
begin
writeln;
writeln(' ‚лЇ «  ђ…˜ЉЂ');
end;
if rez=0 then
begin
writeln;
writeln(' ‚лЇ « Ћђ…‹');
end;
tmp:=ord(otv)-48;
if {tmp=otv}  rez=tmp then
begin
writeln;
writeln(' ”г и а ');
sum:=sum+stavka;
writeln;
writeln(' ‘зҐв: ',sum);
flag:=true; {<--}
writeln('-----------------------------------------------------------------');
end
else begin
writeln;
writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ ­Ґ Ё­вҐаҐб­®');
sum:=sum-stavka;
writeln;
writeln(' ‘зҐв: ',sum);
flag:=true; {<--}
writeln('------------------------------------------------------------------');
end;
end;
end;
if sum<=0 then
begin
writeln;
writeln(' ” вҐЎп § Є®­зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § 室Ё');
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto exit;
end;

view:
if count>0 then begin
writeln;
writeln('                 -------------------------------------------');
writeln('                |        €ѓђЋЉ':10, '        |        „Ґ­мЈЁ':10,'       |');
writeln('                |-------------------------------------------|');
end;
if count>0 then begin
i:=1;
while i<=count do begin
writeln('                |                     |                     |');
writeln('                |    ',mas[i].name:10,'       |  ', mas[i].babki:10,'         |');
writeln('                |                     |                     |');
inc(i);
end;
writeln('                 -------------------------------------------');
end
else writeln(' ‘ЇЁб®Є Їгбв');
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
goto start;

view1:
if count>0 then begin
writeln;
writeln('                 -------------------------------------------');
writeln('                |        €ѓђЋЉ':10, '        |        „Ґ­мЈЁ':10,'       |');
writeln('                |-------------------------------------------|');
end;
if count>0 then begin
i:=1;
while i<=count do begin
writeln('                |                     |                     |');
writeln('                |    ',mas[i].name:10,'       |  ', mas[i].babki:10,'         |');
writeln('                |                     |                     |');
inc(i);
end;
writeln('                 -------------------------------------------');
end
else writeln(' ‘ЇЁб®Є Їгбв');
goto start1;

save:

{writeln('Љ Є вҐЎп §®ўгв ?я'); readln(imya);}

b := False;

for i := 1 to count do begin

  if imya = mas[i].name then begin


    inc(mas[i].babki, sum);

    rewrite(f);

    for j := 1 to count do begin

      writeln(f, mas[j].name);

      writeln(f, mas[j].babki);

    end;

    close(f);
    WRITELN;
    writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ');
    WRITELN;
    delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
    b := true; break;

  end;

end;


if not b then

  if count<N then begin

      inc(count);

      mas[count].name:=imya;

      mas[count].babki:=sum;

      append(f);

      writeln(f,mas[count].name);

      writeln(f,mas[count].babki);

      close(f);
      writeln;
      writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ ');
      writeln;
      delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
  end

  else writeln('Нет места ');

  goto start1;

exit: end.


Но так не работает. Кодировку не менял - она здесь не нужна.
Потом сделал так
Код

uses crt;
const N=1000;
label  start1,save, view,view1, start, money, exit;
type
Dengi=record
name:string[9];
babki:word;
end;
var
b:boolean;
imya:string[15];
x,y,rez,flag:byte; {<--- Теперь flag byte}
tmp:word;
mas: array[1..N] of dengi;
otv,otvet:char;
i,j,sum,stavka,count:integer;
f:text;

begin    {start1:}
textbackground(1);
textcolor(10);
clrscr;
start1:count:=0;

assign(f,'123.txt');
reset(f);
begin
while (not eof(f)) do
begin
inc(count);
readln(f,mas[count].name);
readln(f,mas[count].babki);

end;
end;
close(f);
flag:=0; {<--}
writeln;
writeln('            -------------   --------   --------------- ');
writeln('           |1-ЌЋ‚›‰ €ѓђЋЉ| |2-€ѓђЋЉ€| |3-‚›•Ћ„ €‡ €ѓђ›|');
writeln('            -------------   --------   --------------- ');
writeln;
otvet:=readkey;
if otvet='1' then begin
writeln;
writeln(' Љ Є вҐЎп §®ўгв ?я');
writeln;
readln(imya);
end;
if otvet='2' then goto view1;
if otvet='3' then goto exit;
randomize;
sum:=100;
writeln;
writeln( '                               Ћђ…‹ €‹€ ђ…˜ЉЂ            ');
while sum>0 do
begin
if sum>=1000 then
begin
writeln;
writeln(' Њ®Ґ Є §Ё­® ®Ў ­Єа®вЁ«®бм, в Є зв® Ё¤Ё Є  вл ®вбо¤  Ї®Є  п вҐЎп ­Ґ гЎЁ«');
writeln;
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto save;
end;
start:
writeln;
writeln(' --------   ---------   ----------   ------------------   ----------------- ');
writeln('| 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | ');
writeln(' --------   ---------   ----------   ------------------   ----------------- ');
writeln;
otv:=readkey;
if otv>'4' then
begin
writeln;
writeln(' ” ⥡п ᮢᥬ Ї«®е® б® §аҐ­ЁҐ¬ ? Ќ ЇЁб ­® ¦Ґ: ');
writeln;
writeln('  --------   ---------   ----------   ------------------   ----------------- ');
writeln(' | 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-€ѓђЋЉ€ | | 3-‡ЂЃђЂ’њ „…Ќњѓ€ | | 4-‚›•Ћ„ €‡ €ѓђ› | ');
writeln('  --------   ---------   ----------   ------------------   -----------------  ');
writeln;
writeln( ' Ђ ' ,otv,' п зв®-в® ­Ґ ўЁ¦г');
writeln('--------------------------------------------------------------------------------');
goto start;
end;
if otv='2' then goto view;
if otv='3' then
begin
if  flag=1 then {<--}
goto save
else
begin
writeln;
writeln(' •®зҐим ¤Ґ­мЈЁ § Ўа вм? ЌҐ в Є Ўлбва®. —в®Ўл ¤Ґ­мЈЁ § Ўа вм Ёе ­г¦­® § а Ў®в вм!');
writeln;
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto start;
end;
end;
if otv='4' then goto exit;
if otv='0' then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' Ћђ…‹');
end;
if otv='1' then
begin
x:=WhereX;
y:=WhereY-1;
gotoXY(x,y);
writeln(' ђ…˜ЉЂ');
end;
money: begin
writeln;
Writeln(' ” ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?');
writeln;
readln(stavka);
if stavka>sum then
begin
writeln;
writeln(' ’л зҐ бзЁв вм зв® «Ё ­Ґ 㬥Ґим, г вҐЎп ­Ґв в ЄЁе ¤Ґ­ҐЈ!!!');
writeln('-----------------------------------------------------------------');
readln;
goto money;
end;
rez:=random(2);
if rez=1 then
begin
writeln;
writeln(' ‚лЇ «  ђ…˜ЉЂ');
end;
if rez=0 then
begin
writeln;
writeln(' ‚лЇ « Ћђ…‹');
end;
tmp:=ord(otv)-48;
if {tmp=otv}  rez=tmp then
begin
writeln;
writeln(' ”г и а ');
sum:=sum+stavka;
writeln;
writeln(' ‘зҐв: ',sum);
flag:=1; {<--}
writeln('-----------------------------------------------------------------');
end
else begin
writeln;
writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ ­Ґ Ё­вҐаҐб­®');
sum:=sum-stavka;
writeln;
writeln(' ‘зҐв: ',sum);
flag:=1; {<--}
writeln('------------------------------------------------------------------');
end;
end;
end;
if sum<=0 then
begin
writeln;
writeln(' ” вҐЎп § Є®­зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § 室Ё');
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
goto exit;
end;

view:
if count>0 then begin
writeln;
writeln('                 -------------------------------------------');
writeln('                |        €ѓђЋЉ':10, '        |        „Ґ­мЈЁ':10,'       |');
writeln('                |-------------------------------------------|');
end;
if count>0 then begin
i:=1;
while i<=count do begin
writeln('                |                     |                     |');
writeln('                |    ',mas[i].name:10,'       |  ', mas[i].babki:10,'         |');
writeln('                |                     |                     |');
inc(i);
end;
writeln('                 -------------------------------------------');
end
else writeln(' ‘ЇЁб®Є Їгбв');
delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
goto start;

view1:
if count>0 then begin
writeln;
writeln('                 -------------------------------------------');
writeln('                |        €ѓђЋЉ':10, '        |        „Ґ­мЈЁ':10,'       |');
writeln('                |-------------------------------------------|');
end;
if count>0 then begin
i:=1;
while i<=count do begin
writeln('                |                     |                     |');
writeln('                |    ',mas[i].name:10,'       |  ', mas[i].babki:10,'         |');
writeln('                |                     |                     |');
inc(i);
end;
writeln('                 -------------------------------------------');
end
else writeln(' ‘ЇЁб®Є Їгбв');
goto start1;

save:

{writeln('Љ Є вҐЎп §®ўгв ?я'); readln(imya);}

b := False;

for i := 1 to count do begin

  if imya = mas[i].name then begin


    inc(mas[i].babki, sum);

    rewrite(f);

    for j := 1 to count do begin

      writeln(f, mas[j].name);

      writeln(f, mas[j].babki);

    end;

    close(f);
    WRITELN;
    writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ');
    WRITELN;
    delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
    b := true; break;

  end;

end;


if not b then

  if count<N then begin

      inc(count);

      mas[count].name:=imya;

      mas[count].babki:=sum;

      append(f);

      writeln(f,mas[count].name);

      writeln(f,mas[count].babki);

      close(f);
      writeln;
      writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ ');
      writeln;
      delay(65000); delay(65000); delay(65000); delay(65000); delay(65000);
delay(65000); delay(65000);
  end

  else writeln('Нет места ');

  goto start1;

exit: end.


и заработало. Почему так blink.gif ?
volvo
Вот как ты думаешь, я сейчас все брошу и буду посимвольно сравнивать эти тексты?

Если тебя заинтересовал вопрос - то покажи то, что ты изменил в программе, а не пость килобайты кода...
CORS@R
Извеняюсь, не подумал. Изменения пометил так {<--}
volvo
Не знаю, почему это у тебя не работает, мне просто жалко времени - разбираться с таким кодом, как у тебя... Я тебе показал (при переводе на C), что можно вообще обойтись без меток, программа от этого только выиграет.

Ты же продолжаешь добавлять все новые и новые метки и все больше и больше запутываешь программу. То, что у тебя сейчас занимает 277 строк, можно уложить в 50-60, и обойтись без секции Label вообще... Так что выбирай, или ты начинаешь писать на Паскале, или я в эту тему больше не захожу. Так же как и в другие, где приводятся программы со сплошными переходами по GoTo...
CORS@R
Ну не 50 - 60 строк, но от меток избавился. Так пойдет?
Код

uses crt;
const N=100;
type
  Dengi=record
    name:string[9];
    babki:word;
end;
var
b:boolean;
imya:string[15];
x,y,rez,flag:byte;
tmp:word;
mas: array[1..N] of dengi;
otv,otvet:char;
i,j,sum,stavka,count:integer;
f:text;

procedure cursor;
   begin
      x:=WhereX;
      y:=WhereY-1;
      gotoXY(x,y);
   end;

PROCEDURE view;
  begin
     if count>0 then
    begin
         writeln;
         writeln('                 -------------------------------------------');
         writeln('                |        ?ѓђЋЉ':10, '        |        „Ґ­мЈЁ':10,'       |');
         writeln('                |-------------------------------------------|');
    end;
     if count>0 then
       begin
          i:=1;
          while i<=count do
           begin
               writeln('                |                     |                     |');
               writeln('                |    ',mas[i].name:10,'       |  ', mas[i].babki:10,'         |');
               writeln('                |                     |                     |');
               inc(i);
            end;
          writeln('                 -------------------------------------------');
       end
     else
      writeln(' ‘ЇЁб®Є Їгбв');
   end;

procedure save;
   begin
     b := False;
     for i := 1 to count do
     begin
           if imya = mas[i].name then
          begin
             inc(mas[i].babki, sum);
             rewrite(f);
             for j := 1 to count do
               begin
                  writeln(f, mas[j].name);
                  writeln(f, mas[j].babki);
               end;
             close(f);
             WRITELN;
             writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ');
             WRITELN;
             readln;
             b := true; break;
          end;
          end;

       if not b then
       if count<N then
          begin
             inc(count);
             mas[count].name:=imya;
             mas[count].babki:=sum;
             append(f);
             writeln(f,mas[count].name);
             writeln(f,mas[count].babki);
             close(f);
             writeln;
             writeln('Џа®©¤Ё ў Є ббг, в ¬ ⥡Ґ ўл¤ ¤гв вў®Ё зҐбв­®§ а Ў®в ­­лҐ ¤Ґ­мЈЁ ');
             writeln;
             readln;
          end
        else
          writeln('Нет места ');
      end;

procedure start;
   begin
       writeln;
       writeln(' --------   ---------   ----------   ------------------   ----------------- ');
       writeln('| 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-?ѓђЋЉ? | | 3-‡ЂЃђЂ’њ „…Ќњѓ? | | 4-‚›•Ћ„ ?‡ ?ѓђ› | ');
       writeln(' --------   ---------   ----------   ------------------   ----------------- ');
       writeln;
       otv:=readkey;
   end;

procedure money;
   begin
       writeln;
       Writeln(' “ ⥡п ',sum,' агЎ«Ґ©. ‘Є®«мЄ® бв ўЁим?');
       writeln;
       readln(stavka);
       if stavka>sum then
       begin
          writeln;
          writeln(' ’л зҐ бзЁв вм зв® «Ё ­Ґ 㬥Ґим, г вҐЎп ­Ґв в ЄЁе ¤Ґ­ҐЈ!!!');
          writeln('-----------------------------------------------------------------');
          readln;
          money;
       end;
   end;

procedure start1;
    begin
       count:=0;
       assign(f,'123.txt');
       reset(f);
       while (not eof(f)) do
          begin
         inc(count);
         readln(f,mas[count].name);
         readln(f,mas[count].babki);
      end;
       close(f);
       flag:=0;
       writeln;
       writeln('            -------------   --------   --------------- ');
       writeln('           |1-ЌЋ‚›‰ ?ѓђЋЉ| |2-?ѓђЋЉ?| |3-‚›•Ћ„ ?‡ ?ѓђ›|');
       writeln('            -------------   --------   --------------- ');
       writeln;
       otvet:=readkey;
       if otvet='1' then
          begin
         writeln;
         writeln(' Љ Є вҐЎп §®ўгв ?я');
         writeln;
         readln(imya);
          end;
       if otvet='2' then
          begin
         view;
         start1;
          end;
       if otvet='3' then halt;
       randomize;
       sum:=100;
       writeln;
       writeln( '                               Ћђ…‹ ?‹? ђ…˜ЉЂ            ');
       while sum>0 do
          begin
         if sum>=1000 then
             begin
                 writeln;
                 writeln(' Њ®Ґ Є §Ё­® ®Ў ­Єа®вЁ«®бм, в Є зв® Ё¤Ё Є  вл ®вбо¤  Ї®Є  п вҐЎп ­Ґ гЎЁ«');
                 writeln;
                 readln;
                 save;
             end;
         start;
         if otv>'4' then
             begin
                 writeln;
                 writeln(' “ ⥡п ᮢᥬ Ї«®е® б® §аҐ­ЁҐ¬ ? Ќ ЇЁб ­® ¦Ґ: ');
                 writeln;
                 writeln('  --------   ---------   ----------   ------------------   ----------------- ');
                 writeln(' | 0-Ћђ…‹ | | 1-ђ…˜ЉЂ | | 2-?ѓђЋЉ? | | 3-‡ЂЃђЂ’њ „…Ќњѓ? | | 4-‚›•Ћ„ ?‡ ?ѓђ› | ');
                 writeln('  --------   ---------   ----------   ------------------   -----------------  ');
                 writeln;
                 writeln( ' Ђ ' ,otv,' п зв®-в® ­Ґ ўЁ¦г');
                 writeln('--------------------------------------------------------------------------------');
                 start;
              end;
         if otv='2' then
             begin
                 view;
                 start;
             end;
         if otv='3' then
             begin
                 if  flag=1 then
                     begin
                      save;
                      start1;
                      end
                 else
                 begin
                     writeln;
                     writeln(' •®зҐим ¤Ґ­мЈЁ § Ўа вм? ЌҐ в Є Ўлбва®. —в®Ўл ¤Ґ­мЈЁ § Ўа вм Ёе ­г¦­® § а Ў®в вм!');
                     writeln;
                     readln;
                     start;
                 end;
             end;
         if otv='4' then halt;
         if otv='0' then
             begin
                 cursor;
                 writeln(' Ћђ…‹');
             end;
         if otv='1' then
             begin
                 cursor;
                 writeln(' ђ…˜ЉЂ');
             end;
         money;
             rez:=random(2);
             if rez=1 then
                 begin
                     writeln;
                     writeln(' ‚лЇ «  ђ…˜ЉЂ');
                 end;
             if rez=0 then
                 begin
                     writeln;
                     writeln(' ‚лЇ « Ћђ…‹');
                 end;
             tmp:=ord(otv)-48;
         if  rez=tmp then
                 begin
                     writeln;
                     writeln(' ”г и а ');
                 inc(sum,stavka);
                 writeln;
                 writeln(' ‘зҐв: ',sum);
                 flag:=1;
                 writeln('-----------------------------------------------------------------');
             end
         else
             begin
                 writeln;
                 writeln( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ ­Ґ Ё­вҐаҐб­®');
                 dec(sum,stavka);
                 writeln;
                 writeln(' ‘зҐв: ',sum);
                 flag:=1;
                 writeln('------------------------------------------------------------------');
             end;
          end;
       if sum<=0 then
         begin
         writeln;
         writeln(' “ вҐЎп § Є®­зЁ«Ёбм Ў ЎЄЁ. Љ Є в®«мЄ® Ї®пўпвбп, § е®¤Ё');
         readln;
         halt;
         end;
    end;

begin
   textbackground(1);
   textcolor(10);
   clrscr;
   start1;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.