Tassos

Συμμετρία πίνακα με αναδρομή.

Apr 5th, 2014
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 KB | None | 0 0
  1. {                                  Visit:   http://g-lts.info/  for more code!                            }
  2.  
  3. #include <stdio.h>
  4.  
  5. #define arraysize 11
  6.  
  7. int rsimetria(int a[], int arxi_pinaka, int telos_pinaka);
  8. /* Μία αναδρομηκή συνάρτηση η οποία παίρνει :
  9. 1. Έναν πίνακα.
  10. 2. Έναν ακέραιο που δείχνει την πρώτη θέση του πίνακα.
  11. 3. Έναν ακέραιο που δείχνει την τελευταία θέση του πίνακα.
  12. Και επιστρέφει 1 αν είναι συμμετρικός ο πίνακας αλλιώς 0 .*/
  13.  
  14.  
  15. int readarray(int a[]);
  16.  
  17.  
  18. int main (void)
  19. {
  20. int a[arraysize],i=0;
  21. printf("Δώσε 10 ακέραιους να τους βάλω σε έναν πίνακα.\n");
  22. for (i; i<arraysize; i++)
  23.     {
  24.     printf("Πληκτρολόγησε έναν ακέραιο : ");
  25.     scanf("%d",&a[i]);
  26.     }
  27.  
  28. readarray(a);
  29.  
  30. if ( rsimetria(a,0,arraysize-1) ) /* δίνουμε κατευθείαν την "σωστή" τελευταία θέση */
  31.     printf("Οκ πίνακας είναι συμμετρικός - να χαίρεσαι εσύ τώρα..\n");
  32. else
  33.     printf("Καλά να πάθεις (:D) \n");
  34.  
  35.  
  36. return 0;
  37. }
  38. /**********************************************************************/
  39. /* Η αναδρομηκή συνάρτηση που μας λέει αν είναι ή όχι συμμετρικός ο πίνακας. */
  40. int rsimetria(int a[], int arxi_pinaka, int telos_pinaka)
  41. {
  42.  
  43. if (arxi_pinaka <= telos_pinaka)  /* ναι μικρότερο ή ΊΣΟ, γιατί έχουμε αφαιρέση αρχικά από την αρχή, την "λάθος" τιμή */
  44.     if ( a[arxi_pinaka] == a[telos_pinaka] )
  45.         rsimetria(a,arxi_pinaka+1,telos_pinaka-1);
  46.     else
  47.         return 0;
  48.     /* και εφόσον δεν έχει σπάσει εδώ μέσα */
  49. else /* αν βγει έξω από τα όρια του πίνακα, τότε τότε όλα μέσα ήταν οκ ;) */
  50.     return 1;
  51.  
  52.  
  53.  
  54. }
  55. /**********************************************************************/
  56.  /* Συνάρτηση που διαβάζει και εκτυπώνει το περιεχόμενο των θέσεων ενός πίνακα. */
  57. int readarray(int a[])
  58. {
  59. int i=0;
  60. printf("\n|==============================|\n");
  61. printf("|      Ο πίνακας περιέχει.     |\n");
  62. printf("|==============================|\n");
  63. printf("|  Θέση  \t  Περιεχόμενο  |\n");
  64. for (i; i<arraysize; i++)
  65.     printf("|   %d\t  ====>\t      %d\t       |\n",i,a[i]);
  66.  
  67. printf("|==============================|\n\n");
  68. return 1;
  69.  
  70. }
  71.  
  72. {                                  Visit:   http://g-lts.info/  for more code!                            }
Advertisement
Add Comment
Please, Sign In to add comment