Prosím poradte mi budu vděčná – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Prosím poradte mi budu vděčná – C / C++ – Fórum – Programujte.comProsím poradte mi budu vděčná – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
janysek_
~ Anonymní uživatel
36 příspěvků
5. 4. 2007   #1
-
0
-

Máme za ukol,udělat tenhle ukol,ale jsem z toho jaksi zmatená a nevím co stím nepomol by mi stím někdo,budu moc ráda,děkuju
to zadání je takové:

Pocitani slov

Zadání
Napište funkci v jazyce C zjišťující počet výskytů slov. Funkce bude volána opakovaně, pro každé slovo jednou.

Odevzdávejte soubor obsahující výhradně definici jediné funkce pojmenované a deklarované dle zadání. Soubor nesmí obsahovat direktivu #include. Veškeré potřebné datové typy apod. deklarujte lokálně.

Deklarace funkce
void *Pocitej_Slova(char *, void *);

Je-li hodnota prvního argumentu NULL, označuje konec zpracovávání. V opačném případě je zde uloženo další slovo ke zpracování.
Hodnota druhého argumentu je při prvním volání funkce NULL, při kazdém následujícím volání je vždy rovna návratové hodnotě funkce z předchozího volání (nápověda: tento argument je určen pro předávání interního stavu funkce mezi jednotlivými voláními).
Návratová hodnota při posledním volání funkce je ukazatel na dvourozměrné pole takové, že v prvním řádku jsou jednotlivá slova podle abecedy a ve druhém řádku jejich četnosti. Poslední hodnotou v prvním řádku musí být NULL a ve druhém 0.
[podtrzene]Příklad:[/podtrzene]

void *p;

p=Pocitej_Slova("nazdar",NULL);
p=Pocitej_Slova("ahoj",p);
p=Pocitej_Slova("cau",p);
p=Pocitej_Slova("nazdar",p);
p=Pocitej_Slova(NULL,p);

printf("\"%s\" %d\n",((char **)(p[0]))[2],((int *)(p[1]))[2]);
/*
Vypise:
"nazdar" 2
*/
[podtrzene]Povolené knihovny:[/podtrzene]
stdlib.h
string.h

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
5. 4. 2007   #2
-
0
-

Wow :-O Jak mam sakra pripojit knihovny, kdyz nesmim pouzit #include ???

Nahlásit jako SPAM
IP: ...–
Oblivion
~ Anonymní uživatel
1 příspěvek
6. 4. 2007   #3
-
0
-

To janysek_:
Tak to vypadá docela těžce, kde studuješ?

Nahlásit jako SPAM
IP: ...–
Alan0
Věrný člen
6. 4. 2007   #4
-
0
-

to Zelenáč> já to pochopil tak, že ty si tam to include dáš aji main a tak, ale odevzdávat se bude jenoim ta f-ce bez main a #include. Proč to tka komplikujou ale fakt netuším..

Nahlásit jako SPAM
IP: ...–
PSP user|Web developer|C4D user||Maya Lamer|Photoshop User|Guitar player
Jana0
Newbie
6. 4. 2007   #5
-
0
-

To Al:ano je to tak,normalně se v dev c nebo v jiném,programuje i s main a #include ale pak se ten ukol odezvdavá přes automat a tam se posilá jen samostatná funkce,neporadil by me s ti tedy nekdo,je to moc slozity sama tomu moc nerozumím,jinka studuju na UP obro informatika,tohle je jediný předmět v kterým tak lítám

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
9. 4. 2007   #6
-
0
-

Vážně by mi stím nikdo nepomohl.

Nahlásit jako SPAM
IP: ...–
midin
~ Anonymní uživatel
320 příspěvků
9. 4. 2007   #7
-
0
-
Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
9. 4. 2007   #8
-
0
-

sorrac rad by som pomohol ale toto zadanie ma jeden zadrhel koli ktoremu to niesom schopny napisat. Problemom je ten printf. Neviem ako inde, ale ja z gcc kompilatorom nemam sancu skompilovat tak hardcore pretypovanie void ukazatela. Nedivim ze si s tym nevies rady. Toto zadanie je dost humus. Dalsia vec je to ze su povolene len stdlib.h a string.h pritom printf je definovany v stdio.h cili dalsi zadrhel v zadani. Nechcem byt blby ale je to dost haluzne zadanie a neviem ci sa podary ho spravit tak aby profesor bol spokojny..

Btw mozno niekto pride na nejake salamunske riesenie ale priznam sa ze bez zmeny toho pritfu sa to asi neda skompilovat vid following test:



sn3d@sn3d-laptop:~/devel/_experiments/uloha$ cat main.c
#include <stdlib.h>
#include <string.h>

int main()
{
void *p;
printf("\"%s\" %d\n",((char **)(p[0]))[2],((int *)(p[1]))[2]);
}

sn3d@sn3d-laptop:~/devel/_experiments/uloha$ gcc main.c
main.c: In function ‘main’:
main.c:7: warning: incompatible implicit declaration of built-in function ‘printf’
main.c:7: warning: dereferencing ‘void *’ pointer
main.c:7: error: void value not ignored as it ought to be
main.c:7: warning: dereferencing ‘void *’ pointer
main.c:7: error: void value not ignored as it ought to be


A test zo zmienovanym stdio.h



sn3d@sn3d-laptop:~/devel/_experiments/uloha$ cat main.c
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main()
{
void *p;
printf("\"%s\" %d\n",((char **)(p[0]))[2],((int *)(p[1]))[2]);
}
sn3d@sn3d-laptop:~/devel/_experiments/uloha$ gcc main.c
main.c: In function ‘main’:
main.c:8: warning: dereferencing ‘void *’ pointer
main.c:8: error: void value not ignored as it ought to be
main.c:8: warning: dereferencing ‘void *’ pointer
main.c:8: error: void value not ignored as it ought to be

Nahlásit jako SPAM
IP: ...–
shutdown -h now
Jana0
Newbie
10. 4. 2007   #9
-
0
-

sn3d:
No právě je to dost hnusný zadání,je to fakt hrozny.S tím stdio.h to tam muzes mit,to se nic neděje,je jasný že printf je definovany v stdio.h taže to tam musí být

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
634 příspěvků
10. 4. 2007   #10
-
0
-

Mno, mam jeden napad. Kdyz uz si muzes definovat vlastni datovy typ uvnitr fce, tak bych si tam definoval napr. nejakou strukturu, ktera by mela polozky char* a int*(pozor musi to byt pointery) a potom samozrejme nejake pole techto struktur(jednorozmerne) - to se da jednoduse realokovat. Mno pridavani by se realizovalo normalne (nova struktura, alokace jednotlivych polozek, inicializace). A nakonec, kdyz bude druhy parametr roven NULL, pretransformovat to pole struktur na dvourozemrne(jendorozmerne??) pole na void.
Mno, nemam tu kompilator ani moc casu, ale mohlo by to vypadat asi nejak takto:



void *Pocitej_Slova(char * str, void * p)
{
typedef struct{
char * str;
int * count;
}Item;

static Item *items = NULL; // musi byt static
static int count = 0;
if(p == NULL){ // vytvoreni pole
items = (Item*)malloc(sizeof(Item));
items[0].str = strdup(str);
items[0].count = (int*)malloc(sizeof(int));
*(items[0].count) = 1;
}
// pridavani a realokoce
// transoframce
if(str == NULL)
{ // a ted je otazkopu jestli dvourozmerne pole(void**array) nebo jednorozmerne(void*p)
// a naplnit ho
void* *p = (void*)malloc(sizeof(void*)*(count+2)); // pro NULL a 0
int i;
for (i=0;i < count; ++i)
p[i] = (void*)items[i].str;
p[i] = NULL;
for(i=0; i < count; ++i)
p[count+i] =(void*) items[i].count;
p[count+i] = 0;
free((void*)items);
return p;
}

}


Ale jak rikam, je to jen myslenka, moznato nebude fungovat ale...

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
10. 4. 2007   #11
-
0
-

Jura:asi by to mohlo tak nějak asi být.Ale mě to v dev c,hlasí chybu tak nevím no

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
11. 4. 2007   #12
-
0
-

Nikdo teda mi neporadi jak to má byt,tento program je nad mé síly,sem se bavila s pár kamarády a ti mi taky nepomohli

Nahlásit jako SPAM
IP: ...–
DeaLer+2
Hero
11. 4. 2007   #13
-
0
-

To janysek_: zkus napsat, jakou chybu hlásí

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
Jana0
Newbie
11. 4. 2007   #14
-
0
-

DeaLer:
No ja tam dala tu implementaci od jura ale to nefunguje se v tom ani nevyznam,nevim co tam mam dat

Nahlásit jako SPAM
IP: ...–
Ota
~ Anonymní uživatel
15 příspěvků
12. 4. 2007   #15
-
0
-

Byl-li zadavatel toho úkolu při smyslech a je-li současně z této planety, pak dle mého názoru cílem nemůže být nic jiného než test na podvádění winking smiley, protože je prakticky nepravděpodobné, že by úplný začátečník něco takového úspěšně vyřešil.

Takže se dá říct, že ten kdo to odevzdá úspěšně vyřešené:

1) uměl programovat v jazyce C už dávno před tím než nastoupil na onu školu,

2) nebo je génius a zvládl vstřebat k tomu potřebné znalosti v takto krátké době,

3) a nebo což bude asi nejpravděpodobnější podváděl a někdo to vypracoval za něj.

Z tohoto pohledu je zřejmé, že většina v tomto směru u zkoušejícího nemůže projít. Pominuli ty, kteří to nevypracují či vypracují nesprávně a jsou tím pádem jasní, tak ti co to odevzdají vypracované správně a jak jsem již zmínil neumí už dávno programovat v C či nejsou géniové tak neprojdou taky, protože zkoušející velmi lehce pozná, že nemají potřebné znalosti.

Nahlásit jako SPAM
IP: ...–
DeaLer+2
Hero
12. 4. 2007   #16
-
0
-

To Ota: přijde mi to pravděpodobné .... C neumím, ale taky mi zdá, že je to pro začátečníky příliš složitá úloha

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
Jana0
Newbie
12. 4. 2007   #17
-
0
-

To DeaLer,Ota:
No jo máte pravdu,ten učitel je blázen,v prvním semestru nám dal taky takovou jednu ulohu,s kterou si nikdo nevěděl rady,sem to dala jednymu známýmu který programuje 20 let a ten mi říkal že ten učitel musí být magor že nám dává ukoly, takový že je to pro člověka který dělá v C uz 2-3 roky a ne pul rok.No a ted nám dal další takovou ulohu:-(

Nahlásit jako SPAM
IP: ...–
zacatecnik0
Super člen
12. 4. 2007   #18
-
0
-

ota:
kdepak sme vykopirovali cizy odpoved? nebyl to builder ? vite ze kopirovani jinych citaci bez udani autora je poruseni zakona ?

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
Jura
~ Anonymní uživatel
634 příspěvků
12. 4. 2007   #19
-
0
-

To janysek_:
Jak jsem psal, nemel jsem u sebe kompilator. Pozdeji jsem si zkusil neco napsat, ale nic moudreho z toho nevzeslo. Je mi lito,
ale je to nad me sily.:(

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
13. 4. 2007   #20
-
0
-

To Jura:to nevadí,je mi jasný že je to složitý a že jen tak to nepude

Nahlásit jako SPAM
IP: ...–
Ota
~ Anonymní uživatel
15 příspěvků
13. 4. 2007   #21
-
0
-

Ten text neni opravdu muj... nesel sem ho na netu a dal sem ho sem, protoze s nim plne souhlasim...

to zacatecnik: vadi ti to moc??? zbytecne se prudis...

Nahlásit jako SPAM
IP: ...–
Solo0
Newbie
14. 4. 2007   #22
-
0
-

Zajímavé zadání... bud sem uplne blbej nebo nevim ale vubec sem z toho nepochopil co ma vlastne vsledny program delat...

V zadani totiz chybi zakladni informace, jako napriklad, jak bude vypadat vstup programu. Ta fce musi nad nejakyma datama pracovat a to jak ty data budou vypadat je docela klicove. Musis totiz vedet jestli ta fce ma cist nejaky textovy soubor nebo jestli si muzes jen tak deklarovat nejaky retezec. Kolik slov bude priblizne na vstupu? V zadani je ze v tom poli budou hledana slova s vykyty setrideny podle abecedy mas resit setrizovani podle abecedy, nebo ty hledane vyrazy uz podle abecedy budou. Jaky bude pocet hledanych vyrazu?

A nakonec? Budu resit hledani slov i ukladani do pole podle abecedy? Proc bych mel pouzit jedinou funkci ?

Nam vzdycky ucitele rikali kdyz byl nejaky projekt skus mi to odevzdat nabastlene vsecko v jedne funkci a bude zle...

Este by me zajimalo na jakou delas skolu a co to je za predmet pokud to neni tajne :-)

Nahlásit jako SPAM
IP: ...–
Solo0
Newbie
14. 4. 2007   #23
-
0
-

Este dotaz jakym zpusobem mas ty slova hledat?? Mas pouzit normalni buralni silu (porovnat slovo se zacatkem retezce posunout o jedno do prava atd. atd.) nebo mas pouzit nejaky apecialni algoritmus na vyhledavani slov v textu?

Pokud todle vsecko nebylo zadano ani nejsou kladeny zadne dalsi pozadavky dalo by se predpokladat ze ty slova nemusi byt ani ulozeny jako text (muzu uvazovat ze mi je nejaka chytra fce nacetla do pole)

char retezec_slov = {"Ahoj", "Ahoj", "Hello", "Nazdar", "Ahoj", "Cau", "Hello"};

Dale muzu predpokladat ze slova ktere budu hledat mi prijdou uz podle abecedy a nemusim se piplat s trizenim.
Hledat budu Ahoj, Cau, Hello, Nazdar v tomdle poradi

Takle se to smi ? Podle toho zadani bych rekl ze jo :-)

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
14. 4. 2007   #24
-
0
-

To Solo:no víš on nám k tomu nic neřekne jen nám dá zadání a tot vše,víc nám k tomu neřekne,jen že to máme do konce semestru udělat víš,Posílame mu to přes takový jeho automat,podel toho poznáme kde máme chybu a tak,když to máš špatně tak ti to vypíše protokol s chybami,jinak studuji na UP a je to přdmět softwarová laboratoř

Nahlásit jako SPAM
IP: ...–
Peter D.0
Expert
14. 4. 2007   #25
-
0
-

kolkych z vas ovplivnilo pohlavie tazatela ? :D
(pomerne veľa reakcií na príspevok typu: zrobte mi domacu)

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Solo0
Newbie
14. 4. 2007   #26
-
0
-

No me neovlivnilo pohlavi tazatele, ja docela topiky "udelejte mi projekt" sleduju, ciste ze zvedavosti abych vedel kde se co dela za projekty jelikoz taky porad nejake delam.
Tady sem se dival uz driv a docela me tohle zadani zaujako hlavne, proto ze sem ho poradne nepochopil a taky proto ze to je nejstupidnejsi zadani co sem v zivote videl. Je to spatne zadano, chybi spousta dulezitych informaci zato je tam spousta hloupych pozadavku. Nevim jak pokroilci jsou studenti toho predmetu ale to zadani se nelibi ani mi a to uz sem v cecku neco napsal. Lidi co nemaj skusenosti s ukazatelama to znechuti a pravdepodobne se v tom nevyznaji ani kdyz to napisou a bude jim to fungovat. A pritom by to slo urcite udelat jednoduse. Tak me zajimalo jestli to nekdo vyresil :-)

Nahlásit jako SPAM
IP: ...–
mallox0
Návštěvník
19. 4. 2007   #27
-
0
-

do kdy je vubec termin odevzdani?

Nahlásit jako SPAM
IP: ...–
linux v grafice je boj
forum.ubuntu.cz
sn3d0
Věrný člen
19. 4. 2007   #28
-
0
-

uz to nemusite riesit. Problem uz bol vyrieseny na builder.cz

Nahlásit jako SPAM
IP: ...–
shutdown -h now
Jura
~ Anonymní uživatel
634 příspěvků
19. 4. 2007   #29
-
0
-

To sn3d:
Já se obávam, že ani tamějším expertům, se to nepovedlo. Největší problém je v tom přetypování, ostatně jak jsi sám psal.

Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
20. 4. 2007   #30
-
0
-

No hej.. to by ma inac zaujimalo keby niekto poriesil to pretypovanie.. to by bol asiq zazrak alebo to by bol nejaky dost slahnuty kompilator.. alebo nejaka tazka finta..

Nahlásit jako SPAM
IP: ...–
shutdown -h now
Jura
~ Anonymní uživatel
634 příspěvků
20. 4. 2007   #31
-
0
-

To sn3d: Tak to jsme minimalne dva, koho by zajimal spravny kod. Nicmene to nemeni nic na tom, ze je ten ucitel asi smyslu zbaveny, protoze dotycny s takovou kokotinou v praxi snad ani neprijde do styku.

Nahlásit jako SPAM
IP: ...–
Jana0
Newbie
21. 4. 2007   #32
-
0
-

Mate to byt do konec kvetna,sice to tam je vyreseny,ale nefunguje mi to jaksi.Ucitel dava vzdy jednu takovou ulohu tezkou i s takovym zadanim,kdy se nevi co se po nem chce nebo se to neda udelat

Nahlásit jako SPAM
IP: ...–
klara
~ Anonymní uživatel
15 příspěvků
30. 4. 2007   #33
-
0
-

To Jura z 10.4:Koukala jsem na ten program,neco jsem zkousela,jen mi nejak nejde pochopit jak to ma tam s tim pretypovanim na konci...porad mi haze ze mu vadi ten void**.Mozna kdyby si mi pomohl to rozvest a trochu pochopit ten tvuj zdrojak,tak bychom neco vymysleli.Taky by me zajimalo spravne reseni,ktere ten jejich auto check vezme..

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
634 příspěvků
1. 5. 2007   #34
-
0
-

To klara:

Koukni na http://builder.cz z poslednich prispevku ve vlakne Program v C vyplyva, ze vam ucitel zadal patrne spatne zadani, takze jsem tu vsichni resili neresitelne. Jinak je tam dokonce hotove reseni, tak si to nejak prelouskej do vlastni podoby.

Nahlásit jako SPAM
IP: ...–
klara
~ Anonymní uživatel
15 příspěvků
2. 5. 2007   #35
-
0
-

To Jura:Ja jsem zjistila,ze to musi byt napsany se strukturou,to je ten nejvetsi problem,uz mam dokonce neco nastinenyho co by mozna mohlo jit,ale nejak to nemuzu vychytat s tou strukturou a dinamickym polem void ** a int**..na buildru jsou reseni,ale jedno jde jen s prepsanim vystupu programu...

Nahlásit jako SPAM
IP: ...–
Ticonder0
Duch
5. 5. 2007   #36
-
0
-

Nevim ale je to fakt divny.napada mne jen ulozit vzdycky retezec char(mezera nejake slovo-budouci char mezera) a pokud to plati tak ulozit potom vsechno porovnat ulozit promnene vypsat jenze to je uplne silene reseni ale mne nic jineho nenapada.............(ostatne mozna vsechno co sem ted napsal je kravina tak to radsi nepouzivej na konci kvetna jako argument proti ucitelove nedostatecne...)

Nahlásit jako SPAM
IP: ...–
Tomas_Dejmek
~ Anonymní uživatel
52 příspěvků
10. 1. 2008   #37
-
0
-

sn3d: Já ti dám hardcore přetypování, když má funkce návratovou honotu tak musí něco vracer. :D (keyword return)

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

Podobná vlákna

Poradte mi prosím... — založil Majox

PHP Prosím poradte mi... — založil Majox

Maturita- poraďte prosím — založil Dalibor

Moderátoři diskuze

 

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