Форум программистов, компьютерный форум CyberForum.ru

Сформировать матрицу из элементов вектора - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.91
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
24.10.2010, 21:39     Сформировать матрицу из элементов вектора #1
Написать программу, которая по заданному массиву "А" из N^2 (3<=N<=10) a[1],a[2],...,a[(N^2)-1],a[N^2] формирует целочисленную матрицу В порядка N, получающаяся при "закручивании" исходного элемента по спирали:

C++
1
2
3
4
1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7
(для N = 4)

Мой код:

C++
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <clocale>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <conio.h>
int main()
{
int N,n,a[0][0],b[0][0],i,j,x,y,u,k,z,num,add,dir;
printf("vvedite N (3<=N<=10)\n\N = ");
scanf("%d",&N);
if (N<3 && N>10) {printf("N ne popal v zadaniy interval"); break;}
else
  {
x=0;
y=1;
num=1;
add=n;
dir=1;
while (add!=0) 
{
i=0;
while (i!=add) 
    {
    x=x+dir;
    a[y][x]=num;
    num=num+1;
    i=i+1;
    }
  i=0;
  add=add-1;
  while (i!=add) 
    {
    y=y+dir;
    a[y][x]=num;
    num=num+1;
    i=i+1;
    }
  dir=dir*(-1);
}
for (i=1; i<n; i++)
   {
     for (j=1; j<n; j++)
     printf("%4d",a[i][j]);
   }*/
getch();
return 0;
}
Где
n{размер матрицы}
i,j{счетчики при движениии по матрице}
x,y{координаты ячейки}
num{число в ячейке (при n=4 от 1до 16)}
add{длина отрезка от поворота до поворота}
dir{шаг =+1 при движении вправо и вниз,
=-1 при движении влево и вверх}

Как сделать, чтобы работала? Почему компилятор ругается на брейк? И как ввести массив в данном случае?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 21:39     Сформировать матрицу из элементов вектора
Посмотрите здесь:

Составить матрицу из вектора C++
Сформировать из фрагмента матрицы А(na,ma) новую матрицу B(nb,mb), сумма элементов в которой максимальна. C++
Сформировать матрицу, найти наибольшее среди средних арифметических элементов ее строк C++
C++ Сформировать матрицу размером MxN и найти наибольшее среди средних арифметических элементов ее строк.
C++ Сформировать матрицу из элементов вектора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 21:40     Сформировать матрицу из элементов вектора #2
Василий-Робот, break - работает только с циклами и switch.
C++
1
if (N<3 && N>10) {printf("N ne popal v zadaniy interval"); break;}
Тут цикла явно нету
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
24.10.2010, 21:45  [ТС]     Сформировать матрицу из элементов вектора #3
А как сделать так, чтобы программа при неправильном N выходила
я пробовал делать в do и while, но почему не получалось...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 21:46     Сформировать матрицу из элементов вектора #4
Василий-Робот, return 0; exit(0); Да что угодно по сути. return 0 я думаю будет лучше)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.10.2010, 22:19     Сформировать матрицу из элементов вектора #5
Цитата Сообщение от Lavroff Посмотреть сообщение
return 0 я думаю будет лучше
лучше будет return 1; - программа как-никак из-за ошибки завершилась...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 22:22     Сформировать матрицу из элементов вектора #6
easybudda, Ну понятное дело. Но лучше тогда уж вообще посмотреть в системе что как и возвращать то число которое символизирует код конкретной ошибки
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
24.10.2010, 22:25  [ТС]     Сформировать матрицу из элементов вектора #7
А такой вопрос: мне для матрицы В значения из массива А брать или с воздуха, но подходящие по смыслу?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.10.2010, 22:40     Сформировать матрицу из элементов вектора #8
Цитата Сообщение от Василий-Робот Посмотреть сообщение
с воздуха, но подходящие по смыслу
алгоритм не подскажете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2010, 18:36     Сформировать матрицу из элементов вектора
Еще ссылки по теме:

Сформировать матрицу, в которой столбцы расположены в порядке возрастания сумм их элементов C++
Сформировать матрицу с помощью генератора случайных чисел и организовать ее вывод C++
Сформировать и вывести на экран матрицу А размерами N*M элементов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
25.10.2010, 18:36  [ТС]     Сформировать матрицу из элементов вектора #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Разобрался самостоятельно
Код:
C++
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
#include <stdio.h>
#include <conio.h>
int main()
{
int N,WN,i,j,A[100],B[100][100],x,y,dir,num,add;
printf("vvedine N (3<=N<=10)\n\N = "); 
scanf("%d",&N);
if (N>=3 && N<=10)
{
WN=N*N;
printf("MASSIV 'A':\n");
for (i=0; i<WN; i++)
{A[i]=i+1; printf("%4d",A[i]);}
printf("\n");
x=0;
y=1;
num=1;
add=N;
dir=1;
while (add!=0) 
{
i=0;
while (i!=add) 
    {
    x=x+dir;
    B[y][x]=num;
    num=num+1;
    i=i+1;
    }
  i=0;
  add=add-1;
  while (i!=add) 
    {
    y=y+dir;
    B[y][x]=num;
    num=num+1;
    i=i+1;
    }
  dir=dir*(-1);
}
printf("MATRIX 'B':\n");
for (i=1; i<N+1; i++)
   {
     for (j=1; j<N+1; j++)
     printf("%4d",B[i][j]);
     printf("\n");
   }
}
else {printf("N ne prinadlejit zadannomu intervalu!");}
getch();
return 0;
}
Yandex
Объявления
25.10.2010, 18:36     Сформировать матрицу из элементов вектора
Ответ Создать тему
Опции темы

Текущее время: 10:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru