Страница 1 из 1

Найти наименьшее число

Добавлено: 12 апр 2013, 19:10
Salt
помогите дописать программу?
надо найти минимальное число из НЕотсортированных, сортировка происходит по главной диагонали вниз, налево и вверх.

Код: Выделить всё

#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;
}