The C Programming Language - pomoc s příkladem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

The C Programming Language - pomoc s příkladem – C / C++ – Fórum – Programujte.comThe C Programming Language - pomoc s příkladem – C / C++ – Fórum – Programujte.com

 

Marty
~ Anonymní uživatel
42 příspěvků
30. 3. 2011   #1
-
0
-

Ahoj, nějak nevím, jak udělat příklad 13 z první kapitoly. Zde je zadání:

Write a program to print a histogram of the lengths of words in its input. It is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging.


Měly by se na to použít arrays, ale buď jsem je nepochopil, nebo prostě nevím, jak bych je tu použil. S vykreslením už nebude problém. Nežádám řešení, to bych si dokázal zjistit, ale byl bych rád, kdyby mě někdo nasměroval jak na to nebo jak tu ty arrays využít. Díky

Nahlásit jako SPAM
IP: 89.102.128.–
sputnikone+1
Věrný člen
30. 3. 2011   #2
-
0
-

To Marty : For cyklus nad polem, pro každou položku vypíšeš počet znaků shodný s jejím obsahem. Vertikální je trochu složitější, najdeš maximum a potom máš dva for cykly (od maxima k nule a druhý přímo nad polem)

Nahlásit jako SPAM
IP: 147.251.201.–
Marty
~ Anonymní uživatel
42 příspěvků
30. 3. 2011   #3
-
0
-

Ta první věta souvisí s vypsáním histogramu nebo postupem? Teprve začínam, takže se v tom zase tolik nevyznam.
Moje představa vypadá asi takhle:
1) Zjistit, jestli getchar() bere písmeno nebo jestli je mimo slovo.
2) Pokud začne slovo, připočítávat do předem určených "buněk" - 1, 2,... 30
3) Zjistit konec vstupu a vypsat histogram

U 2) bych asi měl použít ty arrays ne?

Nahlásit jako SPAM
IP: 89.102.128.–
sputnikone+1
Věrný člen
30. 3. 2011   #4
-
0
-

To Marty : To slovo načítáš jak? Klávesnice?

Nahlásit jako SPAM
IP: 147.251.201.–
Marty
~ Anonymní uživatel
42 příspěvků
30. 3. 2011   #5
-
0
-

Z klávesnice pomocí getchar(). Nic jinýho se v týhle části knihy zatim nepoužívá, takže bych měl použit tohle.

Nahlásit jako SPAM
IP: 89.102.128.–
sputnikone+1
Věrný člen
30. 3. 2011   #6
-
0
-

To Marty : Udržuješ si nějaký counter, při každém getcharu inkrementuješ. Jakmile ti přijde whitespace, inkrementuješ položku s indexem toho counteru. Vynuluješ counter a jedeš dál...

Nahlásit jako SPAM
IP: 147.251.201.–
Marty
~ Anonymní uživatel
42 příspěvků
2. 4. 2011   #7
-
0
-

Tak nakonec s tím počítáním nebyl takovej problém, jak jsem čekal. Teď mě ale trápí, jak udělat nějakej normální histogram... teda udělam to pomocí hvězdiček, akorát si to ještě musim promyslet. Moc díky za rady

Nahlásit jako SPAM
IP: 89.102.128.–
Marty
~ Anonymní uživatel
42 příspěvků
5. 4. 2011   #8
-
0
-

Nějak jsem se na tom zasekl. Vždycky, když chci vykreslit histogram, tak napíše u všech položek stejnej počet hvězdiček bez ohledu na input.

Tady je celej můj kód: (moc jsem ho nekomentoval, protože tam podle mě není co komentovat... tak snad to pochopíte)

#include <stdio.h>


int main()
{
int Length, i, c, done;
Length = done = 0;

int WordLength[11] = { 0 };
for (i = 0; i < 11; i++) {
WordLength[i] = 0;
}

while (done == 0) {
c = getchar();
if (c == '\t' || c == ' ' || c == '\n') {
if (Length > 10) {
WordLength[10] += 1;
}
else {
WordLength[Length-1] += 1;
}
Length = 0;
}
else if (c == EOF) {
done = 1;
}
else {
Length += 1;
}
}

printf("\n");

int j, l;
//ocislovani histogramu
for (i = 1; i < 11; i++) {
if (i == 10) {
printf(">10 |");
}
else {
printf("%3d |", i);
}
// vykresleni histogramu
for (l = 0; l < 11; l++) {
for (j = 1; j <= WordLength[l]; j++) {
printf(" * ");
}
}
printf("\n");
}

return 0;
}


Problém musí být někde tady:
// vykresleni histogramu

for (l = 0; l < 11; l++) {
for (j = 1; j <= WordLength[l]; j++) {
printf(" * ");
}
}

, ale já to tam prostě nevidim.

Dokázal by mi prosím někdo poradit?

Nahlásit jako SPAM
IP: 89.102.128.–
KIIV
~ Moderátor
+43
God of flame
5. 4. 2011   #9
-
0
-

si tam dej specialni vychytavku: printf("%d %d: ", l, WordLength[l]);

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Marty
~ Anonymní uživatel
42 příspěvků
5. 4. 2011   #10
-
0
-

Tak už to mam. Díky za "vychytávku" ;) Otestovat to timhle mě nenapadlo. Já pořád zkumal, jestli to mam vůbec správně spočítaný atd. a přitom jsem udělal takovou zásadní chybu :D

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

Podobná vlákna

Pomoc s příkladem — založil Markéta

Prosím o pomoc s příkladem — založil wallker47

Database Language — založil Zed_1

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ý