Am de facut o problema care simuleaza jocul de spanzuratoarea
cerinta suna cam asa
Input: un fisier care sa contina x cuvinte, x nu va fi in fisier si numarul maxim de incercari pe care il acceptati pana la terminarea jocului.
Alegeti random un cuvant, de la tastatura introduceti cate un caracter, daca acel caracter nu se afla in cuvant se va afisa un mesaj corespunzator, in caz contrar cuvantul obtinut dupa completarea caracterului.
problema functioneaza aproximativ...adica daca introduc o litera de la tastatura o sa imi arate ceva de genul
Tasteaza litera care crezi ca se afla in cuvant: a
m o _ _ o
Tasteaza litera care crezi ca se afla in cuvant:
Litera aceasta nu se afla in cuvant
m o _ _ o
Tasteaza litera care crezi ca se afla in cuvant:
Cand spune a doua oara "Tasteaza litera care crezi ca se afla in cuvant:" pur si simplu programul sare de parca am introdus un enter sau altceva,dar a treia oara "Tasteaza litera care crezi ca se afla in cuvant:" merge si se tot repeta pana se termina numarul de greseli sau pana gasesc cuvantul....O sa postez codul
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *f;
int main()
{
char s[25],copie[25],litera;
int x,nr=0,i,aux=0,ok,gasit_odata,nrgreseli;
f=fopen("fisier.txt","r");
//testam fisierul daca e vid
if(f!=NULL)
printf("Fisier deschis cu succes");
else printf("Fisierul nu s-a deschis cu succes");
//Gasim numarul de gresi permise
while(fgets(s,25,f)!=NULL)
nr++;
int y=atoi(s);
nrgreseli=y;
printf("\n Numarul greseli maxime este %d",nrgreseli);
fclose(f);
//generam random un x care va fi cuvantul de ghicit
x=rand()%(nr-1);
//gasim cuvantul x in fisier
f=fopen("fisier.txt","r");
aux=1;
while(fgets(s,25,f)!=NULL)
{
if(aux==x)
break;
else
aux++;
}
//Creem copia cuvantului pentru apartii
for(i=0;i<strlen(s)-1;i++)
copie[i]=s[i];
//Printez pe ecran cuvantul in faza originala
aux=0;
printf("\n");
for(i=0;i<strlen(s)-1;i++)
{
if(i==0)
{
printf(" %c",s[i]);
copie[i]='0';
aux++;
}
else
if(i==strlen(s)-2)
{
printf(" %c",s[strlen(s)-2]);
copie[i]='0';
aux++;
}
else
if(s[i]==s[0] || s[i]==s[strlen(s)-2])
{
printf(" %c",s[i]);
copie[i]='0';
aux++;
}
else
printf(" _ ");
}
// Programul de introducere a literelor
while(aux<=strlen(s)-2 && nrgreseli>0)
{
printf("\n Tasteaza litera care crezi ca se afla in cuvant: ");
scanf("%c",&litera);
ok=0;
gasit_odata=0;
for(i=0;i<strlen(s)-1;i++)
{
if(aux<=strlen(s)-2 && nrgreseli>0 && litera==s[i] && copie[i]!='0')
{
copie[i]='0';
aux++;
ok=1;
}
if(aux<=strlen(s)-2 && nrgreseli>0 && litera==s[i] && copie[i]=='0')
gasit_odata=1;
}
if(ok==1)
printf("\n Felicitari ai gasit o litera ce apartine cuvantului");
else
{
printf("\n Litera aceasta nu se afla in cuvant ");
nrgreseli--;
}
if(gasit_odata==1)
printf("\n Litera aceasta ai mai introduso odata sau se afla deja in cuvant");
printf("\n");
for(i=0;i<strlen(s)-1;i++)
if(copie[i]=='0')
printf(" %c",s[i]);
else
printf(" _ ");
}
if(nrgreseli>0)
printf("\n Felicitari ai gasit cuvantul");
else
printf("\n Imi pare rau dar ai prea multe incercari");
return 0;