Σελίδα 2 από 3

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 12:40 pm
από dimitris
Ακριβώς userresu, είναι πολύ δύσκολο α) να συντηρηθεί και να διαβαστεί εύκολα μετά από καιρό, ακόμα και από εσένα τον ίδιο που το έγραψες β) κάποιος προγραμματιστής αρχάριος δεν θα επιλέξει το κώδικα σου σαν βοήθεια στο να δημιουργήσει καινούριο πρόγραμμα. Σου συνιστώ να γράφεις με σαφήνεια και πολλές φορές να χρησιμοποιείς και σχόλια.

Και κάτι ακόμα την storage class που χρησιμοποίησες "register" είναι εντελώς άχρηστη. Κάποτε το χρησιμοποούσαν σε στους παλιούς compilers για να αποδεσμεύουν την μεταβλητή από την μνήμη τώρα οι καινούριοι compilers δεν έχουν τέτοιο πρόβλημα. Άποψη μου :)

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 12:58 pm
από thelastnicholas
Το keyword register δίνει εντολή να τοποθετηθεί η μεταβλητή όχι στην μνήμη Ram αλλά σε έναν καταχωρητή του επεξεργαστή επειδή χρησιμοποιείται πολύ συχνα. Ο μεταγλωττιστής όμως αγνοεί το χαρακτηρισμό αυτό α) αν παρακάτω χρησιμοποιείται η διεύθυνση της μεταβλητής (οι καταχωρητές δεν ανήκουν στην κύρια μνήμη και δεν έχουν διευθυνσεις) β) αν ο προγραμματιστης θέλει 20 (!!!) καταχωρητές για το πρόγραμμα του (και φυσικά δεν υπάρχει τόσο χώρος).

Στην πράξη ομως δεν υπάρχει διαφορά (ακόμη και αν ο μεταγλωττιστής λάβει υπ όψιν ότι του λέει ο χρήστης) ή μπορεί ακόμη και να υπάρξει μείωση της ταχύτητας (σε ορισμένες περιπτώσεις).

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

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 1:08 pm
από kernelpanic
20; Το σαραβαλάκι μου έχει 128kilo.
Ευχαριστώ για τη συμβουλή μη συνύπαρξης * και register.
Είχα ήδη δει ότι χρησιμοποιούν -Ο2 στον Τάλω, αλλά το κράτησα για πειράματα στην πρακτική χρήση :)

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 1:12 pm
από Artakserksis
in.txt και out.txt; Λυπάμαι c13, αλλά μάλλον έκανες βλακειούλα :?

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 2:05 pm
από thelastnicholas
Δε αναφέρομαι στην cache αλλά στους καταχωρητές!
Νομίζω ότι οι x86 έχουν 16 registers και οι x86-64 32

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 2:10 pm
από kernelpanic
Ωχ... :oops: :lol:

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 2:11 pm
από stathis
Artakserksis, φαντάζομαι πως μόνο εδώ ποόσταρε την έκδοση με τα txt, αλλιώς δε θα δεχόταν τη λύση του το Qenseo. :P

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:13 pm
από c13
όχι παιδιά αυτή είναι η δοκιμαστική έκδοση για τα windows που είχα φτιάξει... απλά την άλλη την τελική έκδοση είχα στο Linux και για να μην κανω restart για να ποσταρω την σωστή (ήμουν συνδεδεμένος από windows εκείνη την στιγμή) δημοσίευσα την δοκιμαστική. εξάλου αν δημοσίευα αυτήν με τα txt δεν θα την έβγαζε σωστή το σύστημα όταν την υπέβαλα... έτσι δεν είναι?

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:16 pm
από kernelpanic
Ε τώρα...να'χουμε να λέμε. :P

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:17 pm
από marios_kant
Δεν θα χρειαζόταν να κάνεις restart! Απλα το .txt θα έσβηνες!

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:21 pm
από c13
δεν το πρόσεξα ρε παιδιά εντάξει... δεν έγινε και τίποτα

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:26 pm
από marios_kant
Πώς δεν το πρόσεξες;;!! Αφού λες:
c13 έγραψε:απλά την άλλη την τελική έκδοση είχα στο Linux και για να μην κανω restart για να ποσταρω την σωστή (ήμουν συνδεδεμένος από windows εκείνη την στιγμή) δημοσίευσα την δοκιμαστική.
που δείχνει πως το πρόσεξες!!!

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:27 pm
από kernelpanic
Μη το σκοτώνετε το θέμα τόσο νωρις... μπορούμε να το ανυψώσουμε στο ουσιωδέστερο φιλοσοφικό και ψυχολογικό θέμα του αιώνα, και να κερδίσουμε το Νόμπελ ομαδικής παράκρουσης :P :lol:

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 4:40 pm
από c13
κάτι είναι και αυτό :lol:

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 9:39 pm
από thetrojan01
και η δική μου (Γλώσσα: C)

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

/* 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);
}
Η χρήση του register, όπως έκανε και ο kernelpanic δίνει ταχύτητα στην προσπέλαση των μεταβλητών;

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 9:51 pm
από kernelpanic
Απ'ότι είπαν και τα παιδιά, μάλλον όχι :oops:

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Σάβ Φεβ 14, 2009 10:02 pm
από thetrojan01
kk. Καλή συνέχεια στην επόμενη φάση (ps. το forum εχει ανάψει σήμερα!)

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Κυρ Φεβ 15, 2009 1:14 am
από petermer
Ορίστε και η δικιά μου...

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

/*
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);
                                
                
}

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Κυρ Φεβ 15, 2009 2:51 am
από Ελεύθεροσκοπευτής
θα δωσετε τα φώτα σας φιλτάτοι συνδιαγωνιζόμενοι με μερικά χρόνια εμπειρίας σε έναν σχετικά νηουμπη τόσο στον προγραμματισμό, όσο στην σιπλασπλασ, όσο και στο πιντιπι;;; :roll:

δης ιζ μαη κόουντ:

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

/*
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στος+) :oops: :oops:

Re: Λύσεις της Α Φασης!

Δημοσιεύτηκε: Κυρ Φεβ 15, 2009 2:13 pm
από kernelpanic
Αντί να τα βάλεις ένα ένα στο αρχείο(L*C ξεχωριστές μηχανικές εγγραφές, τρώνε κάμποσα ms) γράψε πίνακες που τους έχεις φτιάξει 1 φορά τον καθένα.(L εγγραφές)
Το k=k είναι άχρηστο.
Άλλαξε τα (k%2==1) με (k%2)που θα δώσει 1, και ένα else για τους ζυγούς.
Άλλαξε το if(y%2==0) με μια bool μεταβλητή που θα'ναι true αν έιναι ζυγός.

Και γώ νουμπάκι είμαι, αλλά τα'χα συναντήσει αυτά πριν την τελική έκδοση.

Βρες ένα καλό βιβλίο για την c++ και θα βρεις πολλά γρήγορα κόλπα ;)