Diskuze: Problém s polem
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Neregistrovaný

Zobrazeno 26 zpráv z 26.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
V té podmínce nepřiřazuješ nic do toho pole. Má tam být:
if(!strcmp("poloz", prikaz))
{
hodnoty[i] = 1;
}
Aby se konzole nezavřela zkus getchar();
nebo
system("pause");
Tak sem to tam napsal ale píše mi toto:
ko\muj_program2\main.c||In function 'main':|
ko\muj_program2\main.c|10|warning: format '%s' expects type 'char
', but argument 2 has type 'char ()[32]'|
ko\muj_program2\main.c|11|warning: implicit declaration of
function 'strcmp'|
ko\muj_program2\main.c|23|warning: control reaches end of
non-void function|
ko\muj_program2\main.c|13|warning: 'i' may be used uninitialized
in this function|
=== Build finished: 0 errors, 4 warnings === |
Jo, tohle vypadá opravdu divně, snad se na to Зайчик potom podívá. Tato sekce je spíše doplňková, pokud nemáš žádný pádný důvod programovat zrovna v C, navštiv sekci o modernějším jazyce C#, které se tu velmi věnujeme.
Zkus to takhle:
char slovo[50] = {'\0'};
gets(slovo);
Já už si nepamatuju jak to tam v Céčku přesně je, ale vím, že s tím stringem tam byly nějaké problémy. Díval jsem se na nějaké své programy v něm a se stringem tam pracuju takto.
No já se to chci naučit postupně nejdřív se naučit C poté C++ a
nakonec C#, a taky je tu problém že nemam Visual Studio, ale v budoucnosti
bych se chtěl věnovat programování jak 3D tak 2D her, zatím dělám jen v
Game Makeru, protože GML umim asi nejvíc, ale v tom dobrá 3D hra moc urobit
nejde ta 2D ještě jakžtakž , čiže co by ste mi doporučily, jaké jazyky k tomu budu potřebovat
umět atd. ?
Zatim umim totiž jen základy html a css. GML ovládám tak na "střední"
úrovni . A dříve sem se
též věnoval jazyku pawn
Cesta od jazyků nízké úrovně k vysokoúrovňovým není zrovna rozumná, protože si můžeš přenést chybné návyky. Raději bys měl začít s C#, Javou nebo Pythonem. Osobně se přimlouvám za Python, protože je pro začátečníka asi nejjednodušší a přitom toho umí opravdu hodně.
Přesně, to je úplná hloupost. Když jdeš do autoškoly, také si děláš řidičák na auto, neděláš si nejdříve na motorku, potom trojkolku a potom auto. C# není o nic složitější než C nebo C++, ty začátky tam jsou úplně stejné a možná ještě jednodušší.
nevím kde je přesně chyba vše jsem nečetl každopádně na pozastavení programu je system("pause"); nebo getch(); getchar(); a tak podobně myslím že už jsem to psal v nějakém článku za druhé vše co jsem tu napsal jsou jen příklady takže je možné že to nefunguje přesně jak myslíte alias if nepíšu tuším chlupaté závorky protože tam nemam jiný řetězec a podobně takže není třeba jej rozlišovat char warningy nejsou správně napsány a tak je vaše IDE bere jako warning funguje ale 100% správně to není můžete napsat proměnou samozdrejmě do funkce dále pokud mám pole prvni si vyplnim pole nulovou hodnoutou! pole[i] = 0; a dáme do cyklu pote ... porovnáme strcmp a misto nulové hodnoty napíšeme 1 není na tom nic divného stačí číst , neřešit kraviny , myslet a co je hlavni COPY PASTE je vám na prdlačku
Tak předně, příklad který nefunguje je pro každýho k ničemu. Vím že internet snese všechno ale lepší nepsat nic, než být za troubu. Ty jsi evidentně někdo, kdo čekal, že sklidí velkej obdiv, ale k tomu je potřeba odvést obdivuhodný výkon, a ne jen machrovat. U takto psaného kurzu se nedá předpokládat, že u něj profíci budou trávit delší čas než jedno kliknutí myši, které je pošle úplně jinam. Ti co tu zůstanou, pravděpodobně začínaj a pro takové je příklad nefunkční z jakéhokoli důvodu opravdu leda ke škodě.
v podmínce je použita proměná "i" ale není deklarována, proto se nic neděje a program vyhodí chybu. takže:
if(!strcmp("poloz", prikaz))
{
i = 0;
hodnoty[i] = 1;
}
vloží jedničku do buňky pole podle hodnoty i, v tomto případě do první, i = 1 do druhé i = 2 do třetí atd.
nebo
if(!strcmp("poloz", prikaz))
{
for(i = 0; i < 25; i++)
hodnoty[i] = 1;
}
tento cyklus for vloží 1 do všech polí řetězce.
omlouvám se autorovi za následující řádek, ale leckdo ho určitě
ocení
Začátečníkům doporučuji kurz na http://www.sallyx.org/sally/c/
Tak si nastuduj knížku a klidně napiš článek. A můj se smaže. Podle mě příklady na copy/ paste jsou k ničemu, když si to člověk ani nepřečte jak to funguje a hned scrolluje ke kódu. ^^
To jsi na tom vcelku dobře. Většina programátorů includuje knihovnu nebo framework a ani se do nich nepodívá.
Dám ti sem doplnený kód. Možno ti to pomôže pochopiť.
#include <stdio.h>
int main(void)
{
int hodnoty[25],i; // i představuje proměnnou pozice nějakého objektu
char prikaz[32]; // prikaz predstavuje reťazec
// najpr naplním pole hodnoty[25] jednotkami a nulami na základe zadaného reťazca
// poloz = 1 v poli, vpravo, vlavo, zdvihni (teda všetko okrem poloz) = 0 v poli
for (i = 0; i < 25; i++) {
printf("Zadej prikaz: ");
scanf("%s", &prikaz);
// strcmp() porovná dva reťazce, ak sú rovnaké vráti nulu
if(!strcmp("poloz", prikaz)) // ak vyhodnotenie podnienky je nula
{
hodnoty[i] = 1;
}
}
putch('\n'); // odriadkovanie
// a potom vykreslíme všechny "jedničky" z pole
for (i = 0; i < 25; i++) {
if(hodnoty[i] == 1)
printf("%d" , hodnoty[i]);
else
printf("0");
}
return 0;
}
Samozrejme by to išlo aj inakšie. Ja som vychádzal z pôvodného kódu.
Zobrazeno 26 zpráv z 26.