πρόβλημα με ασκηση σε δομες στη c

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
vovosm7
Δημοσιεύσεις: 4
Εγγραφή: 04 Μαρ 2004 13:03

πρόβλημα με ασκηση σε δομες στη c

Δημοσίευση από vovosm7 » 05 Απρ 2013 22:40

εχω προβλημα με μία ασκηση στη c
να κάνετε πρόγραμμα στη γλώσσα c το οποίο κάνε
1) να ορίζει μια struct student με το εξής πεδία, όνομα, επίθετο, αμ, ετος γεννησης
2) να δεσμεύει δυναμικά χώρο μνήμης για 100 struct student
3) να διαβάζει και να αποθηκευει τα 100 struct student
4) να τους εμφανίζει στην οθόνη
5) να τα ταξινομεί κατά αυξουσα σειρά ως προς το επίθετο
6) να τους εμφανίζει στην οθόνη
7) να τα ταξινομεί κατά αυξουσα σειρά
8) ν ατους εμφανίζει στην οθόνη
9) να τους αποηθκευει σε ενα αρχειο
10) να ελευθερωνει το χωρο μνήμης
LYSH

#include <stdio.h>
#define MAX 100
Struct student {
char onoma[20];
char eponimo[25];
int am;
int year;
};
int main()
{
struct student *ptr;

ptr=(struct student*)malloc(100*sizeof(struct student));
int i,num;

struct student studs[MAX];
num = 0;
for(i = 0; i < MAX, i++)
{
printf("\Enter student data:\n");
printf("onoma: ");

scanf("%s",&(ptr+i)->onoma);
printf("Last name: " eponimo);
scanf("%s",&(ptr+i)-> eponimo);

printf("Code: ");
scanf("%d", &(ptr+i)-> am);
printf("ilikia ");
scanf("%f",&(ptr+i)-> year);
}
δεν ξερω τι αλλο να κανω, εχω κολλησει, σκεφτομαι πως με qsort να κανω την ταξινομηση και με tin free να κανω την ελευθερωση της μνημης. Any ideas?

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

πρόβλημα με ασκηση σε δομες στη c

Δημοσίευση από mariosal » 06 Απρ 2013 12:22

Η ταξινόμηση στο 7ο βήμα ως προς τι πρέπει να γίνει;

vovosm7
Δημοσιεύσεις: 4
Εγγραφή: 04 Μαρ 2004 13:03

πρόβλημα με ασκηση σε δομες στη c

Δημοσίευση από vovosm7 » 06 Απρ 2013 18:45

ως προς την ηλικια γεννησης

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

πρόβλημα με ασκηση σε δομες στη c

Δημοσίευση από mariosal » 06 Απρ 2013 18:55

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct &#123;
  char name&#91;20&#93;, surname&#91;20&#93;;
  int id, year_born;
&#125; Student;

int cmp_by_surname&#40;const void *a, const void *b&#41; &#123;
  Student aa, bb;
  aa = *&#40;Student*&#41;a;
  bb = *&#40;Student*&#41;b;
  return strcmp&#40;aa.surname, bb.surname&#41;;
&#125;
int cmp_by_year_born&#40;const void *a, const void *b&#41; &#123;
  Student aa, bb;
  aa = *&#40;Student*&#41;a;
  bb = *&#40;Student*&#41;b;
  return aa.year_born < bb.year_born;
&#125;

void print&#40;const Student *a, int n, FILE *out&#41; &#123;
  for &#40;int i = 0; i < n; ++i&#41; &#123;
    fprintf&#40;out, "%d %s %s %d\n", a&#91;i&#93;.id, a&#91;i&#93;.name, a&#91;i&#93;.surname,
                                  a&#91;i&#93;.year_born&#41;;
  &#125;
&#125;

int main&#40;&#41; &#123;
  int i, n;
  Student *s;

  scanf&#40;"%d", &n&#41;; // Number of students
  s = &#40;Student*&#41;malloc&#40;n * sizeof&#40;Student&#41;&#41;;
  for &#40;i = 0; i < n; ++i&#41; &#123;
    scanf&#40;"%d%s%s%d", &s&#91;i&#93;.id, s&#91;i&#93;.name, s&#91;i&#93;.surname, &s&#91;i&#93;.year_born&#41;;
  &#125;

  printf&#40;"Students&#58;\n"&#41;;
  print&#40;s, n, stdout&#41;;
  printf&#40;"\n"&#41;;

  qsort&#40;s, n, sizeof&#40;Student&#41;, cmp_by_surname&#41;;
  printf&#40;"Sorted by surname&#58;\n"&#41;;
  print&#40;s, n, stdout&#41;;
  printf&#40;"\n"&#41;;

  qsort&#40;s, n, sizeof&#40;Student&#41;, cmp_by_year_born&#41;;
  printf&#40;"Sorted by the year they were born&#58;\n"&#41;;
  print&#40;s, n, stdout&#41;;
  printf&#40;"\n"&#41;;

  print&#40;s, n, fopen&#40;"students.out", "w"&#41;&#41;;

  free&#40;s&#41;;

  return 0;
&#125;
Το input πρέπει να έχει αυτή τη μορφή:

Κώδικας: Επιλογή όλων

Πλήθος_μαθητών
ΑΜ1 Όνομα1 Επίθετο1 Έτος_γέννησης1
ΑΜ2 Όνομα2 Επίθετο2 Έτος_γέννησης2
...
ΑΜn Όνομαn Επίθετοn Έτος_γέννησηςn

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες