Εμφάνιση 1-6 από 6
  1. #1
    Εγγραφή
    12-06-2017
    Μηνύματα
    4
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Καλησπερα καταρχας,

    Λοιπον λυνω προβληματα στο hellenico.gr και εχω κολλησει στην υποβολη ενος προβληματος. Συγκεκριμενα κεφ 1.1 το 3ο με την ληψη αρχειων. Εχω φτιαξει προγραμμα στην c , δουλευει στο pc μου μια χαρα , αλλα στην αξιολογηση βγαζει σφαλμα κατατμησης.

    Κώδικας:
    //Διαβαζει αρχειο download.in μορφης://
    //(Αριθμος αρχειων)//
    //(ταχ.αρχειου1 KB/s) (δευτερολεπτα μεχρι ολοκληρωση λυψης αρχειου1)//
    //(ταχ.αρχειου2 KB/s) (δευτερολεπτα μεχρι ολοκληρωση λυψης αρχειου2)//
    //...//
    //και επιστρεφει στρογκυλοποιημενα ποση ωρα χρειαζετε για να //
    //ολοκληρωθει η λυψη ολων στο download.out//
    #include <stdio.h>
    #include <math.h>
    #define MAX 30
    
    int main(void) {
      FILE *in = fopen("download.in", "r");
      FILE *out = fopen("download.out", "w");
      char bfr[150];//buffer//
      int numofls;
    
      fgets(bfr, MAX - 1, in);//διαβαζει την πρωτη σειρα για τον # αρχειων//
      sscanf( bfr, "%d \n", &numofls);
      int i, j;
      float spd[numofls - 1];//ταχυτητα αρχειου//
      float tme[numofls - 1];//χρονος που απομενει αρχειου//
      for(i = 0; i < numofls; ++i){//Διαβαζει ταχυτητες και χρονους και τους βαζει στις μεταβλητες//
        if (!fgets(bfr, MAX - 1, in)) break;
        if (sscanf(bfr, "%f %f", &spd[i], &tme[i]) < 2) break;
       }
      fclose(in);
      for(i = 0; i < numofls; ++i){
        for(j = 0; j < numofls; ++j){//Sorting λιγοτερου προς περισσοτερου χρονου που απομενει//
          if(tme[i] < tme[j]){
            tme[i] = tme[i] + tme[j];
            tme[j] = tme[i] - tme[j];
            tme[i] = tme[i] - tme[j];
    
            spd[i] = spd[i] + spd[j];
            spd[j] = spd[i] - spd[j];
            spd[i] = spd[i] - spd[j];
          }
        }
      }
    
      float sunoltme = tme[0];
      float sunolspd = spd[0];
      for(i = 1; i < numofls; ++i){//πραξεις για να βγει ο χρονος που απομενει//
        if(tme[i] == tme[i - 1])
          sunolspd = sunolspd + spd[i];
        else{
          sunolspd = sunolspd + spd[i];
          sunoltme = sunoltme + spd[i] * ( tme[i] - sunoltme ) / sunolspd ;
        }
      }
      fprintf(out, "%.0f", rintf(sunoltme));
      fclose(out);
    
      return 0;
    }
    S. O. S.

    - - - Updated - - -

    Υ.Γ. Προτιμαω να μου πειτε τι ή που εκανα λαθος απο το να μου δωσετε ετοιμη λυση ευχαριστω!

  2. #2
    Εγγραφή
    02-11-2003
    Περιοχή
    Επαναπατρισθείς στην Αθήνα
    Ηλικία
    49
    Μηνύματα
    56.427
    Downloads
    64
    Uploads
    73
    Τύπος
    VDSL2
    Ταχύτητα
    102400/10240
    ISP
    Vodafone
    Path Level
    Fastpath
    Καταρχήν η σωστή πρακτική για όσο έχεις ανοιχτά αρχεία είναι αφού ελέγξεις ότι οι pointers τους δεν είναι null, να το βάλεις όλο αυτό το σύνολο κώδικα σε ένα try block στου οποίου την finally, αφού πάλι ελεγχθούν ότι δεν είναι null οι pointers τους, να κλείνεις τα αρχεία.
    Επιτέλους το ελάχιστο δυνατό, ευέλικτο, και ψηφιακό κράτος. Με διαρκή αξιολόγηση.

  3. #3
    Εγγραφή
    01-05-2013
    Μηνύματα
    121
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    ISP
    ΟΤΕ Conn-x
    Για κοίταξε τις δηλώσεις αυτών των δυο πινάκων:
    Κώδικας:
      float spd[numofls - 1];
      float tme[numofls - 1];
    Το -1 μάλλον δεν χρειάζεται, γιατί λογικά θέλεις numofls θέσεις.

  4. #4
    Εγγραφή
    12-06-2017
    Μηνύματα
    4
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    ε το σκεφτηκα αμα ειναι πχ 2 αρχεια το 1ο θα παει στην θεση 0 και το 2ρο στην θεση 1 (δεν ειναι απαραιτητη η numofls θεση δλδ)

    - - - Updated - - -

    Ε i give up μετα απο 2 μερες googling δε βρηκα κατι , εβαλα check για null τα pointers στην αρχη και το τελος τιποτα. Εκανα null τα pointers πριν το fclose τιποτα , μετα το fclose το ιδιο. Τι πρεπει να κανω για να δουλεψει ?

  5. #5
    printf("%d", numofls);

    Βαλε αυτο κατω απο την sscanf(bfr, "%d\n", &numofls); να δεις τι τιμη παιρνει αυτη η numofls .... μπορει να λεω και μπουρδες εχω καιρο να ασχοληθω με c ... εντωμεταξυ αν ειναι 0 τα αρχεια ισχυει αυτο που ειπε ο alexis12 ...θα βγαζει σφαλμα ...

    - - - Updated - - -

    Προσωπικα οταν πηγα να δω τι ... παιζει στο visual studio 2017 ....μου εβγαζε λαθος τα
    Κώδικας:
    float spd[numofls - 1];//ταχυτητα αρχειου//
      float tme[numofls - 1];
    ....δεν με αφηνε δλδ να χρησιμοποιησω το numofls για τα arrays ... αλλα δεν μπηκα βαθια στην λογικη.

  6. #6
    Εγγραφή
    12-06-2017
    Μηνύματα
    4
    Downloads
    0
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    E λέει ότι θα είναι σίγουρα από 1 και πάνω τα αρχεία
    hmmm θα το κοιτάξω το numofls αν και μπορεί να παίζει θέμα με compatibility κάπου γιατί κοίταξα τι compiler χρησιμοποιουν και έχουν λέει gcc 3.4 στα linux και εγώ έχω το latest στα windows.

Παρόμοια Θέματα

  1. Μηνύματα: 4
    Τελευταίο Μήνυμα: 27-02-17, 11:56
  2. ΠΡΟΒΛΗΜΑ ΜΕ ΣΦΑΛΜΑ ΣΤΟ WINDOWS UPDATE
    Από panostvtv στο φόρουμ Software γενικά
    Μηνύματα: 9
    Τελευταίο Μήνυμα: 30-08-16, 16:15
  3. Σφάλμα κατά την εκκίνηση των windows 8.1
    Από ilias1ar στο φόρουμ Windows
    Μηνύματα: 6
    Τελευταίο Μήνυμα: 07-08-16, 09:19

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας