Λύσεις της Α Φασης!
Re: Λύσεις της Α Φασης!
Ακριβώς userresu, είναι πολύ δύσκολο α) να συντηρηθεί και να διαβαστεί εύκολα μετά από καιρό, ακόμα και από εσένα τον ίδιο που το έγραψες β) κάποιος προγραμματιστής αρχάριος δεν θα επιλέξει το κώδικα σου σαν βοήθεια στο να δημιουργήσει καινούριο πρόγραμμα. Σου συνιστώ να γράφεις με σαφήνεια και πολλές φορές να χρησιμοποιείς και σχόλια.
Και κάτι ακόμα την storage class που χρησιμοποίησες "register" είναι εντελώς άχρηστη. Κάποτε το χρησιμοποούσαν σε στους παλιούς compilers για να αποδεσμεύουν την μεταβλητή από την μνήμη τώρα οι καινούριοι compilers δεν έχουν τέτοιο πρόβλημα. Άποψη μου
Και κάτι ακόμα την storage class που χρησιμοποίησες "register" είναι εντελώς άχρηστη. Κάποτε το χρησιμοποούσαν σε στους παλιούς compilers για να αποδεσμεύουν την μεταβλητή από την μνήμη τώρα οι καινούριοι compilers δεν έχουν τέτοιο πρόβλημα. Άποψη μου
-
- Δημοσιεύσεις: 74
- Εγγραφή: Παρ Φεβ 13, 2009 8:07 pm
Re: Λύσεις της Α Φασης!
Το keyword register δίνει εντολή να τοποθετηθεί η μεταβλητή όχι στην μνήμη Ram αλλά σε έναν καταχωρητή του επεξεργαστή επειδή χρησιμοποιείται πολύ συχνα. Ο μεταγλωττιστής όμως αγνοεί το χαρακτηρισμό αυτό α) αν παρακάτω χρησιμοποιείται η διεύθυνση της μεταβλητής (οι καταχωρητές δεν ανήκουν στην κύρια μνήμη και δεν έχουν διευθυνσεις) β) αν ο προγραμματιστης θέλει 20 (!!!) καταχωρητές για το πρόγραμμα του (και φυσικά δεν υπάρχει τόσο χώρος).
Στην πράξη ομως δεν υπάρχει διαφορά (ακόμη και αν ο μεταγλωττιστής λάβει υπ όψιν ότι του λέει ο χρήστης) ή μπορεί ακόμη και να υπάρξει μείωση της ταχύτητας (σε ορισμένες περιπτώσεις).
Εξάλλου τα προγράμματα που τρέχουν στο Talos μεταγλωττίζονται με βελτιστοποιήσεις όποτε αν ο μεταγλωττιστής δει κάποια μεταβλητή η οποία θα επιταχύνει το πρόγραμμα αν τοποθετηθεί σε καταχωρητή το κάνει.
Στην πράξη ομως δεν υπάρχει διαφορά (ακόμη και αν ο μεταγλωττιστής λάβει υπ όψιν ότι του λέει ο χρήστης) ή μπορεί ακόμη και να υπάρξει μείωση της ταχύτητας (σε ορισμένες περιπτώσεις).
Εξάλλου τα προγράμματα που τρέχουν στο Talos μεταγλωττίζονται με βελτιστοποιήσεις όποτε αν ο μεταγλωττιστής δει κάποια μεταβλητή η οποία θα επιταχύνει το πρόγραμμα αν τοποθετηθεί σε καταχωρητή το κάνει.
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
20; Το σαραβαλάκι μου έχει 128kilo.
Ευχαριστώ για τη συμβουλή μη συνύπαρξης * και register.
Είχα ήδη δει ότι χρησιμοποιούν -Ο2 στον Τάλω, αλλά το κράτησα για πειράματα στην πρακτική χρήση
Ευχαριστώ για τη συμβουλή μη συνύπαρξης * και register.
Είχα ήδη δει ότι χρησιμοποιούν -Ο2 στον Τάλω, αλλά το κράτησα για πειράματα στην πρακτική χρήση
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
-
- Δημοσιεύσεις: 106
- Εγγραφή: Δευ Δεκ 15, 2008 3:02 pm
-
- Δημοσιεύσεις: 74
- Εγγραφή: Παρ Φεβ 13, 2009 8:07 pm
Re: Λύσεις της Α Φασης!
Δε αναφέρομαι στην cache αλλά στους καταχωρητές!
Νομίζω ότι οι x86 έχουν 16 registers και οι x86-64 32
Νομίζω ότι οι x86 έχουν 16 registers και οι x86-64 32
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
Ωχ...
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
-
- Site Admin
- Δημοσιεύσεις: 381
- Εγγραφή: Κυρ Δεκ 14, 2008 6:01 pm
- Τοποθεσία: Αθήνα
- Επικοινωνία:
Re: Λύσεις της Α Φασης!
Artakserksis, φαντάζομαι πως μόνο εδώ ποόσταρε την έκδοση με τα txt, αλλιώς δε θα δεχόταν τη λύση του το Qenseo.
Re: Λύσεις της Α Φασης!
όχι παιδιά αυτή είναι η δοκιμαστική έκδοση για τα windows που είχα φτιάξει... απλά την άλλη την τελική έκδοση είχα στο Linux και για να μην κανω restart για να ποσταρω την σωστή (ήμουν συνδεδεμένος από windows εκείνη την στιγμή) δημοσίευσα την δοκιμαστική. εξάλου αν δημοσίευα αυτήν με τα txt δεν θα την έβγαζε σωστή το σύστημα όταν την υπέβαλα... έτσι δεν είναι?
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
Ε τώρα...να'χουμε να λέμε.
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
- marios_kant
- Δημοσιεύσεις: 18
- Εγγραφή: Παρ Φεβ 13, 2009 12:28 am
Re: Λύσεις της Α Φασης!
Δεν θα χρειαζόταν να κάνεις restart! Απλα το .txt θα έσβηνες!
Re: Λύσεις της Α Φασης!
δεν το πρόσεξα ρε παιδιά εντάξει... δεν έγινε και τίποτα
- marios_kant
- Δημοσιεύσεις: 18
- Εγγραφή: Παρ Φεβ 13, 2009 12:28 am
Re: Λύσεις της Α Φασης!
Πώς δεν το πρόσεξες;;!! Αφού λες:
που δείχνει πως το πρόσεξες!!!c13 έγραψε:απλά την άλλη την τελική έκδοση είχα στο Linux και για να μην κανω restart για να ποσταρω την σωστή (ήμουν συνδεδεμένος από windows εκείνη την στιγμή) δημοσίευσα την δοκιμαστική.
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
Μη το σκοτώνετε το θέμα τόσο νωρις... μπορούμε να το ανυψώσουμε στο ουσιωδέστερο φιλοσοφικό και ψυχολογικό θέμα του αιώνα, και να κερδίσουμε το Νόμπελ ομαδικής παράκρουσης
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
Re: Λύσεις της Α Φασης!
κάτι είναι και αυτό
-
- Δημοσιεύσεις: 712
- Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm
Re: Λύσεις της Α Φασης!
και η δική μου (Γλώσσα: C)
Η χρήση του register, όπως έκανε και ο kernelpanic δίνει ταχύτητα στην προσπέλαση των μεταβλητών;
Κώδικας: Επιλογή όλων
/* LANG: C++
* TASK: Alexander
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int L=0, C=0, i, j; /* L=lines C=chars per line*/
char prevc='\0', plinec;
FILE *fp;
fp=fopen("Alexander.in", "r");
fscanf(fp, "%d %d %c", &L, &C, &prevc);
fclose(fp);
if(prevc=='P') prevc = 'V';
else prevc = 'P';
plinec = prevc;
fp=fopen("Alexander.out", "w");
for(j=0; j<L; j++)/*for every line*/
{
prevc = plinec; /*the previous character is count as the beginning of the previous line.*/
if(prevc == 'P')
{
plinec = 'V';
for(i=0; i<C; i=i+2) fprintf(fp, "VP");
}
else
{
plinec = 'P';
for(i=0; i<C; i=i+2) fprintf(fp, "PV");
}
if(C-i > 0)
{
if(prevc=='P') fprintf(fp, "V");
else fprintf(fp, "P");
}
fprintf(fp, "\n");
}
fclose(fp);
return(0);
}
svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
Απ'ότι είπαν και τα παιδιά, μάλλον όχι
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
-
- Δημοσιεύσεις: 712
- Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm
Re: Λύσεις της Α Φασης!
kk. Καλή συνέχεια στην επόμενη φάση (ps. το forum εχει ανάψει σήμερα!)
svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.
Re: Λύσεις της Α Φασης!
Ορίστε και η δικιά μου...
Κώδικας: Επιλογή όλων
/*
LANG: C
TASK: Alexander
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *in, *out;
int i=0, lines, cols, sw, loopy;
char *pv, *vp, first;
in = fopen("Alexander.in","r");
fscanf(in,"%d %d\n%c",&lines,&cols,&first);
if((lines%2) != 0)
{
loopy = (lines/2) + 1;
}else{
loopy = (lines/2);
}
fclose(in);
pv = (char *) malloc ((cols+1)*sizeof(char));
vp = (char *) malloc ((cols+1)*sizeof(char));
sw = 0;
for(i=0;i<cols;i++)
{
if((sw%2) == 0)
{
strcat(pv,"P");
strcat(vp,"V");
sw++;
}
else
{
strcat(pv,"V");
strcat(vp,"P");
sw++;
}
}
if(first == 'P')//Switch initialisation
{
sw = 0;
}else{
sw = 1;
}
out = fopen("Alexander.out","w");//GRafw twra
for(i=0;i<loopy;i++)
{
if(sw == 0)
{
fputs(pv,out);
fprintf(out,"\n");
if(i != (loopy-1))
{
fputs(vp,out);
fprintf(out,"\n");
}else if(i == (loopy-1) && (lines%2) == 0)
{
fputs(vp,out);
fprintf(out,"\n");
}
}else{
fputs(vp,out);
fprintf(out,"\n");
if(i != (loopy-1))
{
fputs(pv,out);
fprintf(out,"\n");
}else if(i == (loopy-1) && (lines%2) == 0)
{
fputs(pv,out);
fprintf(out,"\n");
}
}
}
fclose(out);
return(0);
}
-
- Δημοσιεύσεις: 33
- Εγγραφή: Πέμ Ιαν 29, 2009 1:57 am
Re: Λύσεις της Α Φασης!
θα δωσετε τα φώτα σας φιλτάτοι συνδιαγωνιζόμενοι με μερικά χρόνια εμπειρίας σε έναν σχετικά νηουμπη τόσο στον προγραμματισμό, όσο στην σιπλασπλασ, όσο και στο πιντιπι;;;
δης ιζ μαη κόουντ:
γίνεται να μου πείτε τι θα μπορούσα να έχω κάνει ωστε να βγει ολίγον τι γρηγορότερο το πρόγραμμα;;;
(πέρασα, αλλά 100στος+)
δης ιζ μαη κόουντ:
Κώδικας: Επιλογή όλων
/*
LANG: C++
TASK: Alexander
*/
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
#include <string>
using namespace std;
int main() {
int x,y,k;
char firstc;
ifstream file_in;
ofstream file_out;
file_in.open ("Alexander.in");
file_in >> x;
file_in >> y;
file_in >> firstc;
if(firstc=='P') {
k=0;
}
if(firstc=='V') {
k=1;
}
file_in.close();
file_out.open ("Alexander.out");
for(int a=0;a<x;a++) {
for(int b=0;b<y;b++) {
if(k%2==0) {
file_out <<"P";
}
if(k%2==1) {
file_out <<"V";
}
k++;
}
file_out << "\n";
if(y%2==0) {
k++;
}
if(y%2==1) {
k=k;
}
}
file_out.close();
return(0);
}
(πέρασα, αλλά 100στος+)
- kernelpanic
- Δημοσιεύσεις: 404
- Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
- Τοποθεσία: Αθήνα
Re: Λύσεις της Α Φασης!
Αντί να τα βάλεις ένα ένα στο αρχείο(L*C ξεχωριστές μηχανικές εγγραφές, τρώνε κάμποσα ms) γράψε πίνακες που τους έχεις φτιάξει 1 φορά τον καθένα.(L εγγραφές)
Το k=k είναι άχρηστο.
Άλλαξε τα (k%2==1) με (k%2)που θα δώσει 1, και ένα else για τους ζυγούς.
Άλλαξε το if(y%2==0) με μια bool μεταβλητή που θα'ναι true αν έιναι ζυγός.
Και γώ νουμπάκι είμαι, αλλά τα'χα συναντήσει αυτά πριν την τελική έκδοση.
Βρες ένα καλό βιβλίο για την c++ και θα βρεις πολλά γρήγορα κόλπα
Το k=k είναι άχρηστο.
Άλλαξε τα (k%2==1) με (k%2)που θα δώσει 1, και ένα else για τους ζυγούς.
Άλλαξε το if(y%2==0) με μια bool μεταβλητή που θα'ναι true αν έιναι ζυγός.
Και γώ νουμπάκι είμαι, αλλά τα'χα συναντήσει αυτά πριν την τελική έκδοση.
Βρες ένα καλό βιβλίο για την c++ και θα βρεις πολλά γρήγορα κόλπα
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.