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

Форум программистов: 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 ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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