bnghtz

math_4X_eq_4_mul_X4.c

Mar 25th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. /*
  5.   Feladat:
  6.     Melyik az a legkisebb termeszetes szam, amelyiknek
  7.     - első jegye 4 es
  8.     - ha ezt a szamot a szam elejerol toroljuk es a szam vegere irjuk,
  9.       akkor at eredeti szam negyedreszet kapjuk.
  10.    __    __
  11.    4X == X4 * 4
  12. */
  13.  
  14. int main(void)
  15. {
  16.     // induljunk el 1-től, és amíg nincs találat keressük azt.
  17.     long i = 1, j;
  18.     char num[50]; // az írásbeli csere megejtéséhez
  19.                   // valószínűsíthető, hogy 5osztályosnak 49 jegyű
  20.                   // számnál nem kell nagyobbal számolnia
  21.     size_t len;
  22.  
  23.     while (1)
  24.     {
  25.         memset(num, '\0', sizeof(num));
  26.         sprintf(num, "%d", i);
  27.         len = strlen(num);
  28.  
  29.         // 4essel kezdődik a szám?
  30.         // kihagyható, de gyorsítja az algoritmust, és a csere is könnyebb
  31.         if (num[0] == '4')
  32.         {
  33.             // az első 4-est a végére rakom: csúsztat és áthelyez?
  34.             // eggyel elcsusztatja a szamjegeket
  35.             int x;
  36.             for (x = 0; x < len; x++)
  37.             {
  38.               num[x] = num[x+1];
  39.             }
  40.  
  41.             // vegere 4est ir
  42.             num[len - 1] = '4';
  43.             // amennyiben biztosra akarunk menni, lezarjuk a stringet
  44.             // num[len] = '\0'; // de mivel kinullaztuk, nem lehet gond
  45.  
  46.             // ascii-ból long integerrél alakítja a szamot
  47.             j = atol(num);
  48.  
  49.             // Az új szám 4*szerese eggyezik az eredeti számmal?
  50.             if (i == j * 4)
  51.             {
  52.                 // ha a válasz igen, írassuk ki és hagyjuk abba a ciklust
  53.                 printf("%d == %d * 4\n", i,j);
  54.                 break;
  55.             }
  56.         }
  57.  
  58.         i++;
  59.     }
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment