→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Програма неработает.Подскажите почему? 
Автор Сообщение
Начинающий

Регистрация: 06.05.2010
Сообщения: 3
Языки:

Репутация: 0 [ ? ]
Сообщение Програма неработает.Подскажите почему?
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

#define MAXD 25 //Њ ЄбЁ¬ «м­ п ¤«Ё­  б«®ў ў б«®ў аҐ
#define ASKWORD ' ' //‘Ё¬ў®« ¤«п бЇа иЁў ­Ёп б«®ў 
#define Y 8 //Љ®®а¤Ё­ в  ЁЈа®ў®© бва®ЄЁ Ї® ўҐавЁЄ «Ё
#define N 100 //„«Ё­  бЇЁбЄ®ў "ЎҐ«ле" Ё "зҐа­ле" б«®ў
#define MAXLOSS 50 //ђ §¬Ґа ¬ ббЁў  б Їа®ЁЈали­л¬Ё б«®ў ¬Ё
#define LEFT 75 //Љ®¤ Є« ўЁиЁ Left
#define RIGHT 77 //Љ®¤ Є« ўЁиЁ Right
#define ESC 27 //Љ®¤ Є« ўЁиЁ Escape

FILE *words;
int x; //Љ®®а¤Ё­ вл Єгаб®а 
int kurs;
char losswords[MAXLOSS][MAXD]; //‘ЇЁб®Є Їа®ЁЈали­ле б«®ў
int numberofloss = 0; //—Ёб«® Їа®ЁЈал襩

int wordsofblack(char st[MAXD], char simbols[MAXD], int n_black, char black[N][MAXD]);
int getsim(char st[MAXD]);
void putsim(char sim, int place, char st[MAXD]);
int testword(char st[MAXD]);
int think(char st[MAXD]);
void writeword(char st[]);
void addtoloss(char st[]);


int main(void){
char st[MAXD];
char myst[MAXD];
int key;
int man=0, computer=0; //‘зҐв

if ((words=fopen("words.txt", "a+")) ==NULL){
perror("ЋиЁЎЄ  ®вЄалвЁп д ©« ");
return(0);
}
randomize();
do{
st[0]='\0'; //‘­ з «® бва®Є  Їгбв п
x=40;
kurs=1; //‘­ з «® Єгаб®а бЇа ў 
clrscr();
printf(" —Ґ«®ўҐЄ");
gotoxy(71,1);
printf("Љ®¬ЇмовҐа");
gotoxy(5,2);
printf("%d",man);
gotoxy(75,2);
printf("%d",computer);
gotoxy(17,25);
printf("…б«Ё е®вЁвҐ бЇа®бЁвм б«®ў®, ­ ¦¬ЁвҐ ­  ЏђЋЃ…‹");
gotoxy(x,Y);
while(1){ //–ЁЄ« § Є®­зЁвбп, в®«мЄ® Є®Ј¤  Єв®-в® Їа®ЁЈа Ґв
key=getsim(st);
if(key==1){ //‘зЁвлў Ґв Ї®«гзЁўиЁ©бп Ї®б«Ґ ¤®Ў ў«Ґ­Ёп
//ЎгЄўл ­ Ў®а бЁ¬ў®«®ў Ё ўлў®¤Ёв ҐЈ® ­  нЄа ­
//…б«Ё 1, в® Ї®«м§®ў. бЇа иЁў Ґв б«®ў®
writeword(st); //Џ®Є §лў Ґ¬ Ґ¬г б«®ў®
printf("\n‚л Їа®ЁЈа «Ё!");
computer++;
break;
}
if(key==2) //Џ®«м§®ў вҐ«м е®зҐв г©вЁ
return(0);
//Џа®ўҐа塞, ­Ґ § Є®­зЁ« «Ё ЁЈа®Є б«®ў®
if(testword(st)){
printf("\n‚л § Є®­зЁ«Ё б«®ў® Ё Їа®ЁЈа «Ё!");
computer++;
break;
}
//„г¬ Ґ¬ ­ ¤ 室®¬
if(think(st)){
printf("\n‘¤ обм :( Љ Є®Ґ б«®ў® ўл § Ј ¤ «Ё?\n");
gets(myst);
if (strstr(myst,st)!=NULL){ //‚ б«®ўҐ Ґбвм ⥪гйЁҐ бЁ¬ў®«л
if(testword(myst)){
printf("\nЏаЁ§­ о, п Їа®ЁЈа «...");
man++;
}
else{
printf("\nќв®Ј® б«®ў  ­Ґв ў б«®ў аҐ!");
printf("\n„®Ў ўЁвм ў б«®ў ам? (1-¤ , 0-­Ґв)");
if(getch()==49){
man++;
myst[strlen(myst)+1]='\0';
myst[strlen(myst)]='\n';
if(fputs(myst,words)!=EOF)
printf("\n‘«®ў® ў­ҐбҐ­® ў б«®ў ам");
else
printf("\nЋиЁЎЄ ! ‘«®ў® ­Ґ ў­ҐбҐ­® ў б«®ў ам");
}
}
}
else{
printf("\n‚ б«®ўҐ, Є®в®а®Ґ ‚л ўўҐ«Ё ­Ґв нвЁе ЎгЄў");
computer++;
}
break;
}
else{
if (testword(st)){
printf("\nџ Їа®ЁЈа «...");
man++;
addtoloss(st);
break;
}
}
}
printf("\n„«п Їа®¤®«¦Ґ­Ёп ­ ¦¬ЁвҐ «оЎго Є« ўЁиг. ‚л室 - Esc");
key=getch();
}while(key!=ESC);
return(0);
}

