Тема: допоможіть с квадратною матрицею

заповнити матрицю наступним чином , приклад на малюнку
діагональ головна 12345678987654321
і різні цифри вивести різними кольорами
пробував заповнювати масив вручну но тоді вивести різними кольорами стає проблематично
цикл ніяк не можу придумати , лише спадає на думку фор по рядкам і стовбцям але їх теж багато виходить ((

Post's attachments

IMG_20130530_110741_1.jpg 32.14 kb, 85 downloads since 2013-06-15 

2 Востаннє редагувалося Cyan (15.06.2013 23:21:48)

Re: допоможіть с квадратною матрицею

midnightcoldlove написав:

пробував заповнювати масив вручну но тоді вивести різними кольорами стає проблематично

ну то й показуйте цей варіант - уже щось

цикл ніяк не можу придумати , лише спадає на думку фор по рядкам і стовбцям але їх теж багато виходить

ну так з матрицями тільки так) можна, скажімо, через while, але for більш зручніший

Психологічні бесіди з додатковою послугою промивання мізків. Недорого.
Не дизайню. Взагалі ні разу. У назві розділу "Дизайн та графіка" є слово "графіка" - ось тут трохи шарю. І не більше. Так, часто питають.
Продам гараж

3

Re: допоможіть с квадратною матрицею

Елементарний for. Для визначення рядка, де треба двійками писАти, можна використати залишок від ділення (реальний номер рядка % кількість рядків; залишок, менший за 2, - це крайні рядки).
Дев'ятка - банально центр, себто перевірка if'ом.

З.І: зображення можна також тегом IMG показувати. Так зручніше. :)

I belong to the Dead Generation.

4

Re: допоможіть с квадратною матрицею

начебто закодив матрицю , але вона не працює , допоможіть закомпілювати
навіть не хоче виводити масив без графіки , а потрібно щоб цифри виводились різним кольорами .

 
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define n 17



void main ()
{
int i,j,k;


int mas[18][18];
for(k=0;n-k;k++)
for(i=k+1;n-k;i++)
for(j=k+1;n-k;j++)
mas[i][j]=0;
for(i=1;i<9;i++)
for(j=1;j<9;j++)
if(i+j==k+1)
{
mas[i][j]=i;
}
clrscr();

for(i=1;n;i++)
{
for(j=1;n;j++)
{

cout<<mas[i][j]<<"\t";
cout<<"\n";
} }

} 

5 Востаннє редагувалося koala (17.06.2013 15:50:35)

Re: допоможіть с квадратною матрицею

C++ не містить стандартних засобів для відображення кольору, а ми не телепати. Яка система? Який компілятор?

for(k=0;n-k;k++)
for(i=k+1;n-k;i++)
for(j=k+1;n-k;j++)
mas[i][j]=0;

І що ти тут робиш, можеш словами описати? По кожному рядку?

6

Re: допоможіть с квадратною матрицею

заповнюю матрицю від першого елемента до посліднього елементом "і" яке змінюється по ході роботи лічильників
но заповнює воно не коректно

7

Re: допоможіть с квадратною матрицею

midnightcoldlove написав:

заповнюю матрицю від першого елемента до посліднього елементом "і" яке змінюється по ході роботи лічильників
но заповнює воно не коректно

Я ж просив - по рядках.
Наприклад, що робить рядок

mas[i][j]=0;

Га?

8

Re: допоможіть с квадратною матрицею

я і самне знаю навіщо тут занюляється елемент масиву , прога не моя і цикл тут явно левий
в паскалі я ще бачив альтернативу

for k:=0 to 9 do begin  //змінюєм к від 0 до 9 
for i:=k+1 to n-k do  // потім ідем по стовбцю і змінюєм його від к+1 до н-к
for j:=k+1 to n-k do // потім ідем по рядку і змінюєм його від к+1 до н-к
mas[i][j]:=k+1 //елемент масиву = к+1
end;

9

Re: допоможіть с квадратною матрицею

koala написав:

C++ не містить стандартних засобів для відображення кольору, а ми не телепати. Яка система? Який компілятор?

компілятор під дос Борланд сі

10 Востаннє редагувалося Bartash (17.06.2013 17:02:12)

Re: допоможіть с квадратною матрицею

midnightcoldlove, а поясніть кілька моментів і правда:
1. Потрійний цикл for у двовимірнім масиві.
2. Якої давності у вас компілятор, коли користуєте iostream.h? Оновити компіль не зайве.

З.І: задати кольори можна, наприклад, отак. Можете використати функції з dos.h. Це на випадок, коли ви навели нам задачу з лаби. :)

I belong to the Dead Generation.

11

Re: допоможіть с квадратною матрицею

компіль тру олдскул
і по циклам нічого сказати не можу так як не шарю як ж заповнити срану матрицю числами блін від 1 до 9
щоб діагональ вийшла 12345678987654321
і наприклад перший рядок був з одиничок
потім другий двійки і тд

12

Re: допоможіть с квадратною матрицею

midnightcoldlove написав:

я і самне знаю навіщо тут занюляється елемент масиву , прога не моя і цикл тут явно левий

Тоді нащо ви наводили цей код, якщо він не ваш і робить не те, що вам треба? Щоб всі на форумі поламали собі голови над питанням, нащо він тут, коли він тут насправді ні до чого? Це зветься тролінгом і дуже не вітається. Читайте правила - без напрацювань задачі не розміщуються. Випадковий чужий код не є напрацюванням.

midnightcoldlove написав:

в паскалі я ще бачив альтернативу

А я бачив на вулиці мерседес. У вас конкретне питання чи так, поговорити? В другому випадку ви помилилися розділом.

midnightcoldlove написав:

компілятор під дос Борланд сі

Некрофілія на форумі не заборонена, як і в наших вишах (на жаль).

Подякували: Chemist-i, incred2

13

Re: допоможіть с квадратною матрицею

Як зробити цифри кольоровими я не знаю(ще), а що до циклу, то не бачу тут нічого складного.

    const int SZ = 17;
    int mas[SZ][SZ], current = 0;            //current - змінна, за допомогою якої ми можемо "змінити" напрям
                                //рахунку. Далі я використав геометричну функцію y = -|x|
                                //Якщо побудувати графік, то при від'ємних значеннях функція
                                //зростаюча, а при додатніх - спадаюча. 
                                //Зараз поясню цей вираз:
                                //current = -(i-8 > 0 ? i-8 : 8-i) + 8
                                //рахунок має відбуватися від -8 до 8. Для кращого розуміня
                                //я рахую від 0 до 17 - ефект той самий.
                                //оператор ?: я використав для знаходження модуля.
                                //ЦЮ ЗМІННУ Я ВИКОРИСТАВ ДЛЯ ЗАПОВНЕННЯ КВАДРАТУ 
                                //ОДНАКОВИМИ ЧИСЛАМИ(типу 1222...2221)
    for(int i = 0; i <= SZ; ++i, current = -(i-8 > 0 ? i-8 : 8-i) + 8)
        for(int j = 0; j < SZ; j++)
            if(j <= current) mas[i][j] = j+1;
            else if(SZ-j-1 <= current) mas[i][j] = SZ-j;
            else mas[i][j] = current+1;

Залишається змінити колір.

Post's attachments

Снимок.JPG 46.98 kb, 86 downloads since 2013-06-23 

14

Re: допоможіть с квадратною матрицею

incred, якщо під вінду, то отак.

Прихований текст
Я трохи не попав у попередньому пості, коли згадав про SetTextColor(): то графіка. Давно просто вивчали...
I belong to the Dead Generation.
Подякували: incred1