potřeboval bych pomoci s tímto jednoduchým programem. Je to jednoduše naprogramovaná hra "Oběšenec",
která má ale problém, který bych chtěl objasnit. Při zadání krátkého zadání (asi do 10 znaků) program vypíše
všechny pomlčky správně, ale při delším zadání za řetězec pomlček a mezer vypíše nějaké neznámé další znaky.
Oběšenec - exe soubor ke stažení.
Screeny - správné a chybné zobrazení.
Kód: Vybrat vše
char veta[60], x, tip[60], vet[60];
int i, pocet, j, pamet, por, tips[10], y, v;
printf("Napis zadani obesence(MAX 50 znaku): ");
gets(veta);
system("cls");
pocet = strlen(veta);
printf("Kdyz si budes chtit tipnout tajenku stiskni '1'\n\n");
for(i=0;i<pocet;i++){if(veta[i] >= 'A' && veta[i] <= 'Z')veta[i]+='a'-'A';
if(veta[i]==' '){vet[i]=' ';}
else{vet[i]='-';}
}
printf("%s\n", vet);
for(i=0;i<5;i++){y=0;por=0;
for(v=0;v<10;v++){tips[v]=0;}
printf("\n\nZadej tipovane pismeno: ");
scanf("%c", &x);getchar();
while(x=='1'){printf("Napis celou tajenku: ");
gets(tip);
for(v=0;v<pocet;v++){if(tip[v] >= 'A' && tip[v] <= 'Z')tip[v]+='a'-'A';}
por = strcmp(veta, tip);
if(por == 0){printf("Spravne");goto end;}
else{break;}
}
if(x<='Z' && x>='A')x+='a'-'A';
for(j=0;j<pocet;j++){if(veta[j]==x){tips[y]=j;
y++;}
}
if(y>0){printf("Trefa\n");i--;}
else{printf("Spatne (%d. chyba)", i+1);continue;}
for(j=0,y=0;j<pocet;j++){if(tips[y]==j){y++;vet[j]=x;continue;}
}
printf("%s", vet);
for(j=0;j<pocet;j++){if(vet[j]=='-'){por++;}}
if(por==0){break;}
}
if(i==5)printf("\n\nVsechny pokusy byly vycerpany, hra konci!");
end:
if(por==0 && i!=5){printf("\n\nJsi vyherce!");}
Za případné vyřešení problému a nějaké zlepšující nápady děkuji.