Diskuze: Potrebujem pomôcť ZADANIE #2: HANGMAN
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Nahraješ si slovník do paměti, konkrétně vytvoříš pole řetězců. Zjistíš jak je toto pole velké. Vygeneruje náhodné číslo v rozsahu 0 až N-1. Vytvoriš dynamicky alokovane pole o velikosti délky řetězce na daném indexu. Nakopiruješ do něj slovo na daném indexu. To představuj hádané slovo. Vytvoříš další pole prázdné o stejné velikosti pro hadajícího. Necháš uživatele zadávat znaky. Pomocí cyklu budeš porovnávat znaky hádanek řetězce se zadaným znakem. V případě shody přiřadiš daný znak na pozici která se shoduje. Inkrementujes proměnnou vyjadřující počet uhodnutych znaků. To celé opakuješ dokud počet uhodnutých znaků nebude rovno počtu znaků hádanek řetězce. Hádaný řetězec vypisuje v každé iteraci před výzvou zadání nového znaku.
Rozbor předvytvořené funkce get_word(), kterou můžete používat..
int get_word(char secret[]){
// kontroluje pritomnost suboru so slovami
FILE *fp = fopen(WORDLIST_FILENAME, "rb");
if( fp == NULL ){
fprintf(stderr, "Subor sa nenasiel: %s\n", WORDLIST_FILENAME);
return 1;
}
// zisti velkost suboru
struct stat st;
stat(WORDLIST_FILENAME, &st);
long int size = st.st_size;
do{
// generuje nahodne cislo zo suboru
long int random = (rand() % size) + 1;
// nastavi na vygenerovanu poziciu
fseek(fp, random, SEEK_SET);
// ziska slovo zo suboru
int result = fscanf(fp, "%*s %20s", secret);
if( result != EOF )
break;
}while(1);
fclose(fp);
return 0;
}
Opravdu povedená funkce.
Zobrazeno 3 zpráv z 3.