Функции в Си

  • Автор темы Maxxy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Maxxy

#1
Пишу задачу и сразу ответ

Даны 2 квадратные матрицы n-го порядка. Напечатать ту из них, у которой больше сумма элементов в каком-либо столбце!

Заранее простите за кылды мылды в "cout". В общем кому надо скомпилит и посмотрит(там все зашибись)! Спасибо всем за вашу помощь,особенно "Допишите за меня код(модератор)", в смысле тому кто в скобочках. ВОТЬ <_<

КОД:


Код:
 #include <iostream.h>

void fill(int *p[], int msize, int mnum); 
int mcalc (int *lm1[], int *lm2[], int cn,int msize); 
void mprint (int *lm[],int mn,int msize);

void main(void)
{
int j, n, cn, nmax, **m1, **m2;																						 // n - количество элементов в массиве, cn - номер столбца, nmax - номер искомой матрицы

n=0;
while (n < 1) {																						  // ввод n. Запрашиваем, пока не введём число больше 0
cout << "\n ўўҐ¤ЁвҐ а §¬Ґа­®бвм ¬ ваЁж: ";															 // строка запроса
cin >> n;																							// чтение введённого числа
cout << "\n";																						// перевод строки
}
m1=new int *[n];
for (j = 0; j < n; j++)
{
m1[j] = new int [n];
}																						 // определяем 1-ю квадратную матрицу nХn
fill (m1,n,1);																						  // вызываем процедуру заполнения 1-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер
m2=new int *[n];
for (j = 0; j < n; j++)
{
m2[j] = new int [n];
}																						 // определяем 1-ю квадратную матрицу nХn
// определяем 2-ю квадратную матрицу nХn
fill (m2,n,2);																						  // вызываем процедуру заполнения 2-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер

cn=0;
while ((cn < 1) && (cn < (n-1))) {																		 // ввод cn. Запрашиваем, пока не введём число больше 0 и не больше размера матрицы
cout << "ўўҐ¤ЁвҐ ­®¬Ґа ўлзЁб«пҐ¬®Ј® бв®«Ўж : ";														// строка запроса
cin >>cn;																							// чтение введённого числа
cout << "\n";																						 // перевод строки
}

if (mcalc (m1, m2, cn, n)==1)																			 // вызываем процедуру вычисления сумм столбцов массивов. передаём адреса массивов, номер стобца и размер массивов
mprint(m1,1,n);																						// если процедура определила первую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №1, 1 и размер матрицы
else
mprint(m2,2,n);																						// если процедура определила вторую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №2, 2 и размер матрицы
}

void fill(int *p[], int msize, int mnum)																	  // процедура заполнения массива. получаем адрес массива и его длину
{
cout << "‡ Ї®«­Ґ­ЁҐ ¬ ваЁжль" << mnum << "...\n";
for (int ir=0; ir<msize; ir++) {																		  // цикл по строкам
for (int ic=0; ic<msize; ic++) {																	// цикл по столбцам
cout << "‚ўҐ¤ЁвҐ Ґ«Ґ¬Ґ­в ¬ ваЁжл " << mnum << " (бва®Є " << ir << ", бв®«ЎҐж " << ic << "): "; // строка запроса
cin >> p[ir][ic];																				// чтение введённого числа
cout << "\n";																					// перевод строки 
} 
}
return;																								  // возврат
}

int mcalc (int *lm1[], int *lm2[], int cn,int msize)														  // процедура вычисления сумм столбцов массивов. получаем адреса массивов, номер стобца и размер массивов
{
int maxm;																								  // номер искомой матрицы
int sum;																									// разность сумм столбцов 2-х матриц

sum=0;
maxm=1;
for (int ir=0; ir<msize; ir++) {																			// цикл подсчёта		 
sum+=lm1[ir][cn-1]-lm2[ir][cn-1];																		// складывам разницу элементов столбцов 2- матриц
}  
if (sum < 0) maxm = 2;																					 // если разница отрицательная, значит сумма столбца 2-й матрицы (вычитаемой), больше
return maxm;																								// возврат, возвращаем номер матрицы с большей суммой указанного столбца
}

void mprint (int *lm[],int mn,int msize)																	  // процедура вывода матрицы
{
cout << "‚лў®¤Ё¬ ¬ ваЁжг " << mn << "\n";
for (int ir=0; ir<msize; ir++) {																			// цикл по строкам	 
cout << "‘ва®Є ь" << ir << ":";																	 // вывод номера строки
for (int ic=0; ic<msize; ic++) {																  // цикл по столбцам
cout << lm[ir][ic] << "	";																	  // вывод элементов строки
} 
cout << "\n";																						// перевод строки 
}

return;																								  // возврат
}
 
04.09.2006
2 566
3
#2
Сразу вспоминается мультик "Волк и собака": "Шо? Апять?"
Уважаемый Maxxy, может Вам стоит купить пива своему одногруппнику, шарящему в программировании, чтобы он помог Вам написать эти чертовы лабы?
 
M

Maxxy

#3
<_<Пасибки за совет! Был бы такой человек,я бы сюда не обращался!:(

Кстати,забыл

ОГРОМНОЕ СПАСИБО ЗА 40% ПРЕДУПРЕЖДЕНИЙ! Я так о них мечтал
:D
Просто нет сил сдерживать свои эмоции
 
04.09.2006
2 566
3
#4
<!--QuoteBegin-Maxxy+29:10:2007, 10:54 -->
<span class="vbquote">(Maxxy @ 29:10:2007, 10:54 )</span><!--QuoteEBegin-->Был бы такой человек,я бы сюда не обращался!<_<
[snapback]83388" rel="nofollow" target="_blank[/snapback]​
[/quote]
Напиши в "Предложения поработать" и тебе за парочку WMZ все сделают
 
Статус
Закрыто для дальнейших ответов.