Advertisement
kraxor

ProgAlap ProbaZH

Oct 19th, 2011
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. /*
  2. A feladat megallapitani, hogy egy huszar hany mezot uthet a sakktablan.
  3. A huszar a tole L alakban egyenesen 2 oldalra 1 tavolsagra levo mezoket
  4. uti (ahol az egyenes barmelyik irany lehet a 4 kozul).
  5.  
  6. A fuggveny bemenetkent karakterben kapja meg a mezo koordinatait (egy
  7. kisbetu 'a'-'h' es egy szamjegy '1'-'8'), a visszateresi erteke pedig
  8. az utott mezok szama. A fuggveny fejlecen ne valtoztass!
  9. */
  10.  
  11. int is_valid(char oszlop, char sor) {
  12.     if (oszlop < 'a' || oszlop > 'h' || sor < '1' || sor > '8') {
  13.         return 0;
  14.     } else {
  15.         return 1;
  16.     }
  17. }
  18.  
  19. int huszar(char oszlop, char sor) {
  20.     int lep[8][2] = {
  21.         {1, 2},     {1, -2},
  22.         {-1, 2},    {-1, -2},
  23.         {2, 1},     {2, -1},
  24.         {-2, 1},    {-2, -1}
  25.     };
  26.     int valid = 0;
  27.     int i;
  28.  
  29.     for (i = 0; i < 8; i++) {
  30.         if (is_valid(oszlop + lep[i][0], sor + lep[i][1])) {
  31.             valid++;
  32.         }
  33.     }
  34.  
  35.     return valid;
  36. }
  37.  
  38. /*
  39. Az alabbi fuggveny parametere egy sztring. A feladat torolni belole
  40. minden masodik karaktert. (Ezaltal a sztring rovidulhet.) Kodold le
  41. a fuggvenyt C nyelven. A fuggveny fejlecen ne valtoztass!
  42. */
  43.  
  44. void strtorles(char str[]) {
  45.     int i;
  46.     int c = 0;
  47.     for (i = 0; str[i] != 0; i++) {
  48.         if (i % 2 == 1) continue;
  49.         str[i / 2] = str[i];
  50.         c++;
  51.     }
  52.     str[c] = 0;
  53.  
  54.     return;
  55. }
  56.  
  57. /*
  58. Hatarozzuk meg, hogy a parameterkent kapott evben az adott honap
  59. adott napja az ev hanyadik napja. A fuggveny ezzel az ertekkel terjen
  60. vissza. Figyeljunk a szokoevekre! Az input adatok egy 1800 es 5000
  61. kozotti valos napot jelolnek. A fuggveny fejlecet ne valtoztasd meg!
  62. */
  63.  
  64. int evnapja(int ev, int ho, int nap) {
  65.     int honapok[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  66.     if ((ev % 4 == 0) && (ev % 100 != 0 || ev % 400 == 0)) {
  67.         honapok[1] = 29;
  68.     }
  69.  
  70.     int i, ossz = 0;
  71.     for (i = 0; i < ho - 1; i++) {
  72.         ossz += honapok[i];
  73.     }
  74.  
  75.     ossz += nap;
  76.  
  77.     return ossz;
  78. }
  79.  
  80. /*
  81. Az alabbi fuggveny egy penzosszeget kap parameterkent, majd meghatarozza,
  82. hogy legkevesebb hany darab 10, 5, 2 es 1 koronas ermervel fizetheto ki az
  83. osszeg! A fuggveny visszateresi erteke -1, ha rossz erteket kap. A fuggveny
  84. fejlecen ne valtoztass!
  85. */
  86.  
  87. int erme(int osszeg) {
  88.     int ermek[4] = {10, 5, 2, 1};
  89.     int akt_erme = 0;
  90.     int cucc = 0;
  91.  
  92.     if (osszeg < 0) {
  93.         return -1;
  94.     }
  95.  
  96.  
  97.     while (osszeg > 0 && akt_erme < 4) {
  98.         if (osszeg >= ermek[akt_erme]) {
  99.             osszeg -= ermek[akt_erme];
  100.             cucc++;
  101.         } else {
  102.             akt_erme++;
  103.         }
  104.     }
  105.  
  106.     return cucc;
  107. }
  108.  
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement