Найти наименьшее число
Добавлено: 12 апр 2013, 19:10
помогите дописать программу?
надо найти минимальное число из НЕотсортированных, сортировка происходит по главной диагонали вниз, налево и вверх.
надо найти минимальное число из НЕотсортированных, сортировка происходит по главной диагонали вниз, налево и вверх.
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
int
max(const int a, const int b)
{
return (a > b) ? a : b;
}
int
min(const int a, const int b)
{
return (a < b) ? a : b;
}
int*
get(const int *a, const int n, const int k)
{
int r = min(min(k, 3 * n - 3 - k), n - 1);
int c = max(min(k, 2 * n - 2 - k), 0);
return (a + n * r + c);
}
int
main()
{
int n, i, j;
printf("vvedite razmer massiva: ");
scanf("%d", &n);
int a[n][n];
FILL:
srand(time(NULL));
printf("\tЗаполнить массив автоматически(0) или вручную(1)?\n\t");
scanf("%i", &i);
printf("\n");
if (i!=0 && i!=1)
{
printf("\tОшибка. Неверное значение. Повторите.\n");
goto FILL;
} else if (i==0)
{
for(i=0; i<n; i++){
for(j=0; j<n; j++) {
a[i][j]=rand()%100-rand()%100;
}}
} else {
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("\t[%i][%i]=", i, j);
scanf("%i", &a[i][j]);
}
printf("\n");
}
}
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) {
printf("%3d ", a[i][j]);
}
printf("\n");
}
//3*n-3 количество сортируемых элементов
for (i = 0; i < 3 * n - 3 - 1; ++i) {
for (j = i + 1; j < 3 * n - 3; ++j) {
int *p1 = get(a, n, i);
int *p2 = get(a, n, j);
if (*p1 > *p2) {
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
}
}
printf("Sorted array:\n");
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) {
printf("%3d ", a[i][j]);
printf(" "); }
printf("\n");
}
getch();
return 0;
}