» Poradna » Programy

Program v C - Kde je chyba?

 |   |  Microsoft Windows 7 Opera 9.80

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

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

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

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

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Opera 9.80

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

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

** Dlouho se nevědělo, co to přesně má být ** Pak se s krabičkou Google pochlubil na I/O ** Do „Chromecastu“ vtěsnal celý Android TV

Jakub Čížek | 24

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

** Čeští vědci pod vedením Tomáše Jungwirtha vyvíjí nový typ revolučního paměťového čipu ** Zatímco v současnosti elektronika pracuje s elektrony, v budoucnu to budou spiny elektronů ** Čipy budou moci být klidně i 1 000x rychlejší a úspornější

Karel Javůrek | 32

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

** Microsoft představil nový tablet Surface Go ** Nový model zaujme nízkou cenou, ale schopnostmi zařízení Surface ** Microsoft nepoužil čip ARM, ale klasický procesor od Intelu 

Karel Javůrek | 116

Takhle zemřete, když asteroid dopadne na vaše město

Takhle zemřete, když asteroid dopadne na vaše město

** Jak by to dopadlo, kdyby na světovou metropoli či do nedalekého moře dopadl velký asteroid? ** Simulovali to odborníci z University of Southampton ** Výsledky jsou velmi zajímavé

Petr Kubala | 32

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 65

Alan Turing: Genius, který matematicky stvořil počítač

Alan Turing: Genius, který matematicky stvořil počítač

Řešením matematického problému se dostal k modelu teoretického stroje, který nese jeho jméno a je základem logiky univerzálních počítačů.

Pavel Tronner | 57

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

** Apple večer představil novinky ** Ukáže nové operační systémy, ale čekala se i nová zařízení ** Začíná vývojářská konference Applu WWDC 2018

Karel Javůrek | 87


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji