Hellenico
Re: Hellenico
δλδ να μετατρέπω την είσοδο σε double κι στο τέλος να το ξανακάνω int?
Re: Hellenico
Μόνο μία πραγματική μεταβλητή θα χρειαστείς για να κρατήσεις το αποτέλεσμα ( float ή double ). Αφού βρεις τον αριθμό , στρογγυλοποιείς και τυπώνεις το ακέραιο μέρος.NikosZ έγραψε:δλδ να μετατρέπω την είσοδο σε double κι στο τέλος να το ξανακάνω int?
Re: Hellenico
το δοκίμασα δεν έπιασε... 1/10 πάλι
- zaxeilasfc
- Δημοσιεύσεις: 118
- Εγγραφή: Δευ Οκτ 18, 2010 8:15 pm
- Τοποθεσία: Macintosh HD
Re: Hellenico
Νίκο θα σε συμβούλευα να γράφεις πιο όμορφο κώδικα.. Με το που ξεκίνησα να τον διαβάζω τον παράτησα... Λογικά, όπως μας λες, το πρόβλημα είναι στην στρογγυλοποίηση.. δήλωσέ τον float ή double και μετα τον στρογγυλοποιείς μέσω setprecision (μορφοποίηση εξόδου, για c++) αναλόγως πως το χρειάζεται.
Re: Hellenico
Το ξαναέγραψα από την αρχή , πάλι τα ίδια όμως...
Κώδικας: Επιλογή όλων
#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;
}
Re: Hellenico
το setprecision(2) δν κάνει στρογγυλοποιησεί? στα testcase που ΄έκανα , έκανε γιαυτό..
Re: Hellenico
Όχι , δεν κάνει αυτό που θες.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>
Re: Hellenico
ευχαριστώ για την συμβουλή αλλά αλλού είναι το πρόβλημα πάλι 1/10..
- zaxeilasfc
- Δημοσιεύσεις: 118
- Εγγραφή: Δευ Οκτ 18, 2010 8:15 pm
- Τοποθεσία: Macintosh HD
Re: Hellenico
@Sotiri εγώ χρησιμοποιώ "fout<<setprecision (0)<<fixed<<'μεταβλητή' και λειτουργεί κανονικά...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>
Νίκο δεν έχω την υπομονή να δω την λύση σου αλλά εγώ προσωπικά αλλιώς το έχω λύσει... καμία σχέση...
- Spoiler: show
Re: Hellenico
zaxeilasfc έγραψε:
- Spoiler: show
- Spoiler: show
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
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
Δεν εννοώ κάτι το extreme. αν βοηθήσω παραπάνω δίνω ουσιαστικά την λύση (την δική μου τουλάχιστον) αν και αποδείχθηκε οτι λύνεται και με άλλο τρόπο.
Αυτό που έχω στο μυαλό μου σίγουρα είναι το τι ισουται η ταχύτητα. Το θέμα δεν είναι όμως να λύσεις το θέμα με δεδομένα τα 2 αρχεία αλλά των 1<=Ν<=100 αρχείων.
Με μια δομή, έστω download:
struct download
{
int taxitita;
int xronos;
float xronos1;
};
μπορείς κάλλιστα να αντιμετωπίσεις το πρόβλημα.
Φοβάμαι να γίνω σαφέστερος λόγο του οτι είμαστε σε δημόσια συζήτηση. Αν θέλεις κάτι παραπάνω στείλε μου μήνυμα.
EDIT: //Η δομή μπορεί να είναι παρόμοια. μη σκέφτεσε το όνομα των μεταβλητών. Σκεψου πως θα τις χρειαστείς και τι τις χρειάζεσαι.
-
- Δημοσιεύσεις: 2
- Εγγραφή: Τρί Νοέμ 08, 2011 7:46 pm
Re: Hellenico
Παιδιά είμαι στην ενότητα 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;
}
- Κηπουρίδης
- Δημοσιεύσεις: 397
- Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm
Re: Hellenico
Όταν κάνεις τις πράξεις w[j+z] πιθανότατα να ξεφεύγεις από τα όρια του πίνακά σου.
Δοκίμασε να βάλεις πριν από κάθε τέτοια πράξη, μια if που να βεβαιώνει ότι ο πίνακας σου έχει αρκετές θέσεις ( if ( j+z < n ) ) και ξαναπές μας.
Πάντα να δηλώνεις τους πίνακες με λίγες παραπάνω θέσεις από ότι σε λέει το πρόβλημα, πχ w[n+10].
Άλλος τρόπος να λύσεις το πρόβλημα θα ήταν να βάλεις στην θέση w[n] ( που σε εσένα δεν υπάρχει, πρέπει να μεγαλώσεις τον πίνακα ) μια τεράστια τιμή ( πρακτικά σε αυτό το πρόβλημα, η τεράστια τιμή είναι 9001 ) ώστε να μη γίνει ποτέ η αντιμετάθεση με αυτή την τιμή, αλλά και το j+z σου να μη φτάνει ποτέ σε τιμές μεγαλύτερες του n, άρα θα περίττευαν και οι if.
Αν χρειαστείς βοήθεια στείλε pm.
Δοκίμασε να βάλεις πριν από κάθε τέτοια πράξη, μια if που να βεβαιώνει ότι ο πίνακας σου έχει αρκετές θέσεις ( if ( j+z < n ) ) και ξαναπές μας.
Πάντα να δηλώνεις τους πίνακες με λίγες παραπάνω θέσεις από ότι σε λέει το πρόβλημα, πχ w[n+10].
Άλλος τρόπος να λύσεις το πρόβλημα θα ήταν να βάλεις στην θέση w[n] ( που σε εσένα δεν υπάρχει, πρέπει να μεγαλώσεις τον πίνακα ) μια τεράστια τιμή ( πρακτικά σε αυτό το πρόβλημα, η τεράστια τιμή είναι 9001 ) ώστε να μη γίνει ποτέ η αντιμετάθεση με αυτή την τιμή, αλλά και το j+z σου να μη φτάνει ποτέ σε τιμές μεγαλύτερες του n, άρα θα περίττευαν και οι if.
Αν χρειαστείς βοήθεια στείλε pm.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
-
- Δημοσιεύσεις: 2
- Εγγραφή: Τρί Νοέμ 08, 2011 7:46 pm
Re: Hellenico
Ευχαριστώ πολύ. Αυτό ήταν το λάθος. Όταν έβαλα ( if ( j+z < n ) ) πήρα 10/10!
- Κηπουρίδης
- Δημοσιεύσεις: 397
- Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm
Re: Hellenico
Άντε, καλή συνέχεια αγόρι.
Κράτα ως καλή συνήθεια να βάζεις και μερικές άδειες θέσεις στο τέλος του πίνακα για να μην έχεις τέτοια προβλήματα.
Κράτα ως καλή συνήθεια να βάζεις και μερικές άδειες θέσεις στο τέλος του πίνακα για να μην έχεις τέτοια προβλήματα.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Re: Hellenico
ΟΚ, διορθώθηκε η εκφώνηση, thanks.
Re: Hellenico
Βασικά με τον ίδιο λογαριασμό που σου δόθηκε στο Pdp πρέπει να συνδεθείς και στο Hellenico για να κάνεις την υποβολή σου, και όσον αφορά τα Linux και την gpc-Pascal δεν παίζει ρόλο το λειτουργικό 99% είναι ίδια με την free-pascal που χρησιμοποιούσα και στα Windows... Υ.γ. είμαστε σε λάθος topic
- Spoiler: show
Re: Hellenico
Γίνεται να φτιαχτεί υποσελίδα στο http://www.hellenico.gr/ που να περιέχει όλα τα παλιότερα θέματα του ΠΔΠ; ( και να μπορούμε κατόπιν να κάνουμε και υποβολή λύσεων )
Re: Hellenico
Παιδιά στο πρώτο 1,3 στο PC βγάζει σωστό outpout κι εκεί βγάζει λάθος WTF is going on?
- mariosal
- Δημοσιεύσεις: 63
- Εγγραφή: Σάβ Μαρ 20, 2010 12:00 am
- Τοποθεσία: Χολαργός, Ελλάδα
- Επικοινωνία:
Re: Hellenico
Το πιθανότατο πάντα είναι ότι ο χρήστης έχει το πρόβλημα και όχι το σύστημα υποβολών. Επίσης βλέποντας ότι το boat έχει λυθεί από 75 άτομα μπορείς να βεβαιωθείς.NikosZ έγραψε:Παιδιά στο πρώτο 1,3 στο PC βγάζει σωστό outpout κι εκεί βγάζει λάθος WTF is going on?
Έπειτα είναι αδύνατο να σε βοηθήσει κάποιος μυρίζοντας τα νύχια του. Πρέπει να ορίσεις ακριβώς το πρόβλημά σου ή να στείλεις κομμάτι του κώδικα.
Όταν κολλάς κάπου καλό θα ήταν να μη τρελαίνεις το forum. Κάνε και τον κόπο να διαβάσεις αυτό το κείμενο. http://www.catb.org/~esr/faqs/smart-questions.html
- Spoiler: show