Tassos

Εύρεση αναγραμματισμού δύο αλφαριθμητικών.

May 1st, 2014
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. {                                  Visit:   http://g-lts.info/  for more code!                            }
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. #define Nmax 7 /* +1 τον χαρακτήρα τέλους του string! που θέλει η C */
  7.  
  8. int anagramatismos(char pin1[], char pin2[], int size);
  9. /* Συνάρτηση η οποία παίρνει :
  10.     - 2 πίνακες χαρακτήρων
  11.     - το μέγεθος των δύο αυτών πινάκων ( πρέπει να έχουν το ίδιο μέγεθος
  12. Επιστρέφει :
  13.     - Ένα ακέραιο που αν είναι :
  14.         - 1 : Σημαίνει πως το string των πινάκων είναι αναγραμματισμός
  15.         - 0 : Σημαίνει πως το string των πινάκων ΔΕΝ είναι αναγραμματισμός */
  16.  
  17. int wordcounter(char a, char pinakas[], int size);
  18. /* Συνάρτηση η οποία κάθε φορά παίρνει :
  19.     - Έναν χαρακτήρα
  20.     - Έναν πίνακα χαρακτήρων
  21.     - Το μέγεθος του πίνακα
  22. Και ψάχνει πόσες φορές ο χαρακτήρας, υπάρχει μέσα στον πίνακα.
  23. Επιστρέφει :
  24.     - Έναν ακέραιο που δείχνει πόσες φορές ο χαρακτήρας βρέθηκε μέσα στο πίνακα */
  25.  
  26. int main (void)
  27.  
  28. {
  29.  
  30. char p1[Nmax] = "tsotso";
  31. char p2[Nmax] = "sstoto";
  32. int i=0;
  33.  
  34. for (i; i<Nmax; i++)
  35.     printf("p1 = %c \t\t p2 = %c \n",p1[i],p2[i] );
  36.  
  37. if ( anagramatismos(p1,p2,Nmax) )
  38.     printf("Το %s είναι αναγραμματισμός του %s.\n",p1,p2);
  39.    
  40. else
  41.     printf("Το %s ΔΕΝ είναι αναγραμματισμός του %s.\n",p1,p2);
  42.  
  43. return 0;
  44. }
  45.  
  46. /******************************************************************************/
  47. /* Η συνάρτηση που βρίσκει αν είναι αναγραμματισμός ή όχι */
  48. int anagramatismos(char pin1[], char pin2[], int size)
  49. {
  50.  
  51. int i = 0;
  52. for (i; i<size && ( wordcounter(pin1[i],pin1,size) == wordcounter(pin1[i],pin2,size) ); i++ );
  53. /* Από την αρχή μέχρι το τέλος του πίνακα
  54.     !!! ΚΑΙ !!!
  55. όσο το εκάστοτε γράμμα που βρίσκεται στην θέση i (κάθε φορά) του πίνακα καθώς τον
  56. σκανάρουμαι υπάρχει τόσες φορές στον πίνακα1 όσες και στον πίνακα2 προχωράμε στην
  57. επόμενη θέση - γράμμα - του πίνακα */
  58.  
  59.    
  60. return i==size ; /* Αν σκανάραμε όλο τον πίνακα που πάει να πει πως δεν "έσπασε"
  61. πουθενά η for loop μας */
  62.  
  63.  
  64. }
  65.  
  66. /******************************************************************************/
  67. /* Η συνάρτηση που μετράει τα γράμματα */
  68. int wordcounter(char a, char pinakas[], int size)
  69. {
  70.  
  71. int i,c;
  72. i = c = 0 ;
  73.  
  74. for (i; i<size; i++) /* Σκάναρε όλο τον πίνακα */
  75.     if ( pinakas[i] == a ) /* Αν κάποια θέση έχει τον χαρακτήρα που μετράμε */
  76.         c++; /* Αύξησε τον μετρητή κατά 1 */
  77.    
  78.    
  79. /* Αν θέλω να δω πόσες φορές βρέθηκε μέσα στον πίνακα κάθε φορά. */
  80. /* printf("Ο χαρακτήρας %c βρέθηκε %d φορές.\n", a, c);*/
  81. return c;
  82. }
  83.  
  84.  
  85.  
  86. {                                  Visit:   http://g-lts.info/  for more code!                            }
Advertisement
Add Comment
Please, Sign In to add comment