Advertisement
elica123

Untitled

Jun 20th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. //Zadatak 3 (3 + 6 + 6 = 15 bodova) Unos u rječniku hrvatskih riječi sastoji se od tri informacije: same riječi, informacije o
  2. vrsti riječi (imenica, glagol, . . . ) te opisa njezinog značenja.
  3. a) Definirajte tip podatka unos koji će služiti za čuvanje jednog unosa iz rječnika hrvatskih riječi. (Sve tri potrebne
  4. informacije možete reprezentirati stringovima, no uočite da opis riječi može sadržavati i razmake). Možete pretpostaviti
  5. da riječi nisu dulje od 30 znakova, te da informacija o vrsti riječi nije dulja od 10 znakova. S druge strane, nema
  6. ograničenja na duljinu opisa pojedine riječi.
  7. b) Napišite funkciju void novi(unos *x) koja će omogućiti korisniku da s tipkovnice učita novi unos u formatu
  8. riječ (vrsta) - opis
  9. primjerice:
  10. skakač (imenica) - jedna od figura u šahu
  11. te spremi odgovarajući unos u varijablu koju smo funkciji prenijeli po adresi
  12.  
  13. void novi(unos* x){
  14. char c;
  15. int len = 1;
  16. scanf("%s (%[^)]) - ",x->rijec, x->vrsta); //mozemo spretno koristiti formate; alternativa je ucitavati znak-po-znak
  17. //preostaje ucitati x->opis
  18. //buduci da smo taj string deklarirali kao char*, prije ucitavanja moramo alocirati dovoljno memorije
  19. //kako ne znamo unaprijed sto je "dovoljno", trebamo ucitavati znak-po-znak i svaki puta realocirati memoriju
  20. x->opis = (char*) malloc(sizeof(char));
  21. scanf("%c", &c);
  22. while(c != '\n'){
  23. x->opis = realloc(x->opis, (len+1)*sizeof(char));
  24. (x->opis)[len-1] = c;
  25. ++len;
  26. scanf("%c", &c);
  27. }
  28. (x->opis)[len-1] = '\0';
  29.  
  30. return;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement