[ create a new paste ] login | about

Link: http://codepad.org/HTlv4lv0    [ raw code | output | fork ]

C, pasted on Sep 26:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

struct Tri {
	int a;
	int b;
	int c;
	double area;
};

int randRange(int min, int max);
int tri_comp(const void *c1, const void *c2);

int randRange(int min, int max) {
	int range = max - min + 1;
	int over = RAND_MAX - (RAND_MAX % range);
	printf("%d\n", over);
	int n;
	do {
		n = rand();
	} while (over <= n);
	return (n % range) + min;
}

int tri_comp(const void *c1, const void *c2) {
	struct Tri *x = *(struct Tri**)c1;
	struct Tri *y = *(struct Tri**)c2;
	if (x->area < y->area) {
		return 1;
	} else if (y->area < x->area) {
		return -1;
	} else {
		return 0;
	}
}

int main(int argc, char *argv[]) {
	int i;
	int a;
	int b;
	int c;
	double area;
	int min;
	int max;
	double s;
	
	struct Tri **tris;
	struct Tri *tri;
	int n;
	
	if (argc < 2) {
		return EXIT_FAILURE;
	}
	
	n = atoi(argv[1]);
	
	tris = calloc(n, sizeof(struct Tri*));
	for (i = 0; i < n; i++) {
		a = randRange(3, 30);
		b = randRange(3, 30);
		if (a < b) {
			min = b - a + 1;
		} else {
			min = a - b + 1;
		}
		max = a + b - 1;
		c = randRange(min, max);
		s = (a + b + c) / 2.0;
		area = sqrt(s * (s - a) * (s - b) * (s - c));
		
		tri = malloc(sizeof(struct Tri));
		tri->a = a;
		tri->b = b;
		tri->c = c;
		tri->area = area;
		tris[i] = tri;
	}
	
	qsort(tris, n, sizeof(struct Tris*), tri_comp); 
	
	for (i = 0; i < n; i++) {
		tri = tris[i];
		printf("%d 番目に大きい三角形は3 辺が( %d, %d, %d ) で面積は%f\n", i, tri->a, tri->b, tri->c, tri->area);
	}
	
	return EXIT_SUCCESS;
}


Output:
1
Exited: ExitFailure 1


Create a new paste based on this one


Comments: