Vissza

Makrók


  1. Egy állományban feltételezzük, hogy egész számok vannak. Határozzuk meg ezek közül a maximumot, makrót használva annak eldöntésére, hogy két szám közül melyik a maximum (Forráskód).
  2. Egy állományban feltételezzük, hogy egész számok vannak. Határozzuk meg ezek abszolút értékben vett átlagértéket, makrót használva az abszolút érték meghatározására.
  3. Egy állományban feltételezzük, hogy pozitív egész számok vannak. Feltételezve, hogy ezek a számok egy kör sugarának a nagyságát jelölik, határozzuk meg mindegyik értékre a kör területét és kerületét. Az eredményt ugyanabba az állományba írjuk, a megfelelő sugárértékek után. Használjunk makrót kerület, terület meghatározására, illetve a pi megadására.
  4. Egy állományban szavak vannak (szónak számít a space-ek közötti bármilyen karaktersorozat). Mindegyik szó kezdőbetűjét cseréljük ki nagybetűre, makrót használva az átalakításhoz (Forráskód).
  5. A parancssorban feltüntetett állományban feltételezzük, hogy valós számok vannak. Rendezzük ezeket a számokat növekvő sorrendbe, saját rendező függvényt írva. A rendezéshez szükséges cserét először makró segítségével, majd függvény segítségével oldjuk meg. ( Forráskód )
  6. Adott n-ig ellenőrizzük a következő képlet helyességét, makrót használva a négyzetértékek meghatározására:
12 + 22 + 32 + ... + n2 = n·(n+1)·(2n+1)/6

Fel.1.
#include <stdio.h>
#define MAX(a, b) ( (a)<(b)? (b): (a) )

int main(){
    int a, b;
    printf("Kerek ket szamot: ");
    scanf("%i%i", &a, &b);
    int m = MAX(a, b);
    printf("a maximum %i\n", m);
    return 0;
}
Fel.4.
#include <stdio.h>
#define Alakit(type, a) (((a)[0]>='a' && (a)[0] <='z') ? ((a)[0] = (a)[0] - 32) : ((a)[0]))

int main(){
    char szo[10];
    printf("szo: ");
    scanf("%s", szo);
    Alakit(char *, szo);
    printf("%s\n\n", szo);
    return 0;
}

Fel. 5.
#include <stdio.h>
#define SWAP(type, a, b) {type tmp = a; a = b; b = tmp;}

void BSort(double* a, long n );
double Maximum(double *a, long n);

int main( int argc, char * argv[]){
    FILE * fp1;
    double v[100];
    unsigned int n,k;
    if (argc != 2) {
        printf ("\nkerek 1 filenevet ");
        return 0;
    }
    if ( (fp1 = fopen(argv [1],"r"))==NULL )    /*elso file nyitasa*/
    {   
        printf ("\n nincs file");
        return 0;
    }
    n = 0;
    while (1){
        fscanf (fp1, "%lf", &v[n] );
        n++;
        if (feof (fp1) ) break;
    }
    fclose (fp1);
    n = n-1;
    BSort(v, n);
    if ( (fp1 = fopen(argv [1], "w"))==NULL )    /*elso file nyitasa*/
    {   
        printf ("\n nincs file1");
        return 0;
    }
    k = 0;
    while ( k < n )
    {   
        fprintf (fp1, "%5.2lf\n", v[k]);
        k++;
    }
    fclose (fp1);
    return 0;
}

void BSort(double *a, long n)
{
    int i,j;
    for (i = 0; i < n; i++)
        for ( j = n-1; j > i; j--)
            if( a[j-1] > a[j] ) SWAP( double, a[j-1], a[j]);
}


Vissza