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

Pomoc s funkcí – C / C++ – Fórum – Programujte.comPomoc s funkcí – C / C++ – Fórum – Programujte.com

 

Crlda
~ Anonymní uživatel
7 příspěvků
2. 3. 2009   #1
-
0
-

Zdravím lidi, mám následující problém. Mám funkci a v ní "prázdnou" smyčku. Ale vždy, když má dojít k její spuštění, program se prostě zasekne a nic se neděje ... Už si s tím vůbec nevím rady ... :smile10:



void MakeTable(char heslo[])
{
char delka_hesla = strlen(heslo);
char new_size = 0;
char akt_znak = 0;
bool flag = 0;

// Nakopíruje znaky z 'hesla' do 'Table' bez opakujících se znaků:

//Postupně projede 'Table' (pouze bunky do velikosti hesla)
for(char a = 0; a < delka_hesla; a++)
{
//Postupně projede předcházející znaky v tabulce,
//a zjistí jestli další přidávaný znakjiž není obsažen
for(char j = 0; j<a; j++)
{
// Pokud ano, skočí na další znak v hesle a znovu porovnává
// s již zapsanými znaky do proměnné 'Table'
if(Table[j] == heslo[akt_znak])
{
akt_znak++;
// Pokud, ale další index již přesahuje proměnnou, vyskočí ven
// (již nezbývají další znaky k zapsání)
if(akt_znak >= delka_hesla-1)
{
flag=1;
break;
}

j=-1; // Zajistí nové opakování smyčky
}//if

}//for

if(flag) break; // Vyskočí, pokud již není další znak k dispozici

Table[a] = heslo[akt_znak];
new_size++; // přičte 1 k délce proměnné 'Table'
akt_znak++;
}//for(basic)

for(char a = new_size; b < 256; b++)
{
// Smyška, která zajišťuje pád programu
}


ofstream write("soubor.txt");
write << Table;
write.close();
}

Nahlásit jako SPAM
IP: 91.187.60.–
KIIV
~ Moderátor
+43
God of flame
2. 3. 2009   #2
-
0
-

a kde mas nadefinovany to b?

krom toho jak si muzes byt jist ze skonci i ten prvni cyklus?

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Crlda
~ Anonymní uživatel
7 příspěvků
2. 3. 2009   #3
-
0
-

Jo sakra, pardon místo b tam má být samozřejmě a ...
No pokud tuto podmínku umažu, všechno se vykoná napsrosto správně ...

Nahlásit jako SPAM
IP: 91.187.60.–
KIIV
~ Moderátor
+43
God of flame
2. 3. 2009   #4
-
0
-

To Crlda : no tim kdyz tam ma byt a ...
tak vime ze typ char je 8b cislo se znamenkem... tj 7bitu mas na samotne cislo.. rozsah je od -128 do 127...
no a ty kdyz pricitas tak jdes:

 0 1 2 ....  127 -128 -127 ... -1 0 1 ... 127 -128 ... 

ono ani kdyby si mel bez znamenka tak mas
 0 .. 255   tj    0 1 ... 254 255 0 ....


a ty se snazis dosahnout 256

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Crlda
~ Anonymní uživatel
7 příspěvků
2. 3. 2009   #5
-
0
-

To KIIV : No pokud zadám proměnnou typu char, tak by se měla implicitně zadat jako unsigned char ne ? Teda aspoň mě to tak vždy fungovalo ... No podmínku mám a < 256, takže až 255 ... Pokud tam bude 256, podmínka již bude nepravdivá ...

Nahlásit jako SPAM
IP: 91.187.60.–
KIIV
~ Moderátor
+43
God of flame
2. 3. 2009   #6
-
0
-

Crlda napsal:
To KIIV : No pokud zadám proměnnou typu char, tak by se měla implicitně zadat jako unsigned char ne ? Teda aspoň mě to tak vždy fungovalo ... No podmínku mám a < 256, takže až 255 ... Pokud tam bude 256, podmínka již bude nepravdivá ...



no a kdy konci cyklus for ? kdyz je podminka nepravdiva a ty tam donekonecna jedes -128 az 127
a i kdyby si dal unsigned char tak se v zivote nemuze stat ze dostanes v 8bitovem cisle tuto hodnotu: 1 0000 0000 (256) protoze at pocitas jak pocitas ta jednotka tj. 9. bit se vzdy oreze tudiz 1111 1111 (255) -> 0000 0000 (0) a muzes vesele pricitat dale

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Crlda
~ Anonymní uživatel
7 příspěvků
2. 3. 2009   #7
-
0
-

To KIIV : :-D tak tohle jsem si vůbec neuvědomil, děkuji za radu, už to funguje jak má

Nahlásit jako SPAM
IP: 91.187.60.–
KIIV
~ Moderátor
+43
God of flame
2. 3. 2009   #8
-
0
-

To Crlda : tak vis co ... delam casto s jednocipama a tam jeste casteji pouzivam jen 8b hodnoty :D a takovyhle opomenuti se clovek rychle odnauci

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
joe
~ Anonymní uživatel
62 příspěvků
3. 3. 2009   #9
-
0
-

Je nějaký důvod proč to máš všechno jako char? Přidělávaš si komplikace, jejichž řešením sice můžeš získat cenné zkušenosti, ale jinak si jen přiděláváš vrásky :smile1: (A nic tím neušetříš ani nezrychlíš, dokonce spíš naopak.)

Nahlásit jako SPAM
IP: 213.211.51.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
3. 3. 2009   #10
-
0
-

To joe : Nějak podvědomě jsem to použil, protože char je velká jen 1B oproti jiným. :smile14: A dále tyto proměnné používám při zápisu do souboru - kdy se zapíšou jako byte a ne jako číslo (např. při int ...).
Ale po poravdě, jak je to s tou rychlostí netuším, to se klidně nechám poučit :smile1:

A jenom tak mimochodem, kdyby to někoho nakonec zajímalo, Visual C++ 2008 Express opravdu implicitně definuje char jako signed char. Ačkoliv ostatní programy mi to bralo jako unsigned char :smile14:

Nahlásit jako SPAM
IP: 91.187.60.–
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, 7 hostů

Moderátoři diskuze

 

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