|
|
|
| Народ, помогите!!!!! Обнулить элементы над главной диагональю, если их сумма меньше суммы элементов под главной диагональю. В противном случае обнулить элементы под главной диагональю. | |
|
|
|
|
|
|
|
для: OJLYA
(11.01.2008 в 07:57)
| | А в чем, собственно сложность? У меня вот такой вариант работает:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int matrix[10][10];
int n, sumu = 0, suml = 0;
printf("Enter N: ");
scanf ("%d", &n);
if ( (n < 0) || (n > 9) )
{
printf("Invalid N value!\n");
}
else
{
printf("Enter matrix:\n");
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
scanf("%d", &(matrix[i][j]));
if (j > i)
sumu += matrix[i][j];
else if (j < i)
suml += matrix[i][j];
}
}
if (sumu < suml)
{
for(int i = 0; i < (n-1); i++)
{
for(int j = (i+1); j < n; j++)
{
matrix[i][j] = 0;
}
}
}
else
{
for(int i = 1; i < n; i++)
{
for(int j = 0; j < i; j++)
{
matrix[i][j] = 0;
}
}
}
// просто вывод матрицы для проверки, можно убрать
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
getch();
return 0;
}
|
| |
|
|
|
|
|
|
|
для: Фитч
(11.01.2008 в 08:34)
| |
#include <stdio.h>
#include <conio.h>
int main(void)
{
int matrix[10][10];
int n=-1, sumu = 0, suml = 0;
сlrscr();
while( (n < 0) || (n > 11) )
{
printf("Enter n: ");
scanf("%d", &n);
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
//scanf("%d", &(matrix[i][j]));
matrix[i][j]=(10-(-10))random(10)/10. -10; //Диапазон чисел от -10 до 10
if (j > i)
sumu += matrix[i][j];
else if (j < i)
suml += matrix[i][j];
}
}
if (sumu < suml)
{
for(int i = 0; i < (n-1); i++)
{
for(int j = (i+1); j < n; j++)
{
matrix[i][j] = 0;
}
}
}
else
{
for(int i = 1; i < n; i++)
{
for(int j = 0; j < i; j++)
{
matrix[i][j] = 0;
}
}
}
// просто вывод матрицы для проверки, можно убрать
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
getch();
return 0;
}
|
так как я думаю вводить до 100 элементов в матрицу напряжно как то а рандомить интерестнее,
ну еще и проверка ввода - пока число не будет в диапазоне от 1 до 10 | |
|
|
|
|
|
|
|
для: zzDimazz
(11.01.2008 в 12:45)
| | to zzDimazz:
1) Просто это типовая школьная задача, а там обычно (по крайней мере согласно моему опыту) просят делать ручной ввод.
2) где вы нашли функцию random и что это за индусское выражение?
matrix[i][j]=(10-(-10))random(10)/10. -10;
|
Я обычно делаю так:
matrix[i][j] = int(rand() / RAND_MAX * 20 - 10);
|
| |
|
|
|
|
|
|
|
для: Фитч
(11.01.2008 в 14:22)
| | Эээм в универе припрягают так писать просто наша среда Turbo C++ 3.1 (1990-1992гг)
Я не виноват преподы заставляют жестко :((
так что извените | |
|
|
|
|
|
|
|
для: zzDimazz
(11.01.2008 в 14:50)
| | Да нет, я просто спросил)) | |
|
|
|