Hellenico

Συζητήσεις για προετοιμασία για τον διαγωνισμό, online διαγωνισμούς, βιβλία προγραμματισμού και αλγορίθμων, και όλων των σχετικών.
NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Σάβ Οκτ 08, 2011 5:46 pm

δλδ να μετατρέπω την είσοδο σε double κι στο τέλος να το ξανακάνω int?

sotiris
Δημοσιεύσεις: 422
Εγγραφή: Τρί Φεβ 10, 2009 9:49 pm

Re: Hellenico

Δημοσίευση από sotiris » Σάβ Οκτ 08, 2011 8:45 pm

NikosZ έγραψε:δλδ να μετατρέπω την είσοδο σε double κι στο τέλος να το ξανακάνω int?
Μόνο μία πραγματική μεταβλητή θα χρειαστείς για να κρατήσεις το αποτέλεσμα ( float ή double ). Αφού βρεις τον αριθμό , στρογγυλοποιείς και τυπώνεις το ακέραιο μέρος.
Εικόνα

NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Σάβ Οκτ 08, 2011 9:04 pm

το δοκίμασα δεν έπιασε... 1/10 πάλι

Άβαταρ μέλους
zaxeilasfc
Δημοσιεύσεις: 118
Εγγραφή: Δευ Οκτ 18, 2010 8:15 pm
Τοποθεσία: Macintosh HD

Re: Hellenico

Δημοσίευση από zaxeilasfc » Σάβ Οκτ 08, 2011 9:08 pm

Νίκο θα σε συμβούλευα να γράφεις πιο όμορφο κώδικα.. Με το που ξεκίνησα να τον διαβάζω τον παράτησα... Λογικά, όπως μας λες, το πρόβλημα είναι στην στρογγυλοποίηση.. δήλωσέ τον float ή double και μετα τον στρογγυλοποιείς μέσω setprecision (μορφοποίηση εξόδου, για c++) αναλόγως πως το χρειάζεται.

NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Κυρ Οκτ 09, 2011 3:06 pm

Το ξαναέγραψα από την αρχή , πάλι τα ίδια όμως...

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

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 int x;
    int s[100];
    double t[100];
    int i(0);
    double sec(0.00);
    double sec1(0.00);
    int avband(0);
    void small()
    {
         double loop(10000.00);
         sec1 =0;
         for(int ti = 0; ti<x;)
         {
                 if(t[ti]<loop && t[ti]>0)
                 {
                               loop = t[ti];
                 }
                 ti++;
                 
         }
        if (loop == 10000.00){}
         else 
         sec1 =loop;
         
    }
    void newsec()
    {
         for(int uk =0; uk<x;)
         {
                 t[uk] = t[uk] -sec1;
                 uk++;
                 
         }
         
         
    }
    void bandw()
    {
         avband = 0;
      for (int xi = 0; xi<x;)
      {
          if(t[xi]<=0.00)
          {
                       avband=avband+ s[xi];
          }
          xi++;
      }     
         
         
    }
    void newspeed()
    {
         for (int u=0; u<x;)
         {
             if(t[u]>0.00)
             {
             t[u] = (t[u]*s[u])/(s[u] + avband);
             u = x;           
             }
             u++;
         }
    }
int main()
{

    ifstream in("downloads.in");
    in>>x;
    while(in>>s[i]>>t[i]){i++;}
    in.close();
    ofstream out("downloads.out");
    for (int k =0; k<x;)
    {
        small();
        sec = sec + sec1;
        newsec();
        bandw();
        newspeed();
        k++;
        
    }
out<<setprecision(2)<<sec<<endl;
out.close();
    return 0;
}

NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Κυρ Οκτ 09, 2011 8:10 pm

το setprecision(2) δν κάνει στρογγυλοποιησεί? στα testcase που ΄έκανα , έκανε γιαυτό..

sotiris
Δημοσιεύσεις: 422
Εγγραφή: Τρί Φεβ 10, 2009 9:49 pm

Re: Hellenico

Δημοσίευση από sotiris » Κυρ Οκτ 09, 2011 8:21 pm

NikosZ έγραψε:το setprecision(2) δν κάνει στρογγυλοποιησεί? στα testcase που ΄έκανα , έκανε γιαυτό..
Όχι , δεν κάνει αυτό που θες.
http://www.cplusplus.com/reference/iost ... precision/

Αντί για
out<<setprecision(2)<<sec<<endl;

Δοκίμασε
out<<setprecision(2)<<roundf(sec)<<endl;

Η roundf περιέχεται στην <math.h>
Εικόνα

NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Κυρ Οκτ 09, 2011 8:28 pm

ευχαριστώ για την συμβουλή αλλά αλλού είναι το πρόβλημα πάλι 1/10..

Άβαταρ μέλους
zaxeilasfc
Δημοσιεύσεις: 118
Εγγραφή: Δευ Οκτ 18, 2010 8:15 pm
Τοποθεσία: Macintosh HD

Re: Hellenico

Δημοσίευση από zaxeilasfc » Κυρ Οκτ 09, 2011 9:56 pm

sotiris έγραψε:
NikosZ έγραψε:το setprecision(2) δν κάνει στρογγυλοποιησεί? στα testcase που ΄έκανα , έκανε γιαυτό..
Όχι , δεν κάνει αυτό που θες.
http://www.cplusplus.com/reference/iost ... precision/

Αντί για
out<<setprecision(2)<<sec<<endl;

Δοκίμασε
out<<setprecision(2)<<roundf(sec)<<endl;

Η roundf περιέχεται στην <math.h>
@Sotiri εγώ χρησιμοποιώ "fout<<setprecision (0)<<fixed<<'μεταβλητή' και λειτουργεί κανονικά...

Νίκο δεν έχω την υπομονή να δω την λύση σου αλλά εγώ προσωπικά αλλιώς το έχω λύσει... καμία σχέση...
Spoiler: show
σκέψου λίγο structurs... :?:

Chapeiro
Δημοσιεύσεις: 7
Εγγραφή: Πέμ Δεκ 02, 2010 3:20 pm

Re: Hellenico

Δημοσίευση από Chapeiro » Πέμ Οκτ 13, 2011 1:25 am

zaxeilasfc έγραψε:
Spoiler: show
σκέψου λίγο structurs... :?:
Spoiler: show
structures ??? :? δεν θα ήταν καλύτερο να σκεφτεί απλώς με τι ισούται η ταχύτητα και τι ψάχνει ? δεν μπορώ να φανταστώ κάποια λύση με δομές... θα μπορούσα να ρωτήσω τι έχεις στο μυαλό σου ?
@NikosZ +1 στο να γράφεις λίγο πιο όμορφο κώδικα και κυρίως με (σωστά) σχόλια όταν ζητάς βοήθεια σε forum
To err is human - and to blame it on a computer is even more so. R. Orben

Belief is the death of intelligence. R. A. Wilson

Genius always finds itself a century too early. R. W. Emerson

Άβαταρ μέλους
zaxeilasfc
Δημοσιεύσεις: 118
Εγγραφή: Δευ Οκτ 18, 2010 8:15 pm
Τοποθεσία: Macintosh HD

Re: Hellenico

Δημοσίευση από zaxeilasfc » Δευ Οκτ 17, 2011 11:58 pm

Chapeiro έγραψε:
zaxeilasfc έγραψε:
Spoiler: show
σκέψου λίγο structurs... :?:
Spoiler: show
structures ??? :? δεν θα ήταν καλύτερο να σκεφτεί απλώς με τι ισούται η ταχύτητα και τι ψάχνει ? δεν μπορώ να φανταστώ κάποια λύση με δομές... θα μπορούσα να ρωτήσω τι έχεις στο μυαλό σου ?
@NikosZ +1 στο να γράφεις λίγο πιο όμορφο κώδικα και κυρίως με (σωστά) σχόλια όταν ζητάς βοήθεια σε forum
Δεν εννοώ κάτι το extreme. αν βοηθήσω παραπάνω δίνω ουσιαστικά την λύση (την δική μου τουλάχιστον) αν και αποδείχθηκε οτι λύνεται και με άλλο τρόπο.
Αυτό που έχω στο μυαλό μου σίγουρα είναι το τι ισουται η ταχύτητα. Το θέμα δεν είναι όμως να λύσεις το θέμα με δεδομένα τα 2 αρχεία αλλά των 1<=Ν<=100 αρχείων.
Με μια δομή, έστω download:

struct download
{
int taxitita;
int xronos;
float xronos1;
};

μπορείς κάλλιστα να αντιμετωπίσεις το πρόβλημα.

Φοβάμαι να γίνω σαφέστερος λόγο του οτι είμαστε σε δημόσια συζήτηση. Αν θέλεις κάτι παραπάνω στείλε μου μήνυμα.
EDIT: //Η δομή μπορεί να είναι παρόμοια. μη σκέφτεσε το όνομα των μεταβλητών. Σκεψου πως θα τις χρειαστείς και τι τις χρειάζεσαι.

Antrikkos576
Δημοσιεύσεις: 2
Εγγραφή: Τρί Νοέμ 08, 2011 7:46 pm

Re: Hellenico

Δημοσίευση από Antrikkos576 » Τρί Νοέμ 08, 2011 7:56 pm

Παιδιά είμαι στην ενότητα 1.2 στο πρόβλημα με την Ακρόπολη. Παίρνω 8/10 και δεν μπορώ να καταλάβω ποιο είναι το λάθος μου. Θα μπορούσε να με διαφωτίσει κάποιος παρακαλώ;

Ευχαριστώ!

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

#include <iostream>
#include <fstream>

using namespace std;

int main(){
    int n,a,tmp=0,z=1,i,j,x,y;
    
    ifstream in ("acropolis.in");
    ofstream out ("acropolis.out");
    
    in>>n;
    int w[n];
    

    
    for (x=0;x<n;x++){
        in>>a;
        if ((a>=1)&&(a<=9000))
        w[x]=a;
        }
        
        for (i=0;i<n;i++){
            for (j=0;j<n-1;j++){
                while (w[j+z]==1)
            z+=1;
               if ((w[j+z]!=0)&&(w[j]!=1)&&(w[j]>w[j+z])){
               tmp=w[j];
               w[j]=w[j+z];
               w[j+z]=tmp;
               }
               z=1;
               }
               }
    
    for (y=0;y<n;y++){
        out<<w[y]<<"\n";
        }

    in.close();
    out.close();
    
    return 0;
}

Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 298
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης » Τετ Νοέμ 09, 2011 8:39 am

Όταν κάνεις τις πράξεις w[j+z] πιθανότατα να ξεφεύγεις από τα όρια του πίνακά σου.
Δοκίμασε να βάλεις πριν από κάθε τέτοια πράξη, μια if που να βεβαιώνει ότι ο πίνακας σου έχει αρκετές θέσεις ( if ( j+z < n ) ) και ξαναπές μας.
Πάντα να δηλώνεις τους πίνακες με λίγες παραπάνω θέσεις από ότι σε λέει το πρόβλημα, πχ w[n+10].

Άλλος τρόπος να λύσεις το πρόβλημα θα ήταν να βάλεις στην θέση w[n] ( που σε εσένα δεν υπάρχει, πρέπει να μεγαλώσεις τον πίνακα ) μια τεράστια τιμή ( πρακτικά σε αυτό το πρόβλημα, η τεράστια τιμή είναι 9001 ) ώστε να μη γίνει ποτέ η αντιμετάθεση με αυτή την τιμή, αλλά και το j+z σου να μη φτάνει ποτέ σε τιμές μεγαλύτερες του n, άρα θα περίττευαν και οι if.

Αν χρειαστείς βοήθεια στείλε pm.
Εικόνα

Antrikkos576
Δημοσιεύσεις: 2
Εγγραφή: Τρί Νοέμ 08, 2011 7:46 pm

Re: Hellenico

Δημοσίευση από Antrikkos576 » Τετ Νοέμ 09, 2011 4:39 pm

Ευχαριστώ πολύ. Αυτό ήταν το λάθος. Όταν έβαλα ( if ( j+z < n ) ) πήρα 10/10! :D :D

Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 298
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης » Τετ Νοέμ 09, 2011 5:38 pm

Άντε, καλή συνέχεια αγόρι.

Κράτα ως καλή συνήθεια να βάζεις και μερικές άδειες θέσεις στο τέλος του πίνακα για να μην έχεις τέτοια προβλήματα.
Εικόνα

userresu
Δημοσιεύσεις: 191
Εγγραφή: Τρί Δεκ 16, 2008 9:53 pm

Re: Hellenico

Δημοσίευση από userresu » Τρί Δεκ 27, 2011 6:35 pm

ΟΚ, διορθώθηκε η εκφώνηση, thanks.

Memas
Δημοσιεύσεις: 87
Εγγραφή: Παρ Δεκ 31, 2010 4:13 pm
Επικοινωνία:

Re: Hellenico

Δημοσίευση από Memas » Πέμ Δεκ 29, 2011 6:48 pm

Βασικά με τον ίδιο λογαριασμό που σου δόθηκε στο Pdp πρέπει να συνδεθείς και στο Hellenico για να κάνεις την υποβολή σου, και όσον αφορά τα Linux και την gpc-Pascal δεν παίζει ρόλο το λειτουργικό 99% είναι ίδια με την free-pascal που χρησιμοποιούσα και στα Windows... Υ.γ. είμαστε σε λάθος topic :lol:

sotiris
Δημοσιεύσεις: 422
Εγγραφή: Τρί Φεβ 10, 2009 9:49 pm

Re: Hellenico

Δημοσίευση από sotiris » Τρί Ιαν 17, 2012 2:17 pm

Γίνεται να φτιαχτεί υποσελίδα στο http://www.hellenico.gr/ που να περιέχει όλα τα παλιότερα θέματα του ΠΔΠ; ( και να μπορούμε κατόπιν να κάνουμε και υποβολή λύσεων )
Εικόνα

NikosZ
Δημοσιεύσεις: 10
Εγγραφή: Σάβ Οκτ 08, 2011 11:23 am

Re: Hellenico

Δημοσίευση από NikosZ » Κυρ Μαρ 18, 2012 11:47 am

Παιδιά στο πρώτο 1,3 στο PC βγάζει σωστό outpout κι εκεί βγάζει λάθος WTF is going on?

Άβαταρ μέλους
mariosal
Δημοσιεύσεις: 63
Εγγραφή: Σάβ Μαρ 20, 2010 12:00 am
Τοποθεσία: Χολαργός, Ελλάδα
Επικοινωνία:

Re: Hellenico

Δημοσίευση από mariosal » Κυρ Μαρ 18, 2012 5:48 pm

NikosZ έγραψε:Παιδιά στο πρώτο 1,3 στο PC βγάζει σωστό outpout κι εκεί βγάζει λάθος WTF is going on?
Το πιθανότατο πάντα είναι ότι ο χρήστης έχει το πρόβλημα και όχι το σύστημα υποβολών. Επίσης βλέποντας ότι το boat έχει λυθεί από 75 άτομα μπορείς να βεβαιωθείς.

Έπειτα είναι αδύνατο να σε βοηθήσει κάποιος μυρίζοντας τα νύχια του. Πρέπει να ορίσεις ακριβώς το πρόβλημά σου ή να στείλεις κομμάτι του κώδικα.

Όταν κολλάς κάπου καλό θα ήταν να μη τρελαίνεις το forum. Κάνε και τον κόπο να διαβάσεις αυτό το κείμενο. http://www.catb.org/~esr/faqs/smart-questions.html
Spoiler: show
Μπορείς να δεις εδώ τις λύσεις μου αν πιστεύεις ότι είσαι τόσο απελπισμένος. https://github.com/mariosal/algo/tree/master/hellenico

Απάντηση