» Poradna » Programy

Program v C - Kde je chyba?

 |   |  Microsoft Windows 7 Opera 9.80  |  [194.213.60.---]

Dobrý den, napsal jsem následující program. Je to betaverze, ve výsledku to má fungovat podobně, jako hra šibenice. Tedy že jeden hráč zadá slovo a druhý jej bude po písmeně hádat s omezeným počtem pokusů. V současné fázi by měl program fungovat tak, že by měl vyzvat hráče 1, aby zadal slovo, dále příjde výpis hvězdiček, aby bylo vidět počet písmen a potom by měl mít hráč 2 jeden pokus na uhádnutí písmene. Pak se má program zastavit a vypsat na obrazovku tuto hvězd. kopii s jiš nahrazenými uhádnutými znaky. Bohužel, i když znak uhádnu, tak se vypíší zase jenom hvězdičky. V čem je prosím problém? Díky.#include <cstdlib>#include <iostream>#include <conio.h>#include <stdio.h>#include <math.h>using namespace std;int main(int argc, char *argv[]){ char slovo[12], kopie[12], pismeno; printf ("Hra Sibenice \n"); printf ("============ \n"); printf ("Pripravi se hrac 1. \n"); system("PAUSE"); printf ("Zadejte slovo. \n"); cin.get (slovo,12); strcpy(kopie,slovo); kopie[strlen(slovo)]='\0'; for (int i=0;i<strlen(slovo); ++i) kopie[i]='*'; system("CLS"); system("PAUSE"); printf ("%s\n",kopie); printf ("Připraví se druhy hrac. \n"); printf ("Zadejte pismeno. \n"); cin.get (pismeno); for (int j=0;j<strlen(slovo); ++j) if (pismeno=slovo[j]) pismeno=kopie[j]; system("PAUSE"); printf ("%s\n",kopie); system("PAUSE"); return EXIT_SUCCESS;

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 23.0.1271.97  |  [109.80.64.---]

Chybne je posledni podminkaif (pismeno=slovo[j]) pismeno=kopie[j];pri porovnavani se pouziva == a ne =, to je prirazeni.Spatne je i nasledne prirazeni, pokud je podminka splnena - prirazujes hvezdicku, ktera je v kopii do promenne pismeno, melo by to byt samozrejme naopak - kopie[j] = pismeno.Navic zkopirovani vlozeneho slova do promenne kopie:strcpy(kopie,slovo);je tam zbytecne, stejne to pak prepises o par radku niz hvezdickama

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Opera 9.80  |  [194.213.60.---]

Díky, toho jsem si měl všimnout...Upravil jsem tedy program podle vašich rad. Bohužel pořád reaguje stejně. Nenůže tu být ještě něco dalšího?#include <cstdlib>#include <iostream>#include <conio.h>#include <stdio.h>#include <math.h>using namespace std;int main(int argc, char *argv[]){ char slovo[12], kopie[12], pismeno; printf ("Hra Sibenice \n"); printf ("============ \n"); printf ("Pripravi se hrac 1. \n"); system("PAUSE"); printf ("Zadejte slovo. \n"); cin.get (slovo,12); kopie[strlen(slovo)]='\0'; for (int i=0;i<strlen(slovo); ++i) kopie[i]='*'; system("CLS"); system("PAUSE"); printf ("%s\n",kopie); printf ("Připraví se druhy hrac. \n"); printf ("Zadejte pismeno. \n"); cin.get (pismeno); for (int j=0;j<strlen(slovo); ++j) if (pismeno==slovo[j]) kopie[j]=pismeno; system("PAUSE"); printf ("%s\n",kopie); system("PAUSE"); return EXIT_SUCCESS;}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 23.0.1271.97

nefunguje to proto, ze Vam zustava konec radku na standardnim vstupu, takze cin.get(pismeno) nacte znak LF(\n). resit by to mohl cin.sync() pred cin.get(pismeno).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 23.0.1271.97

nefunguje to proto, ze Vam zustava konec radku na standardnim vstupu, takze cin.get(pismeno) nacte znak LF(\n). resit by to mohl cin.sync() pred cin.get(pismeno).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 17.0  |  [88.102.242.---]

Mohu se zeptat proč do C programu motáte C++?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Opera 9.80  |  [194.213.60.---]

Ve vývojovém prostředí Def-C++ jsem vytvořil C++ projekt, ale píšu v jazyce C. Bylo mi to doporučeno.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Firefox 17.0

Tohle ale není jazyk C, to je mix C a C++. Ve výsledku vytvoříte jen zabugovaného kočkopsa.#include <cstdlib> -- tohle je C++#include <iostream> -- tohle je C++using namespace std -- tohle je C++cin.get (slovo,12) => scanf("%[12]s", slovo) (nejsem si jistý)cin.get (pismeno) => pismeno=getchar()

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Betaverze, Slovo, #include



Určitě si přečtěte


Aktuální číslo časopisu Computer

Test 6 odolných telefonů a 22 powerbank

Srovnání technologií QLED a OLED

Měřte své sportovní výkony

Sady pro chytrou domácnost