Kalmar
Удален
|
Hola!! Всех с праздниками!! И все самого наилучщего всем!! Помагите, пожалуйста, решить задачи по С#. Это очень важно и срочно. Please!!!!!! 1) Написать функцию, которая в двумерном целочисленном массиве размерностью m*n меняет местами самый правый из столбцов, в котором все элементы не превышают 1 с самым левым из столбцов, в котором таких элементов нет. Предполфгается, что такие столбцы в матрице заведомо есть. Процедура должна возвращать в главную функцию номера этих столбцов. Используя эту функцию, написать программу, преобразующую таким образом два массива 70*80. Размерности массивов задаются именными константами. 2) Найти функцию, определяющую сумму максимальных элементов каждой строки вещественной матрицы размерностью m*n. С помощью этой функции определить указанную величину для двух матриц размерности 7*10. Размерности массивов задаются именованными константами.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 8 янв. 2006 18:56 | IP
|
|
bekas
Долгожитель
|
/* Могу предложить решение на чистом C (я просто не помню синтаксис C#) Думаю, вы без проблем переложите это на C# Предполагается, что в функцию передаются параметрами размерность матриц: W - ширина матрицы, H - высота матрицы Для тестирования заведены небольшие матрицы. Решение по столбцам основывается на предположении, что такие столбцы в матрице заведомо есть. Если их нет, алгоритм неработоспособен */ #include "stdafx.h" #define W 3 #define H 4 long a[W * H] = { 1, 2, -1, 1, 3, -5, 1, 4, 0, 1, 5, 1 }; double d[W * H] = { 1.0, 2.0, -1.0, 1.0, 3.0, 5.0, 1.0, -4.0, 0.0, -2.0, -5.0, -1.0 }; // Предполагается, что надо суммировать только по одному максимальному // элементу из строки, то есть если их несколько в строке, то берется // только один double Summa(double *array, long w, long h) { double s, r; long i, j; s = 0.0; for(i = 0; i < h; ++i) { for(j = 0, r = *array; j < w; ++j, ++array) { if(r < *array) r = *array; } s += r; } return(s); } void LeftRight(long *left, long *right, long *array, long w, long h) { long *a1, *a0, *a2, i, tmp; // Поиск самого левого столбца for(a0 = array; ; ++a0) { for(i = 0, a2 = a0; i < h && *a2 > 1; a2 += w, ++i) ; if(i == h) break; } *left = a0 - array; // Поиск самого правого столбца for(a1 = array + w; ; ) { for(i = 0, a2 = --a1; i < h && *a2 <= 1; a2 += w, ++i) ; if(i == h) break; } *right = a1 - array; // Обмен столбцов for(i = 0; i < h; ++i, a0 += w, a1 += w) { tmp = *a0; *a0 = *a1; *a1 = tmp; } } int main(int argc, char* argv[]) { long left, right, i, j, *a0; LeftRight(&left, &right, a, W, H); printf("left=%d right=%d\n", left, right); for(i = 0, a0 = a; i < H; ++i) { for(j = 0; j < W; ++j, ++a0) { printf("%5d ", *a0); } printf("\n" ); } printf("Summa=%g\n", Summa(d, W, H)); return 0; } (Сообщение отредактировал bekas 8 янв. 2006 22:44)
|
Всего сообщений: 379 | Присоединился: январь 2006 | Отправлено: 8 янв. 2006 22:37 | IP
|
|
KMA
Долгожитель
|
Тут дело в том, что сложновато будет переводить, насколько я знаю С# не поддерживает указателей, он практически сходен с Java в этом отношении.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 11 янв. 2006 22:37 | IP
|
|
Guest
Новичок
|
Я наверно не очень вовремя влезаю... Кто-нибудь знает как создавать скины для своих программ на C#? Я слышала про компаненту skincrafter. Никто не сталкивался? Если кто-то знает альтернативные способы, то расскажите пожалуйста! Заранее благодарна! Lintra
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 15 фев. 2006 22:02 | IP
|
|
|