Ἀρχεῖο γιὰ τὴν κατηγορία ‘Source Codes (Our members)’
Kino Project (Java Language)
Παρακάτω είναι μια άσκηση που είχα για το εργαστήριο της Java.
Author: Αναστάσιος Ξουζαφείρης (aka r1nu-) || Email: anastasis.ksouzafeiris@gmail.com
Το source code μπορείτε να το βρείτε στο κάτω link:
Factorial Algorithm (C++ Language)
Εδώ είναι μια δική μου εκδοχή του παραγoντικού και μιας και έχουμε καλοκαίρη ειπά αντι για τα συνηθησμένα να γράψω σε C++. Μια γλώσσα που δεν γνωριζώ πολύ καλα αλλα πιστεύω οτι τουλάχιστον μεχρι ένα επιπεδο δεν διαφέρει απο την C. Τέλος πάντων ας πάμε στον κώδικα δεν ειναι κάτι δύσκολο.
Author: Αναστάσιος Ξουζαφείρης (aka r1nu-) || Email: anastasis.ksouzafeiris@gmail.com
Παρακάτω παραθέτω τί ειναι παραγοντικό και με εναν ψευδοκώδικα απο το βιβλίο ‘Αλγόριθμοι, Δεδομένα και Διαδικασίες του Οικονομικου Πανεπιστημίου Αθηνών.’
“Παραγοντικός του Ν στο Χ
Πριν: Ν: φυσικός αριθμος
Μετά: Χ = Ν!
Ψευδοκώδικας:
Είσοδος:
Ν : Φυσικός αριθμός
Εξοδος:
Χ : Φυσικός αριθμός
Κ : Φυσικός αριθμός
Χ <- 1
Κ <- Ν
Οσο Κ > 0
Χ <- Χ * Κ
Κ <- Κ - 1
Τέλος (όσο)
Κώδικας σε C++:
#include <iostream.h> #include <stdint.h> //Thn stdint.h tin xrisimopoioume giati i 'long long' den // ypostirizete apo tin ISO C++. using namespace std; unsigned long long factorial(unsigned long long i) { unsigned long long sum = 1; while(i >= 1) { sum = sum*i; i--; } return sum; } int main() { unsigned long long i = 32; cout << i << "Factorial = " << factorial(i) << endl; return 0; }
Binary Search [Algorithm] (Pseudo-Language)
Εδώ έχουμε έναν αλγόριθμο ο οποίος υλοποίει την διαδικασία Δυαδικής Αναζήτης. Είναι σε ψευδογλώσσα γραμμένο διότι είναι κάτι το οποίο πολλοί ψάχνουν για εργασίες που ζητούνται απο τα πανεπιστήμια κα ι έτσι το εγγραψα σε ψευδογλώσσα για να μπορεί ο καθένας να το μετατρέψει στην γλώσσα που θέλει και πάνω από όλα να καταλαβαίνει και το τί γίνεται.
Author: Αναστάσιος Ξουζαφείρης (aka r1nu-) || Email: anastasis.ksouzafeiris@gmail.com
orizw pin[10], num_search, i, low, high, middle,result //Akeraies metablites orizw j= Boolean , found = Boolean //Boolean metablites low = 1 //Arxh pinaka high = 10 //Telos pinaka printf (“Dwste 10 arithmous”); for i = 1 to 10 scanf (“%d”, pin[i]); //Gemizoume ton pinaka next i printf (“Twra dwste ton arithmo pou thelete na anazithsete.”); scanf (“%d”, num_search); j= TRUE //Bazoume tin j = TRUE gia na mpei stin epanalipsi while (j == TRUE) //H while ulopoiei ton algorithmo tis quick sort j = FALSE for i = 1 to 9 if pin[i] < pin [j] then pin[j] --> pin[i]; j = TRUE; end_if next i wend found = FALSE; while (top <= bottom) AND (found == FALSE) middle = low + (high – low) / 2 //Edw pairnoume to plithos twn stoixeiwn pou briskontai stin perioxi pou psaxnoume. if (pin[middle] == num_search) then //Elegxoume mipws to num_search einai kathe fora idio me // to pin[middle] se kathe epanalipsi H an petuxoume tin teleutaia timi pou tha parei to pin[middle] peftontas // stin periptwsh. result --> pin[middle] //Bazoume tin pin[middle] stin result. found = TRUE; //An brethei tin kanoume TRUE gia na min ksanampei. else_if (pin[middle] < num_search) //An einai mikrotero apo tin pin[middle] tote psaxnei // sta mikrotera pin[i] . Auti einai idiotita tis duadikis anazhthshs logo tou oti o pinakas einai taksinomimenos. // Kai giauto einai kai pio grigori. low = middle – 1; else high = middle + 1; //Alliws psaxnei sto panw orio tou pinaka diladi sta megalutera pin[i]. end_if wend if (found == FALSE) then //An einai FALSE tote simainei oti den brethike diladi oti // ksefuge apo ta oria h while kai den brethike mesa ston pinaka to num_search. printf (“Den Brethike!”); else printf (“To stoixeio brethike sti thesi : %d, me timi %d”, middle,result); end_if
Char Frequency [ASCII] (C Language)
Documentation:
Ο παρακάτω κώδικας είναι μια απλουστευμένη υλοποίηση μιας ενδιαφέρουσας ιδέας. Υπολογίζει τη συχνότητα εμφάνισης χαρακτήρων του λατινικού αλφαβήτου σε ένα δοθέν κείμενο. Και τυπώνει το αποτέλεσμα σε ένα ascii γράφημα, όπου στον οριζόντιο άξονα είναι τα γράμματα καιστον κατακόρυφο οι συχνότητες εμφάνισης.
Author: Codemasters.Team
Output:
$ gcc charfreq.c -o charfreq
$ cat > foo
Codemasters is a greeeat team
$ ./charfreq foo
6| *
5| *
4| * *
3| * * **
2| * * * ***
1| * *** * * * * ***
ABCDEFGHIJKLMNOPQRSTUVWXYZ
$
<span style=’color:#7f0055; ‘>#</span><span style=’color:#7f0055; ‘>include </span><span style=’color:#2a00ff; ‘><</span><span style=’color:#3f3fbf; ‘>stdio.h</span><span style=’color:#2a00ff; ‘>></span>
<span style=’color:#7f0055; ‘>#</span><span style=’color:#7f0055; ‘>include </span><span style=’color:#2a00ff; ‘><</span><span style=’color:#3f3fbf; ‘>stdlib.h</span><span style=’color:#2a00ff; ‘>></span>
<span style=’color:#7f0055; font-weight:bold; ‘>int</span> <span style=’color:#7f0055; font-weight:bold; ‘>main</span>(<span style=’color:#7f0055; font-weight:bold; ‘>int</span> argc, <span style=’color:#7f0055; font-weight:bold; ‘>char</span> *argv[])
{
<span style=’color:#3f7f59; ‘>/*</span>
<span style=’color:#3f7f59; ‘> * When we partially initialize an array, C automatically</span>
<span style=’color:#3f7f59; ‘> * initializes the rest of it to 0, NULL, etc, depending</span>
<span style=’color:#3f7f59; ‘> * on the element type of the array. That said, the</span>
<span style=’color:#3f7f59; ‘> * following is adequate:</span>
<span style=’color:#3f7f59; ‘> */</span>
<span style=’color:#7f0055; font-weight:bold; ‘>unsigned</span> <span style=’color:#7f0055; font-weight:bold; ‘>int</span> freq[26] = { 0 }; <span style=’color:#3f7f59; ‘>/* Frequencies for ‘A’ to ‘Z’. */</span>
<span style=’color:#7f0055; font-weight:bold; ‘>unsigned</span> <span style=’color:#7f0055; font-weight:bold; ‘>int</span> i, j, len, maxf;
<span style=’color:#7f0055; font-weight:bold; ‘>int</span> c;
<span style=’color:#7f0055; font-weight:bold; ‘>FILE</span> *fp;
<span style=’color:#3f7f59; ‘>/* Check argument count. */</span>
<span style=’color:#7f0055; font-weight:bold; ‘>if</span> (argc != 2) {
fprintf(<span style=’color:#7f0055; font-weight:bold; ‘>stderr</span>, <span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>Usage: </span><span style=’color:#2a00ff; ‘>%s</span><span style=’color:#2a00ff; ‘> file</span><span style=’color:#2a00ff; ‘>\n</span><span style=’color:#2a00ff; ‘>”</span>, argv[0]);
exit(EXIT_FAILURE);
}
<span style=’color:#3f7f59; ‘>/* Open file for reading. */</span>
<span style=’color:#7f0055; font-weight:bold; ‘>if</span> ((fp = fopen(argv[1], <span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>r</span><span style=’color:#2a00ff; ‘>”</span>)) == <span style=’color:#7f0055; font-weight:bold; ‘>NULL</span>) {
perror(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>fopen</span><span style=’color:#2a00ff; ‘>”</span>);
exit(EXIT_FAILURE);
}
<span style=’color:#3f7f59; ‘>/* Count frequencies. */</span>
<span style=’color:#7f0055; font-weight:bold; ‘>while</span> ((c = fgetc(fp)) != <span style=’color:#7f0055; font-weight:bold; ‘>EOF</span>) {
c = toupper(c);
<span style=’color:#7f0055; font-weight:bold; ‘>if</span> (c >= <span style=’color:#2a00ff; ‘>’A'</span> && c <= <span style=’color:#2a00ff; ‘>’Z'</span>)
freq[c - <span style='color:#2a00ff; '>'A'</span>]++;
}
<span style=’color:#3f7f59; ‘>/* Calculate size of array. */</span>
len = <span style=’color:#7f0055; font-weight:bold; ‘>sizeof</span> freq / <span style=’color:#7f0055; font-weight:bold; ‘>sizeof</span> *freq;
<span style=’color:#3f7f59; ‘>/* Get max frequency. */</span>
maxf = freq[0];
<span style=’color:#7f0055; font-weight:bold; ‘>for</span> (i = 1; i < len; i++)
<span style=’color:#7f0055; font-weight:bold; ‘>if</span> (freq[i] > maxf)
maxf = i;
<span style=’color:#3f7f59; ‘>/* Print frequencies */</span>
i = maxf;
<span style=’color:#7f0055; font-weight:bold; ‘>for</span> (i = freq[maxf]; i > 0; i–) {
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>%3u</span><span style=’color:#2a00ff; ‘>| </span><span style=’color:#2a00ff; ‘>”</span>, i);
<span style=’color:#7f0055; font-weight:bold; ‘>for</span> (j = 0; j < len; j++)
<span style=’color:#7f0055; font-weight:bold; ‘>if</span> (freq[j] >= i)
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>*</span><span style=’color:#2a00ff; ‘>”</span>);
<span style=’color:#7f0055; font-weight:bold; ‘>else</span>
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘> </span><span style=’color:#2a00ff; ‘>”</span>);
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>\n</span><span style=’color:#2a00ff; ‘>”</span>);
}
<span style=’color:#3f7f59; ‘>/* Print letters */</span>
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘> </span><span style=’color:#2a00ff; ‘>”</span>);
<span style=’color:#7f0055; font-weight:bold; ‘>for</span> (i = 0; i < len; i++)
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>%c</span><span style=’color:#2a00ff; ‘>”</span>, (<span style=’color:#7f0055; font-weight:bold; ‘>char</span>)(<span style=’color:#2a00ff; ‘>’A'</span> + i));
printf(<span style=’color:#2a00ff; ‘>”</span><span style=’color:#2a00ff; ‘>\n</span><span style=’color:#2a00ff; ‘>”</span>);
<span style=’color:#3f7f59; ‘>/*</span>
<span style=’color:#3f7f59; ‘> * Close file.</span>
<span style=’color:#3f7f59; ‘> * Since we opened the file only for read, we assume</span>
<span style=’color:#3f7f59; ‘> * that it is safe to not check against the return value</span>
<span style=’color:#3f7f59; ‘> * of fclose().</span>
<span style=’color:#3f7f59; ‘> */</span>
(<span style=’color:#7f0055; font-weight:bold; ‘>void</span>)fclose(fp);
<span style=’color:#7f0055; font-weight:bold; ‘>return</span> EXIT_SUCCESS;
}
</pre>
#include <ctype.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { /* * When we partially initialize an array, C automatically * initializes the rest of it to 0, NULL, etc, depending * on the element type of the array. That said, the * following is adequate: */ unsigned int freq[26] = { 0 }; /* Frequencies for 'A' to 'Z'. */ unsigned int i, j, len, maxf; int c; FILE *fp; /* Check argument count. */ if (argc != 2) { fprintf(stderr, "Usage: %s file\n", argv[0]); exit(EXIT_FAILURE); } /* Open file for reading. */ if ((fp = fopen(argv[1], "r")) == NULL) { perror("fopen"); exit(EXIT_FAILURE); } /* Count frequencies. */ while ((c = fgetc(fp)) != EOF) { c = toupper(c); if (c >= 'A' && c <= 'Z') freq[c - 'A']++; } /* Calculate size of array. */ len = sizeof freq / sizeof *freq; /* Get max frequency. */ maxf = freq[0]; for (i = 1; i < len; i++) if (freq[i] > maxf) maxf = i; /* Print frequencies */ i = maxf; for (i = freq[maxf]; i > 0; i--) { printf("%3u| ", i); for (j = 0; j < len; j++) if (freq[j] >= i) printf("*"); else printf(" "); printf("\n"); } /* Print letters */ printf(" "); for (i = 0; i < len; i++) printf("%c", (char)('A' + i)); printf("\n"); /* * Close file. * Since we opened the file only for read, we assume * that it is safe to not check against the return value * of fclose(). */ (void)fclose(fp); return EXIT_SUCCESS; }
Excercises [Strings 1] (C Language)
Εδώ παραθέτω δυο εργασίες προόδου εργαστηριου που είχα στο μάθημα C Programming Language.
Author: Αναστάσιος Ξουζαφείρης (aka r1nu-) || Email: anastasis.ksouzafeiris@gmail.com
/***************************************************************** * O xrhsths eisagei mia frasi to polu 80 char, kai to programma * * emfanizei poses lekseis periexontai. * ****************************************************************/ #include <stdio.h> #include <string.h> #include <conio.h> int main(void) { char phrase[80]; int inword=0,count=0,i; gets(phrase); for(i=0;i<=strlen(phrase)-1;i++) if(phrase[i]!=' ') { if(inword==0) { inword=1; count++; } } else if(inword==1) inword=0; printf("Count words=%d",count); } 2) /********************************************************* * Dhmiourgiste programma to opoio dexetai mia frasi to * * polu 80 char kai emfanizei an einai summetrika. * ********************************************************/ #include <stdio.h> #include <string.h> #include <conio.h> int main(void) { char name[80]; int i,sym=1,x; gets(name); x=strlen(name); for(i=0;i<=x/2-1;i++) if(name[i]!=name[x-1-i]) { sym=0; break; } if(sym==0) printf("Not symmetric!"); else printf("Symmetric!"); }