Помощь - Поиск - Пользователи - Календарь
Полная версия: Перевод с Pascal на С
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
CORS@R
Мне нужно чтобы вот эта программа была написана на Си, но с Си у меня проблемы. Помогите пожалуйста

uses crt;
label start, money, exit;
var
x,y:byte;
sum,rez,otv,stavka:integer;
begin
textbackground(1);
textcolor(10);
clrscr;
randomize;
sum:=100;
writeln;
writeln( '							   Ћђ…‹ €‹€ ђ…˜ЉЂ			');
while sum>0 do
begin
if sum>=1000 then
begin
writeln;
writeln(' Њ(r)Ґ Є §Ё­(r) (r)Ў ­Єа(r)вЁ«(r)бм, в Є з(r) Ё¤Ё Є  вл (r)вбо¤  Ї(r)Є  п вҐЎп ­Ґ гЎЁ«');
writeln;
readln;
goto exit;
end;
start:
writeln;
writeln(' 0-Ћђ…‹  1-ђ…˜ЉЂ  2-‚›•Ћ„ €‡ €ѓђ›');
writeln;
readln(otv);
if otv>2 then
begin
writeln;
writeln(' ’л зҐ б«ҐЇ(r)(c)? Ќ ЇЁб ­(r) ¦Ґ  0-Ћђ…‹  1-ђ…˜ЉЂ  2-‚›•Ћ„ €‡ €ѓђ› ');
writeln;
writeln( ' Ђ ' ,otv,' п з(r)-(r) ­Ґ ўЁ¦г');
writeln;
goto start;
end;
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,' агЎ«Ґ(c). ‘Є(r)«мЄ(r) бв ўЁим?');
writeln;
readln(stavka);
if stavka>sum then
begin
writeln;
writeln(' ’л зҐ бзЁв вм з(r) «Ё ­Ґ 㬥Ґим, г вҐЎп ­Ґв в ЄЁе ¤Ґ­ҐЈ!!!');
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( ' ”г б в ЄЁ¬ ЁЈа вм ¤ ¦Ґ ­Ґ Ё­вҐаҐб­(r)');
sum:=sum-stavka;
writeln;
writeln(' ‘зҐв: ',sum);
writeln('------------------------------------------------------------------');
end;
end;
end;
if sum<=0 then
begin
writeln;
writeln(' ” вҐЎп § Є(r)­зЁ«Ёбм Ў ЎЄЁ. Љ Є (r)«мЄ(r) Ї(r)пўпвбп, § е(r)¤Ё');
readln;
end;
exit: end.
Altair
CORS@R, сомневаюсь, что кто-то возьмется к программе, в которой есть goto... убери эти переходы, тогда и переводить можно будет... или переводи сам..
CORS@R
Вот в этом та и вся трудность: я не знаю как заменить goto.
А че в Си нет аналога goto?
volvo
CORS@R, чистый С или С++ ?
klem4
И еще я думаю все было-бы намного проще, если бы ты просто дал свое задание ... Может и в паскаль - программе что - нибудь поправим ;)
CORS@R
Эта что-то типа курсовой. Задание такое: написать игру типа орел или решка но сделать игру на деньги, данные должны считытваться из файла и потом записываться в этот же файл, т.е в этом файле должны хранится данные об игроках, а именно имя и сколько денег. Работа с файлом у меня есть на Си(не мое), а тело игры написано на Pascale
volvo
Ну, что-то вот такое (это работает, но где-то проявляются небольшие глюки с выводом на экран):
#include <conio.h>
#include <stdlib.h>

int main() {

  int otv, stavka;

  textbackground(BLUE); textcolor(LIGHTGREEN);
  clrscr();

  randomize();
  int sum = 100;

  cprintf("\n\r							   ОРЕЛ ИЛИ РЕШКА			\n\r");

  while(sum > 0) {

	if(sum >= 1000) {
	  cprintf("\n\r Мое казино обанкротилось, так что вали-ка ты отсюда пока я тебя не убил\n\r");
	  getch();
	  break;
	}

	do {
	  cprintf("\n\r 0-ОРЕЛ  1-РЕШКА  2-ВЫХОД ИЗ ИГРЫ\n\r");
	  cscanf("%d", &otv);
	  if(otv > 2) {
		cprintf("\n\r%s\n\r а %d я что-то не вижу...\n\r",
		  " Ты че слепой? Написано же  0-ОРЕЛ  1-РЕШКА  2-ВЫХОД ИЗ ИГРЫ", otv);
	  }
	} while( otv < 0 || otv > 2);

	if(otv < 2) {

	  gotoxy(wherex(), wherey() - 1);
	  if(!otv) cprintf((!otv)?" ОРЕЛ":" РЕШКА");

	  int b_stop = 1;
	  do {
		cprintf("\n\rУ тебя %d рублей. Сколько ставишь?\n\r", sum);
		cscanf("%d", &stavka);

		if(stavka > sum) {
		  cprintf("\n\r Ты че считать что ли не умеешь, у тебя нет таких денег!!!\n\r");
		  getch();
		  b_stop = 0;
		  continue;
		}

		int rez = random(2);
		cprintf("\n\r%s\n\r", ((rez) ? " Выпала РЕШКА": " Выпал ОРЕЛ") );

		if(rez == otv) {
		  sum += stavka;
		  cprintf("\n\r Фу шара\n\r");
		}
		else {
		  sum -= stavka;
		  cprintf("\n\r Фу с таким играть даже не интересно\n\r");
		}
		cprintf(" Счет: %d\n\r%s", sum,
		  "-----------------------------------------------------------------");
	  } while(!b_stop);
	}
	else break;

  }

  if(sum <= 0) {
	cprintf("\n\r%s\n\r",
	  " У тебя закончились бабки. Как только появятся, заходи");
	getch();
  }
  return 0;
}
CORS@R
В принципе работает. Но у пользователя спрашивается только 1 раз Орел или решка, а потом - только сколько он будет ставить. И еще нет выхода: когда денег на счету 0 и при вводе любой суммы пишет что нет таких денег и все. Все равно спасибо.

PS Все таки я попытаюсь разобраться с файлами в Паскале. Хорошо что это задание на след. семестр
WTF
на будущее - забудь про GOTO
CORS@R
Объясните мне почему вам не нравится GOTO. blink.gif
volvo
Ищи по форуму, на эту тему уже были обсуждения...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.