Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

Нова тема
Задача матрица
Тази тема е погледната 280 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 28.06.2008 23:16
Equilibrium
Калфа

Мнения: (18)

Напишете програма която прочита число от конзолата(н) и съставя матрица[n,n]  с числата от 1 до n^2 въведени в спираловидна последователност пример: N = 4

1    2    3    4
12    13    14    5
11    16    15    6
10    9    8    7



 
---------------------------
Потребител от: 31.10.07 | Всички уроци от Equilibrium | Всички скриптове от Equilibrium

Believe in yourselves and make your life eazy
напиши eMail напиши лично съобщение виж профила на Equilibrium
Публикувано на: 29.06.2008 02:22
mrhellish
Самурай

Модератор

Мнения: (210)

Представи си една матрица [5][5] и въведените й числа на квадрати, като първия квадрат съдържа първите числа от външната страна, после втория квадрат вторите числа и така....
ако не си ме разбрал ето ти скрийн






След това си ги разграничи на редове и стълбици...
(аз съм си ги разграничил със зелено)





сега си представи някое просто решение за спираловидно въвеждане на числата.
аз си го представих като един голям цикъл който се грижи за въвеждането на числата "кръголовидно" само на единя квадрат и вътре четири цикъла като всеки цикъл вевежда едната страна на квадрата..
първия цикъл за горната страна
втория цикъл за дясната страна
третия цикъл за долната страна
четвъртия цикъл лявата страна

ако нещо не разбра едно ти пак скрийн на моята представа



и тези цикли представят нещо такова като имаме една променлива 'x' която се увеличава с едно като матрицата [x] [x] е горното ляво ъгълче на квадрата на който се въвеждат числата..

този големия цикъл който въвежда страните на квадрат изглежда нещо такова като n е матрицата[n][n]

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
int i,j;
for (int x=0; n>0; n=-2, x++)
{
i=j=x;

//цикъл
1 (горната стрелка)
for (; j<=x+n-1; j++)
{
cout<<"masiv["<<i<<"["<<j<<"]= ";
cin>>masiv[i][j];
}

//цикъл
2 (дясната стрелка)
for (; i<=x+n-1; i++)
{
cout<<"masiv["<<i<<"["<<j<<"]= ";
cin>>masiv[i][j];
}


//цикъл
3 (долната стрелка)
for (; j>=x+1; j--)
{
cout<<"masiv["<<i<<"["<<j<<"]= ";
cin>>masiv[i][j];
}


//цикъл
3 (долната стрелка)
for (; i>=x+1; i--)
{
cout<<"masiv["<<i<<"["<<j<<"]= ";
cin>>masiv[i][j];
}
}

хубаво е да си създадеш една променлива n2 например която да ти пази стойноста на n за после когато ще се извежда масива

това беше моята представа за задачката... дано съм помогнал


 
Това мнение е редактирано от mrhellish на 29.06.2008 02:28
---------------------------
Потребител от: 12.04.08 | Всички уроци от mrhellish | Всички скриптове от mrhellish

MrHellish™
напиши eMail напиши лично съобщение виж профила на mrhellish
Публикувано на: 29.06.2008 19:07
mrhellish
Самурай

Модератор

Мнения: (210)

Горния пост го писах в спящ режим за това може и да не си разбрал, ето направо целия кодд който аз написах :-)CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

int main()
{
   
int s[100][100];
   
int n; cout<<"n = "; cin>>n;
   
int n2; n2=n;

   
int i,j,x=0;
   
for (; n>1; x++)
    {
       
i=x;
       
j=x;

       
for (; j<=x+n-2; j++)
        {
           
cout<<"s["<<i<<"]["<<j<<"]= ";
           
cin>>s[i][j];
       
}


       
for (; i<=x+n-2; i++)
        {
           
cout<<"s["<<i<<"]["<<j<<"]= ";
           
cin>>s[i][j];
       
}


       
for (; j>=x+1; j--)
        {
           
cout<<"s["<<i<<"]["<<j<<"]= ";
           
cin>>s[i][j];
       
}

       
       
for (; i>=x+1; i--)
        {
           
cout<<"s["<<i<<"]["<<j<<"]= ";
           
cin>>s[i][j];
       
}
       
n= n-2;
   
}

   
if (n == 1)
    {
       
cout<<"s["<<x<<"]["<<x<<"]= ";
       
cin>>s[x][x];
   
}

   
n = n2;
   
for (i=0; i<=n-1; i++)
    {
       
for (j=0; j<=n-1; j++)
       
cout<<setw(5)<<s[i][j];
       
cout<<endl<<endl;
   
}

   
getch();
   
return 0;
}
/* ПП. Писал съм го на
Visual C++ 6.0 */


 
Това мнение е редактирано от mrhellish на 29.06.2008 19:10
---------------------------
Потребител от: 12.04.08 | Всички уроци от mrhellish | Всички скриптове от mrhellish

MrHellish™
напиши eMail напиши лично съобщение виж профила на mrhellish
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   





IT-PLACE.NET © 2004 - 2008