Архив за 28.11.2012

Нахождение минимального значения элемента в массиве

Продолжаю выкладывать решения простейших задач, так как прошлый ребус привёл мне на блог не мало посетителей и это не может не радовать!

Сегодня я напишу решение следующей задачи: Задан двухмерный массив вещественных чисел размерности 3х3. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу.

Решение на C:

#include <stdio.h>
 
#define SIZE 3
 
int main()
{
    const int array[SIZE][SIZE] = {
        {2, 2, 3},
        {3, 2, 3},
        {6, 1, 5}
    };
 
    int i, j, min = array[0][0];
 
    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
 
            if (min > array[i][j]) {
                min = array[i][j];
            }
 
        }
    }
 
    printf("min = %d\n", min);
    return 0;
}

Решение на Pascal:

const
    SIZE = 2;
    mas: array[0..SIZE, 0..SIZE] of integer = (
        (2, 2, 3),
        (3, 2, 3),
        (6, 1, 5)
    );
 
var
    i, j, min: integer;
 
begin
    min := mas[0][0];
 
    for i := 0 to SIZE do begin
        for j := 0 to SIZE do begin
            if (min > mas[i][j]) then
                min := mas[i][j];
        end;
    end;
 
    writeln('min = ', min);
end.

Небольшое обновление дизайна

Давно имел пару мыслей по обновлению дизайна и вот нашел немного времени для их воплощения. В будущем планирую дорабатывать по мере возможности.

Android 4.2 обзор

Android 4.2 наконец стал доступен для Nexus 7, свой планшет я обновил и спешу поделиться новшествами. Обновлял через кастомное рекавери ClockworkMod, рут слетел, но рекавери перед перезагрузкой любезно предложил его восстановить:).
Скачать Android 4.2 для Nexus девайсов.

Под катом много картинок нового андроида.
Читать дальше »

Решение ребуса: гол * гол = футбол

Попросили меня решить ребус вида гол * гол = футбол. Написал решение на C. Зачем это здесь? Просто я давно ничего не постил в блог, надо немного освежить содержимое. Ну и это может быть полезным для тех, кто ещё только изучает C :). Код прокомментирован на русском языке.
Всё достаточно просто:

/*
 
    Решение маски abc * abc = defbc (ребус: гол * гол = футбол)
 
*/
 
#include <stdio.h>
#include <math.h>
 
#define SIZE_A  3
#define SIZE_B  5
 
int main()
{
    int num = 0, i, j, n, a[SIZE_A], b[SIZE_B];
 
    for (n = 100; n <= 999; n++) {
        num = n;
 
        // записываем цифры числа num в массив
        a[0] = num % 10;
        a[1] = num / 10 % 10;
        a[2] = num / 100;
 
        // проверяем эквивалентность цифр в числе a
        if (a[0] == a[1] || a[0] == a[2] || a[1] == a[2]) {
            continue;
        }
 
        num *= num;
 
        if (num > 99999) {
            continue;
        }
        // записываем цифры числа num в массив
        b[0] = num % 10;
        b[1] = num / 10 % 10;
 
        // проверяем идентичность двух последних цифр в числе
        if (b[0] != a[0] || b[1] != a[1]) {
            continue;
        }
        b[2] = num / 100 % 10;
        b[3] = num / 1000 % 10;
        b[4] = num / 10000;
 
        // проверяем эквивалентность цифр в числе b
        for (i = 0; i < SIZE_B; i++) {
            for (j = i+1; j < SIZE_B; j++) {
                // если нашлись какие-нибудь одинаковые значения, то прерываем цикл
                if (b[i] == b[j]) {
                    num = 0;
                    break;
                }
            }
        }
 
        // проверяем эквивалентность цифр в числах a и b
        for (i = 0; i < SIZE_A; i++) {
            for (j = 0; j < SIZE_B; j++) {
                // игнорируем значения, которые должны быть равными
                if ((i == 0 && j == 0) || (i == 1 && j == 1)) {
                    continue;
                }
 
                // если нашлись какие-нибудь одинаковые значения, то прерываем цикл
                if (a[i] == b[j]) {
                    num = 0;
                    break;
                }
            }
        }
 
        // вывод результата
        if (num != 0) {
            num = sqrt(num);
            printf("%d * %d = %d\n", num, num, num*num);
        }
    }
    return 0;
}
Перейти к верхней панели