Slovni fotbal – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Slovni fotbal – C / C++ – Fórum – Programujte.comSlovni fotbal – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
fotbal
~ Anonymní uživatel
2 příspěvky
3. 1. 2011   #1
-
0
-

Ahoj,

potřebovala bych pomoct s jedním programem. Dělám slovní fotbal, který už mám vytvořený. Teď chci dodělat, aby se ta zadaná slova kontrolovala z databáze, kterou jsem si vytvořila z pár slov. Tedy, program musí zkontrolovat, zda zadané slovo uživatelem je v databázi. Pokud tam není, pak to hodí hlášku a musí uživatel zadat nové slovo. Jen vůbec nevím, jak to udělat.

#include <stdio.h> 

#include <string.h>

int main(void)
{
char slovo_1[20], slovo_2[20];
char p1, p2, end;
int i, error = 0;
FILE *f;

printf("SLOVNI FOTBAL\n");
printf("Zadej pismeno, jimz bude hra zacinat: "); scanf("%c", &p2);
f = fopen("slova.txt","r");

do
{
printf("Hrac 1: Zadej slovo: ");
scanf("%s", slovo_1);

if (p2 != slovo_1[0])
{
printf("Slovo nezacina znakem '%c'\n", p2);
printf("Vitezem se stava hrac 2.\n");
error++;

printf("Pokracuj stiskem klavesy... ");
scanf("%i", &end);
return 1;
}

p1 = slovo_1[strlen(slovo_1) - 1];
printf("Hrac 2: Zadej slovo: ");
scanf("%s", slovo_2);

if (p1 != slovo_2[0])
{
printf("Slovo nezacina znakem '%c'\n", p1);
printf("Vitezem je hrac 1.\n");
error++;
printf("Pokracuj stiskem klavesy a ENTERem... ");
scanf("%i", &end);
return 1;
}

p2 = slovo_2[strlen(slovo_2) - 1];
} while (error <= 0);
fclose(f);

return 0;
}

Nahlásit jako SPAM
IP: 85.132.142.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
4. 1. 2011   #2
-
0
-

Tu databázi slov si vytvoříš jako pole řetězců. Kontrola pak probíhá tak, že procházíš toto pole a porovnáváš se zadaným slovem. Pokud ho najdeš, tak pokračuje hra, jinak vyzveš uživatele, aby znovu zadal (cyklus třeba s podmínkou na konci - podmínka se vztahuje k nalezení slova v databázi).

Nahlásit jako SPAM
IP: 195.189.143.–
liborb
~ Redaktor
+18
Guru
4. 1. 2011   #3
-
0
-

Tu databázi slov si vytvoříš jako pole řetězců. Kontrola pak probíhá tak, že procházíš toto pole a porovnáváš se zadaným slovem. Pokud ho najdeš, tak pokračuje hra, jinak vyzveš uživatele, aby znovu zadal (cyklus třeba s podmínkou na konci - podmínka se vztahuje k nalezení slova v databázi).

Nahlásit jako SPAM
IP: 195.189.143.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
4. 1. 2011   #4
-
0
-

Jojo, vytvořila jsem si databázi například s pěti slovy.. na zkoušku.. slova jsou dána pod sebou, tedy každé slovo na novém řádku.. přes jaký cyklus bys to dělal? For nebo Do?

Nahlásit jako SPAM
IP: 85.132.142.–
fotbal
~ Anonymní uživatel
2 příspěvky
13. 1. 2011   #5
-
0
-

Prosím vás, už mám ten kód, bohužel mám někde chybu, protože při kontrole ze souboru mi to hodí vždy, že slovo není ve slovníku :(

#include <stdio.h>

#include <stdlib.h>
#include <string.h>

int kontrola (char *slovo_s)
{
FILE *f;
f = fopen ("slova.txt", "r");
char slovo[256];

int i;
while (fgets (slovo, sizeof (slovo), f) != NULL)
{
int znak = 0;
for (i = 0; i < sizeof(slovo); i++)
{
if (slovo[i] == ';')
{
break;
}

znak++;
}

char slovo_t[znak];
for (i = 0; i < znak; i++)
{
slovo_t[i] = slovo[i];
}

if (strcmp (slovo_s, slovo_t) == 0)
{
fclose(f);
return 1;
}
}
fclose (f);
return 0;
}

int main (int argc, char** argv)
{
char slovo[50], zac[10];
char p;
int error = 0;

printf ("Slovni fotbal\n");
printf ("Zadej pismeno, jimz se bude zacinat:");
scanf ("%s", zac);

p = zac[0];

int hrac = 1;
do
{
printf ("Hrac %d: Zadej slovo:", hrac);
scanf ("%s", slovo);
if (p != slovo[0])
{
printf ("Slovo nezacina znakem '%c' \n.", p);
error++;
}
else if (kontrola (slovo) == 0)
{
printf ("Slovo neni ve slovniku.\n");
error++;
}

if (error > 0)
{
printf ("Vitezem je hrac %d.\n", hrac ? 2:1);
break;
}
else
{
p = slovo[strlen(slovo)-1];
if (hrac == 1)
{
hrac++;
}
else
{
hrac = 1;
}
}
} while (error <= 0);
return (EXIT_SUCCESS);
}

Nahlásit jako SPAM
IP: 178.20.140.–
joudaVelky
~ Anonymní uživatel
2 příspěvky
14. 1. 2011   #6
-
0
-

Zdar, jestlize ti to porad pise ze slovo neni ve slovniku, pak to znamena, ze ti blbe funguje funkce kontrola...
ja jsem to jen tak prolitnul, takze si jen tipnu....

Kouknul bych na pouzitou funkci strcmp...podle me se na vysledku podili i delka retezce... Nepamatuju si to presne a hledat jsem linej, ale myslim, ze kdyz mas jeden retezec delsi, tak to vraci cisla >0 nebo < 0... Zkus si to tam zastavit a podivat se, co ji davas za parametry a co ti vraci...Pokud delas v devcpp nebo v necem podobnym, kde nefunguje debugger, tak si ty parametry zkus vypsat tesne pred volanim te funkce. Myslim ze pak to bude jasnejsi.

Pokud to bude tenhle problem, tak resenim bude pred nactenim retezce pouzitou promennou (slovo_s atd. ) inicializovat memsetem na znak '0'. ktery asi funkce strcmp nemuze najit a proto jsou ruzne delky...

Udelej ty vypisy, ty reknou vic

Nahlásit jako SPAM
IP: 194.138.39.–
joudaVelky
~ Anonymní uživatel
2 příspěvky
14. 1. 2011   #7
-
0
-

inicializovat znakem '\0'

Nahlásit jako SPAM
IP: 194.138.39.–
lair
~ Anonymní uživatel
1 příspěvek
28. 4. 2011   #8
-
0
-

Vi prosim nekdo, v cem je v prispevku 13. 01. 2011 @ 13:26 chyba..? Snazil jsme se na to prijit, ale bohuzel neuspesne :(

Nahlásit jako SPAM
IP: 109.80.156.–
nervak0
Věrný člen
29. 4. 2011   #9
-
0
-

char slovo_t[znak+1];
hrac==1 ? 2:1

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 193 hostů

Podobná vlákna

Slovni fotbal po x-té — založil stoponozka

Slovní úloha — založil jerrysla

Slovní úloha — založil RocketBG

Slovní úloha — založil prasokure

Slovní úloha — založil Veronika

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý