fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct {
  6. char *name;
  7. float start_time;
  8. } subject_t;
  9.  
  10. subject_t *subject_init(const char *name, float start_time) {
  11. subject_t *s = malloc(sizeof(subject_t));
  12. s->name = strdup(name);
  13. s->start_time = start_time;
  14. return s;
  15. }
  16.  
  17. /* funkcja porownujaca */
  18. int cmp_subject(const void *a, const void *b) {
  19. subject_t *aa = *(subject_t**)a;
  20. subject_t *bb = *(subject_t**)b;
  21. float as = aa->start_time;
  22. float ab = bb->start_time;
  23. return (as > ab) - (as < ab);
  24. }
  25.  
  26. void subject_print(const subject_t *s) {
  27. printf("%s begins at %.2f\n",s->name,s->start_time);
  28. }
  29.  
  30. void subject_free(subject_t *s) {
  31. free(s->name);
  32. free(s);
  33. }
  34.  
  35. int main(void) {
  36. size_t i, nof_subjects = 6;
  37.  
  38. /* tablica
  39. * alokujemy pamiec dla nof_subjects przedmiotow */
  40. subject_t **subjects = malloc(nof_subjects * sizeof(subject_t*));
  41.  
  42. printf("[Nazwa przedmiotu] [Godzina rozpoczecia]\n");
  43. /* wpisujemy kazdy przedmiot */
  44. for(i=0;i<nof_subjects;++i) {
  45. char input[32];
  46. float start_time;
  47. scanf("%31s",&input);
  48. scanf("%f",&start_time);
  49. subjects[i] = subject_init(input,start_time);
  50. }
  51.  
  52. /* sortujemy tablice przedmiotow */
  53. qsort(subjects,nof_subjects,sizeof(subject_t*),cmp_subject);
  54.  
  55. /* wypisujemy posortowane przedmioty z tablicy */
  56. for(i=0;i<nof_subjects;++i)
  57. subject_print(subjects[i]);
  58.  
  59. /* zwalniamy po sobie pamiec */
  60. while(nof_subjects--)
  61. subject_free(subjects[nof_subjects]);
  62. free(subjects);
  63.  
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0s 2428KB
stdin
Matematyka 9.50
WF 8.00
Angielski 10.30
Fizyka 13.30
Historia 11.20
Chemia 12.30
stdout
[Nazwa przedmiotu] [Godzina rozpoczecia]
WF begins at 8.00
Matematyka begins at 9.50
Angielski begins at 10.30
Historia begins at 11.20
Chemia begins at 12.30
Fizyka begins at 13.30