| 
        
    
		
			| 
			
        		| 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
 |  |  |