/*************************************
ђҐ «Ё§ жЁп дг­ЄжЁ©
*************************************/

//‘зЁвлў ­ЁҐ бЁ¬ў®«  б Є« ўЁ вгал
int getsim(char st[MAXD]){
int sim;
char simst[2];
int i;
//†¤Ґ¬ агббЄ®© ЎгЄўл
while(1){
sim=getch();
gotoxy(1,Y-2);
clreol();
gotoxy(x,Y);
if((sim>=160 && sim<=175) || (sim>=224 && sim<=239)) //…б«Ё агб. ЎгЄў 
break;
if(sim==ASKWORD) //…б«Ё ЁЈа®Є е®зҐв бЇа®бЁвм б«®ў®
return(1);
if(sim==ESC) //…б«Ё е®зҐв г©вЁ
return(2);
//ЋЎа Ў влў Ґ¬ Є« ўЁиЁ Єгаб®а 
if(sim==0){
sim=getch();
if(sim==LEFT && kurs!=0){
kurs=0;
x-=strlen(st)+1;
gotoxy(x,Y);
}
if(sim==RIGHT && kurs!=1){
kurs=1;
x+=strlen(st)+1;
gotoxy(x,Y);
}
}
else{
gotoxy(20,Y-2);
textcolor(12);
cprintf("‚ўҐ¤Ґ­­л© бЁ¬ў®« ­Ґ пў«пҐвбп агббЄ®© ЎгЄў®©");
textcolor(15);
lowvideo();
gotoxy(x,Y);
}
}
//Џ®Є §лў Ґ¬ нв®в бЁ¬ў®«
simst[0]=sim;
simst[1]='\0';
highvideo();
cprintf(simst);
lowvideo();
//‘в ўЁ¬ Єгаб®а бЇа ў 
if(!kurs)
x+=strlen(st)+1;
else x++;
gotoxy(x,Y);
//?§¬Ґ­пҐ¬ ўе®¤­го бва®Єг
if(kurs){ //…б«Ё ЎгЄў  Ї®б«Ґ¤­пп
st[strlen(st)+1]='\0';
st[strlen(st)]=sim;
}
else{ //…б«Ё ЎгЄў  ЇҐаў п
for(i=strlen(st); i>=0; i--)
st[i+1]=st[i];
st[0]=sim;
}
kurs=1;
return(0);
}

//‚лў®¤Ё¬ 室 Їа®Ја ¬¬л
void putsim(char sim, int place, char st[MAXD]){
int i;
char simst[2];
if(place){
simst[0]=sim;
simst[1]='\0';
highvideo();
cprintf(simst);
lowvideo();
x++;
gotoxy(x,Y);
st[strlen(st)+1]='\0';
st[strlen(st)]=sim;
}
else{
gotoxy(x-strlen(st)-1,Y);
simst[0]=sim;
simst[1]='\0';
highvideo();
cprintf(simst);
lowvideo();
gotoxy(x,Y);
for(i=strlen(st); i>=0; i--)
st[i+1]=st[i];
st[0]=sim;
}
}

//Џ®Є §лў Ґ¬ Ї® вॡ®ў ­Ёо ЁЈа®Є  б«®ў  б ¤ ­­л¬Ё бЁ¬ў®« ¬Ё
void writeword(char st[]){
int i=0;
char temp[MAXD];
printf("\n\n‚®§¬®¦­лҐ б«®ў :\n");
fseek(words, 0, 0);
while (i<10 && fgets(temp, MAXD, words)!=NULL){
if(strstr(temp, st)!=NULL){
printf("%s",temp);
i++;
}
}
}

//‘зЁв Ґв зЁб«® б«®ў Ё§ зҐа­®Ј® бЇЁбЄ ,
//Є®в®алҐ ¬®¦­® Ї®«гзЁвм ¤«п ¤ ­­®Ј® б«®ў 
//simbols Ё ­ Ў®а  ЎгЄў st
int wordsofblack(char st[MAXD], char simbols[MAXD], int n_black, char black[N][MAXD]){
int i, all1=0, all2=0, inloss;
char temp1 [MAXD], temp2 [MAXD];
if(strstr(simbols,st)-simbols!=0){ //…б«Ё Ґбвм ЇаҐ¤л¤. бЁ¬ў®«
strcpy(temp1, st);
for(i=strlen(temp1); i>=0; i--)
temp1[i+1]=temp1[i];
temp1[0]=*(strstr(simbols,st)-1);
inloss=0;
for (i=0; i<numberofloss; i++){
if (strstr(losswords[i],temp1)!=NULL){
inloss=1;
break;
}
}
if (inloss)
all1=n_black+1; //ЌҐ ¦Ґ« вҐ«м­® ЁбЇ®«м§®ў вм
else{
for (i=0; i<n_black; i++){
if(strstr(black[i],temp1)!=NULL){
if(strlen(temp1)==strlen(black[i])) //ЃгЄў  Їа®ЁЈали­ п
all1=n_black+1; //ЌҐ ¦Ґ« вҐ«м­® ЁбЇ®«м§®ў вм
else all1++;
}
}
}
}
else //ЏаҐ¤л¤. бЁ¬ў®«  ­Ґв. ?бЇ®«м§®ў. ­Ґ«м§п!
all1=n_black+2;
if(strstr(simbols,st)-simbols+strlen(st)!=strlen(simbols)){ //…б«Ё Ґбвм Ї®б«Ґ¤гой. ЎгЄў 
strcpy(temp2, st);
temp2[strlen(temp2)+1]='\0';
temp2[strlen(temp2)]=*(strstr(simbols,st)+strlen(st));
inloss=0;
for (i=0; i<numberofloss; i++){
if (strstr(losswords[i],temp2)!=NULL){
inloss=1;
break;
}
}
if (inloss)
all2=n_black+1; //ЌҐ ¦Ґ« вҐ«м­® ЁбЇ®«м§®ў вм
else{
for (i=0; i<n_black; i++){
if(strstr(black[i],temp2)!=NULL){
if(strlen(temp2)==strlen(black[i])) //ЃгЄў  Їа®ЁЈали­ п
all2=n_black+1; //ЌҐ ¦Ґ« вҐ«м­® ЁбЇ®«м§®ў вм
else all2++;
}
}
}
}
else //‘«Ґ¤. ЎгЄўл ­Ґв. ?бЇ®«м§®ў вм ­Ґ«м§п!
all2=n_black+2;
if (all1<all2){
strcpy(simbols,temp1);
return(all1);
}
else{
strcpy(simbols,temp2);
return(all2);
}
}

//Џа®ўҐапҐв, пў«пҐвбп «Ё ­ Ў®а бЁ¬ў®«®ў б«®ў®¬ Ё§ б«®ў ап
//…б«Ё пў«пҐвбп, ў®§ўа й Ґв 1, Ґб«Ё ­Ґв -- 0
int testword(char st[MAXD]){
int dlina;
char temp[MAXD];

dlina=strlen(st);
fseek(words, 0, 0);
while (fgets(temp, MAXD, words)!=NULL)
if(strstr(temp, st)!=NULL && dlina==strlen(temp)-1)
return(1);
return(0);
}

//„г¬ Ґв ­ ¤ 室®¬
int think(char st[MAXD]){
char black[N][MAXD], //ЏаЁ ЁбЇ®«м§®ў ­ЁЁ б«®ў Ё§ нв®Ј® бЇЁбЄ  Їа®ЁЈ.
white[N][MAXD]; //‚лЁЈали­лҐ б«®ў 
int n_black=0, n_white=0, dlina=strlen(st);
char temp[MAXD], minbuk[MAXD];
int i, chislo,min,rnom,ngood;

//ђ бЄ« ¤лў Ґ¬ б«®ў  Ї® бЇЁбЄ ¬
fseek(words, 0, 0);
while (fgets(temp, MAXD, words)!=NULL){
if(strstr(temp, st)!=NULL){ //…б«Ё Ё§ ЎгЄў Ї®«гз. б«®ў®
temp[strlen(temp)-1]='\0'; //“ЎЁа Ґ¬ бЁ¬ў®« ЇҐаҐў®¤  бва®ЄЁ
if((strlen(temp)-dlina)%2!=0 && n_black<100){ //Џа®ЁЈали­®Ґ б«®ў®
strcpy(black[n_black], temp);
n_black++;
}
if((strlen(temp)-dlina)%2==0 && n_white<100){
strcpy(white[n_white], temp);
n_white++;
}
}
}

//ЋЎа Ў влў Ґ¬ бЇЁбЄЁ б«®ў
if(n_white==0 && n_black==0)
return(1); //‘Їа иЁў Ґ¬ б«®ў®

if(n_black==0){
//ЏЁиҐ¬ ЎгЄўг Ё§ Їа®Ё§ў®«м­®Ј® б«®ў  ў ЎҐ«®¬ бЇЁбЄҐ
rnom=random(n_white);
if(white[rnom]-strstr(white[rnom],st)==0)
putsim(white[rnom][strlen(st)],1,st);
else
putsim(*(strstr(white[rnom],st)-1),0,st);
}

if(n_white==0){
//‘Є®«мЄ® б«®ў Ё§ зҐа­®Ј® бЇЁбЄ , б Є®в®ал¬ ®бв ­Ґвбп ¬Ё­. зЁб«® б«®ў
//¤«п Їа®вЁў­ЁЄ 
strcpy(minbuk,black[0]);
min=wordsofblack(st,minbuk,n_black,black);
ngood=1;
for(i=1; i<n_black; i++){
strcpy(temp,black[i]);
chislo=wordsofblack(st,temp,n_black,black);
if(chislo<min){
min=chislo;
strcpy(minbuk,temp);
ngood=0;
}
if(chislo==min)
ngood++;
}
rnom=random(ngood);
ngood=-1;
for(i=0; ; i++){
strcpy(minbuk,black[i]);
chislo=wordsofblack(st,minbuk,n_black,black);
if(chislo==min){
ngood++;
if(ngood==rnom)
break;
}
}
if(minbuk-strstr(minbuk,st)==0)
putsim(minbuk[strlen(minbuk)-1],1,st);
else
putsim(minbuk[0],0,st);
}

if(n_white!=0 && n_black!=0){
//?饬 б«®ў  Ё§ ЎҐ«®Ј® бЇЁбЄ , зв®Ўл Ё¬ ᮮ⢥вбвў®ў «®
//¬Ё­. зЁб«® б«®ў Ё§ зҐа­®Ј® Ё Ї®бв ў«Ґ­­ п ЎгЄў  ­Ґ § Є ­зЁў «  б«®ў®
//‘зЁв Ґ¬ зЁб«® нвЁе б«®ў
strcpy(minbuk,white[0]);
min=wordsofblack(st,minbuk,n_black,black);
ngood=1;
for(i=1; i<n_white; i++){
strcpy(temp,white[i]);
chislo=wordsofblack(st,temp,n_black,black);
if (chislo<min){
min=chislo;
strcpy(minbuk,temp);
ngood=0; //0, в.Є. ў б«Ґ¤. if ®­ 㢥«Ёз. ­  1
}
if(chislo==min)
ngood++;
}
rnom=random(ngood);
ngood=-1;
for(i=0; ;i++){
strcpy(minbuk,white[i]);
chislo=wordsofblack(st,minbuk,n_black,black);
if(chislo==min){
ngood++;
if(ngood==rnom)
break;
}
}
if(minbuk-strstr(minbuk,st)==0)
putsim(minbuk[strlen(minbuk)-1],1,st);
else
putsim(minbuk[0],0,st);
}
return(0);
}

void addtoloss(char st[MAXD]){
int i;
if (numberofloss+1 < MAXLOSS) //Њ®¦­® ҐйҐ ¤®Ў ў«пвм ў Є®­Ґж бЇЁбЄ 
strcpy(losswords[numberofloss++], st);
else{ //“¤ «пҐ¬ ЇҐаў®Ґ ¤®Ў ў«Ґ­­®Ґ б«®ў® Ё б¤ўЁЈ Ґ¬ ¬ ббЁў
for(i=1; i < MAXLOSS; i++)
strcpy(losswords[i-1], losswords[i]);
strcpy(losswords[MAXLOSS-1], st);
}
}


01.06.2010 22:34
Профиль Отправить email
Профи
Аватара пользователя

Регистрация: 25.12.2009
Сообщения: 110
Языки:
Специальность:

Репутация: 8 [ ? ]
Сообщение Re: Програма неработает.Подскажите почему?
Подсказываю: писали бы вы ее сами - работала бы.

_________________
Правильно заданный вопрос - половина ответа!


17.06.2010 10:09
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»