[ANSI C] Sortowanie dat


(Glocc89) #1

Napisalem takie cos:

#include "stdafx.h"



struct Data

        {

		int d,m,r;

	};

int SORT(const void *p, const void *q)

	{

		Data *a=(Data*)p, *b=(Data*)q;

		int k=a->r - b->r;

		if (k) return k;

		k=a->m - b->m;

		if (k) return k;

		return a->d - b->d;


	}

int _tmain(int argc, _TCHAR* argv[])

{

	int n,i;

	int (*A)[3];

	struct Data D;

	printf("Podaj ile ma byc DAT: \n");

	scanf_s("%d",&n);

	A=(int(*)[3])calloc(n,sizeof(*A));

    if(A==NULL) return 0;



	for(i=0;i
	{

		fprintf(stderr,"Podaj date w postaci dzien-mies-rok: %d\n",i+1);

		scanf_s("%d%*c%d%*c%d",&D.d,&D.m,&D.r);

		A[i][0]=D.d;

		A[i][1]=D.m;

		A[i][2]=D.r;

	}

	qsort(A,n,sizeof(*A),SORT);

	for(i=0; i
	{

    printf("%d.%d.%d\n", A[i].d, A[i].m, A[i].r);


	}

 free(A);

        return 0;


}

I wyskakuje mi taki błąd:

Dla kazdego(m,r,d) taki blad:

left of '.m' must have class/struct/union

type is 'int [3]'


(Spam) #2

W C słowo „struct” jest obowiązkowe.


(Glocc89) #3

nie rozumiem w ktorym miejscu??


(Spam) #4

Na początku funkcji SORT.


(Glocc89) #5

blad jest w tej linijce

printf("%d.%d.%d\n", A[i].d, A[i].m, A[i].r);

taki jak podalem wczesniej nie wiem jak sobie z tym poradzić.


(Sawyer47) #6

To by zadziałało, gdyby tablica A przechowywała struktury daty. Ten kod wydaje się mocno nieprzemyślany, jaki jest sens istnienia zmiennej A? Aż prosi się o zastosowanie tablicy struktur właśnie.