Войти

Показать полную графическую версию : [решено] Лабораторная. Работа с массивами


Artem-Samsung
21-05-2009, 23:23
У друга задачка, обратился ко мне, больше не к кому, а я С++ не знаю,
но всегда знаю, где спросить :)

Так вот, друзья. Нужно порешать такую задачю:

Заполнить матрицу случайными числами. Отобразить симметрично относительно горизонтальной оси секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей.


Кто чем может. Будем благодарны

pva
22-05-2009, 07:33
Заполнить матрицу случайными числами »
Сделай поиск - примеров на форуме масса.
Отобразить симметрично относительно горизонтальной оси секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей. »
то есть транспонировать? Напиши формулу, что имеется ввиду

Admiral
22-05-2009, 17:02
pva если я правильно понял Artem-Samsung'а то вывести нужно
http://s44.radikal.ru/i103/0905/11/402cc2816f12.bmp
точно осталось белым, а в результате должно получится что-то типа этого
http://s47.radikal.ru/i116/0905/4f/025e5ab15269.png
элементы отмеченные зелённым будут ответом.

Artem-Samsung
23-05-2009, 13:35
Admiral, друг подтвердил, именно так.

Admiral
23-05-2009, 20:33
Artem-Samsung, если друг использует Borland (Turbo) C++ 3.0, тогда вот исходник к программе, скрин выполнения которой приведён выше.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
main()
{
clrscr();

const p=71;
int micro[p];
int b=0;

const n=11;
const m=n;
int mas[n][m],i,j;
randomize();

for(i=0;i<n;i++)
for(j=0;j<m;j++)
mas[i][j]=random(10)+10;
textcolor(2); int key=0;
printf("---------------------------------The massive is---------------------------------\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{ if (0<=j&&j<n&&i==n-11)
{key=1; goto Oper;}
if (0<j&&j<n-1&&i==n-10)
{key=1; goto Oper;}
if (1<j&&j<n-2&&i==n-9)
{key=1; goto Oper;}
if (2<j&&j<n-3&&i==n-8)
{key=1; goto Oper;}
if (3<j&&j<n-4&&i==n-7)
{key=1; goto Oper;}
if (4<j&&j<n-5&&i==n-6)
{key=1; goto Oper;}
if (3<j&&j<n-4&&i==n-5)
{key=1; goto Oper;}
if (2<j&&j<n-3&&i==n-4)
{key=1; goto Oper;}
if (1<j&&j<n-2&&i==n-3)
{key=1; goto Oper;}
if (0<j&&j<n-1&&i==n-2)
{key=1; goto Oper;}
if (0<=j&&j<n&&i==n-1)
{key=1; goto Oper;}
World: cprintf(" %i ",mas[i][j]);
textcolor(2);
}
printf("\n");
}
printf("-------------------------------------------------------------------------------\n");
Oper:if (key==1)
{ micro[b]=mas[i][j];
b++;
textcolor(4);
key=0;
goto World;
}
int buf[p],k=0;
for (b=0;b<p;b++)
{textcolor(4);
cprintf(" %i ",micro[b]);
if (fmod(micro[b],2)==0)
{buf[k]=micro[b];k++;}
}
printf("\n\n %i of ",k);
cprintf("red");
printf(" elements are even \n\n");
for (b=0;b<k;b++)
{textcolor(6);
cprintf(" %i ",buf[b]);
}

int tmp;
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if (buf[i]>buf[j])
{
tmp=buf[i];
buf[i]=buf[j];
buf[j]=tmp;
}

printf("\n\n Assort massive \n\n");
for (b=0;b<k;b++)
{textcolor(1);
cprintf(" %i ",buf[b]);
}

return 0;
}
Помимо поставленной задачи выводит ещё какой-то массив, но это уже пускай он сам разбирается, как и пишет отчёт по проге, коза теперь есть. :)

Artem-Samsung
24-05-2009, 13:14
Admiral,
спасибо!

Artem-Samsung
01-06-2009, 21:30
Можно еще чуток побеспокоить?

Нужна матрица 9 на 9, и что бы не просто цвет подсвечивался, а симетрично цифры проставлялись.

симметрично относительно горизонтальной оси секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей.

Спасибо

http://dc133.file.qip.ru/img/90034276/9093c524/l09_e023.gif?sizeM=3




© OSzone.net 2001-2012