Informatika gyűjtemény

Egy szinttel feljebb szp_egyiptom.c

2004050607080910

NézetNyomtat

szp_egyiptom.c (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
#include <stdio.h>
#include <stdlib.h>

void tort_kivon(long int, long int, long int, long int, long int*, long int*);
long int lnko(long int, long int);
void swapxy(long int* , long int*);

long int main() {
       long int is, in, an, db = 0, max = 0;

       /* Adatok beolvasA!sa */
       scanf("%u %u", &is, &in);

       /* Algoritmus */
       printf("Tortek: \n");
       an = 2;
       while(is != 0) {
               if(is == 1) {
                       printf("  %u / %u\n\n", 1, in);
                       is = 0;
                       max = in;
                       db++;
               } else if(is * an >= in) {
                       printf("  %u / %u\n", 1, an);
                       tort_kivon(is, in, 1, an, &is, &in);
                       db++;
               }
               an++;
       }

       /* EredmAŠny kiA­rA!sa */
       printf("Statisztika: \n");
       printf( "  db  = %u\n"
               "  max = %u\n\n", db, max);
       getch();
}

void tort_kivon(long int as, long int an, long int bs, long int bn, long int *cs, long int *cn) {
       long int l;
       as *= bn;
       bs *= an;
       *cs = as - bs;
       *cn = an * bn;

       l = lnko(*cs, *cn);
       *cs /= l;
       *cn /= l;

       return;
}

long int lnko(long int x, long int y) {
       long int m;

       if(> y) swapxy(&x, &y);
       m = y % x;
       while(!= 0) {
               y = x;
               x = m;
               m = y % x;
       }
       return x;
}

void swapxy(long int *x, long int *y) {
       long int i;

       i = *x;
       *= *y;
       *= i;
}
#include <stdio.h>
#include <stdlib.h>

#define ELEMEK 32767



int main() {
       long int is, in, i, j, c;
       long int tomb[ELEMEK];

       scanf("%u %u", &is, &in);

       for(= 0; i < is; i++) {
               tomb[i] = in;
       }
       do {
               c = 0;
               for(= 0; i < is; i++) {
                       if(tomb[i] == 0) continue;
                       for(= i + 1; j < is; j++) {
                               if(tomb[j] == 0) continue;
                               if(tomb[i] == tomb[j]) {
                                       c = 1;
                                       if(tomb[i] % 2 == 0) {
                                               tomb[i] = tomb[i] / 2;
                                               tomb[j] = 0;
                                       } else {
                                               tomb[i] = (tomb[i] + 1) / 2;
                                               tomb[j] = tomb[j] * (tomb[j] + 1) / 2;
                                       }
                               }
                       }
               }
       } while(c);

       for(= 0; i < is; i++) {
               if (tomb[i] == 0) continue;
               printf("1 / %u\n", tomb[i]);
       }
       getch();
}
(Vissza)