Skip to content

Instantly share code, notes, and snippets.

@hauleth
Created November 25, 2012 21:27
Show Gist options
  • Save hauleth/4145450 to your computer and use it in GitHub Desktop.
Save hauleth/4145450 to your computer and use it in GitHub Desktop.
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
struct SProstokat {
unsigned int wysokosc, szerokosc;
};
SProstokat* stworzProstokaty(size_t n) {
return new SProstokat[n];
}
SProstokat* wczytajProstokaty(SProstokat* arr, size_t n) {
for (size_t i = 0; i < n; i++)
scanf("%d %d", arr[i].szerokosc, arr[i].wysokosc);
return arr;
}
SProstokat* wypelnijProstokaty(SProstokat* arr, size_t n) {
unsigned int max = 0;
scanf("%u", &max);
for (size_t i = 0; i < n; i++) {
arr[i].wysokosc = rand() % max + 1;
arr[i].szerokosc = rand() % max + 1;
}
return arr;
}
void wypiszProstokaty(SProstokat* arr, size_t n) {
for (size_t i = 0; i < n; i++)
printf("%ux%u\n", arr[i].wysokosc, arr[i].szerokosc);
}
bool porownajProstokaty(const SProstokat& a, const SProstokat& b) {
return (a.wysokosc * a.szerokosc) > (b.wysokosc * b.szerokosc);
}
size_t znajdzNajwiekszyProstokat(SProstokat* arr, size_t n) {
return min_element(arr, arr + n, porownajProstokaty) - arr;
}
void sortujProstokaty(SProstokat* arr, size_t n) {
sort(arr, arr + n, porownajProstokaty);
}
void printMenu() {
puts("1 - Create table\n"
"2 - Read and fill\n"
"3 - Fill with random values\n"
"4 - Show\n"
"5 - Find rectangle with largest area\n"
"6 - Sort data\n"
"+----------------------------------+");
}
void skip() {
int c;
while ((c = getchar()) != EOF && c != '\n') {}
}
int main() {
SProstokat* arr = NULL;
size_t size = 0;
srand(time(NULL));
while (1) {
printMenu();
switch (getchar()) {
case '1':
if (arr == NULL) {
scanf("%u", &size);
arr = stworzProstokaty(size);
} else {
fprintf(stderr, "%s", "Array is already created.");
}
break;
case '2':
wczytajProstokaty(arr, size);
break;
case '3':
wypelnijProstokaty(arr, size);
break;
case '4':
wypiszProstokaty(arr, size);
break;
case '5':
printf("%u\n", znajdzNajwiekszyProstokat(arr, size));
break;
case '6':
sortujProstokaty(arr, size);
break;
case 'x':
case 'X':
return 0;
default:
fprintf(stderr, "%s\n", "Wrong command");
}
putc('\n', stdout);
skip();
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment