Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Лабораторная. Работа с массивами (http://forum.oszone.net/showthread.php?t=140765)

Artem-Samsung 21-05-2009 23:23 1124510

Лабораторная. Работа с массивами
 
У друга задачка, обратился ко мне, больше не к кому, а я С++ не знаю,
но всегда знаю, где спросить :)

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

Цитата:

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

pva 22-05-2009 07:33 1124674

Цитата:

Цитата Artem-Samsung
Заполнить матрицу случайными числами »

Сделай поиск - примеров на форуме масса.
Цитата:

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

то есть транспонировать? Напиши формулу, что имеется ввиду

Admiral 22-05-2009 17:02 1125075

pva если я правильно понял Artem-Samsung'а то вывести нужно

точно осталось белым, а в результате должно получится что-то типа этого

элементы отмеченные зелённым будут ответом.

Artem-Samsung 23-05-2009 13:35 1125644

Admiral, друг подтвердил, именно так.

Admiral 23-05-2009 20:33 1125877

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 1126227

Admiral,
спасибо!

Artem-Samsung 01-06-2009 21:30 1132563

Можно еще чуток побеспокоить?

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

Цитата:

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

http://dc133.file.qip.ru/img/9003427...23.gif?sizeM=3


Время: 05:18.

Время: 05:18.
© OSzone.net 2001-