Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/63: Рейтинг темы: голосов - 63, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15

Выбрать значения элементов матрицы по спирали

31.05.2009, 16:12. Показов 11932. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с задачкой.
Задание:Дана действительная квадратная матрица порядка n*n.Найти последовательность действительных чисел,получающихся при чтении данной матрицы по СПИРАЛИ.

Добавлено через 1 час 40 минут 34 секунды
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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
 
int main()
{
const int N=100;
int i,j,n;
float A[N][N];
printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
scanf_s("%d", &n);
 
for (i=0;i<n;i++)
for (j=0;j<n;j++)
    {
    printf("A[%d][%d]",i,j);
    scanf("%f",&A[i][j]);
    }
 
 
printf("\n Matrix n x n: ishodnaya\n\n");
 
for (i=0;i<n;i++)
{
 for (j=0;j<n;j++)
    printf("   %6.2f   ",A[i][j]);
 printf("\n");
}
Ввод массива.Как сделать функцию считывания не знаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2009, 16:12
Ответы с готовыми решениями:

Вывести на экран значения матрицы, взятые по спирали по часовой стрелке
Мне очень нужно написать программу а я несовсем понимаю как((( Здача такая: Дана матрица N*M нужно вывести на экран значения матрицы...

Задача на вывод элементов матрицы по спирали
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #define n 5 void main() { int k,j,i; int imin,jmin,imax,jmax; int a; jmin=0; ...

Процедура вывода элементов квадратной матрицы по спирали по часовой стрелке.
Собственно сабж...

15
9 / 9 / 7
Регистрация: 22.05.2009
Сообщений: 54
31.05.2009, 21:27
По спирали - это как? Из центра наружу или наоборот? Или тупо змейкой?
0
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
01.06.2009, 00:42  [ТС]
Нет не из центра.С первого элемента по часовой стрелке(змейкой).
0
9 / 9 / 7
Регистрация: 22.05.2009
Сообщений: 54
01.06.2009, 11:30
Вроде бы так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int j = 0, m = n; j <= m; j ++, m --){
   for (int i = j; i < m; i ++){
      printf ("%f ", A[j][i]);
   }
   for (int i = j + 1; i < m; i ++){
      printf ("%f ", A[i][m - j - 1]);
   }
   for (int i = j + 1; i < m; i ++){
      printf ("%f ", A[m - j - 1][m - i]);
   }
   for (int i = j + 1; i < m - 1; i ++){
      printf ("%f ", A[m - i][j]);
   }
}
1
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
02.06.2009, 08:33  [ТС]
Спасибо мысль хорошая,но надо что то доделать.
Сейчас:
массив ;4*4
1 2 3 4
5 6 7 8
9 2 4 6
45 3 4 5
результат:
-------------------------------
1 2 3 4 8 6 5 5 4 3 45 9 6 7 2 6
-------------------------------
(должно быть)
-------------------------------
1 2 3 4 8 6 5 4 3 45 9 5 6 7 4 2
-------------------------------
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.06.2009, 09:26
ну, сделай так.
смысл тот-же, но нагляднее.
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
max_h = m; //границы спирали
min_h = 0;
max_v = m;
min_v = 0;
c_h = 0; //текущие координаты
c_v = 0;
d_v= 0; //приращение координат
d_h=1; do{
printf ("%f ", A[c_h][c_v]);
c_h+=d_h;
c_V+=d_v;
if(c_h==max_h)
{
min_v++;
c_h--;
c_v++;
d_h = 0;
d_v =1;
continue;
}
if(c_v==max_v)
{
max_h--;
c_v--;
c_h--;
d_h = -1;
d_v =0;
continue;
}
if(c_h<min_h)
{
max_v--;
c_h++;
c_v--;
d_h = 0;
d_v =-1;
continue;
}
if(c_v<min_v)
{
min_h++;
c_v++;
c_h++;
d_h = 1;
d_v =0;
}
}while(c_h<>max_h)
1
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
02.06.2009, 09:55  [ТС]
А если применимо к моему коду m=n?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.06.2009, 10:03
да.
0
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
02.06.2009, 10:17  [ТС]
Понятно.Вот ещё вопросик c_h = 0; c_v = 0;//текущие координаты.Это координаты
введённого массива i и j ?
Ругается на строчку while(c_h<>max_h) ,похоже что на ">" Как можно исправить?
0
9 / 9 / 7
Регистрация: 22.05.2009
Сообщений: 54
02.06.2009, 10:34
Прости, ошибся

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (int j = 0, m = n; j <= m; j ++, m --){
        for (int i = j; i < m; i ++){
            printf ("%f ", A[j][i]);
        }
        for (int i = j + 1; i < m; i ++){
            printf ("%f ", A[i][n - j - 1]);
        }
        for (int i = j + 1; i < m; i ++){
            printf ("%f ", A[n - j - 1][n - i - 1]);
        }
        for (int i = j + 1; i < m - 1; i ++){
            printf ("%f ", A[n - i - 1][j]);
        }
    }
Добавлено через 1 минуту 25 секунд
Вместо while(c_h<>max_h) напиши while(c_h != max_h)
1
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.06.2009, 11:25
Цитата Сообщение от anta Посмотреть сообщение
Ругается на строчку while(c_h<>max_h) ,похоже что на ">" Как можно исправить?
точно. по привычке в семантике Access написал.
надо
C
1
while(c_h!=max_h)
во. уже Marinich написал.
1
1 / 1 / 0
Регистрация: 16.12.2008
Сообщений: 15
02.06.2009, 18:00  [ТС]
Всем большое спасибо за помощь.Всё разобрался!Всё работает!

Добавлено через 2 минуты 39 секунд
вот:
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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>  
#include "locale.h"
 
int main()
{
const int N=100;
int i,j,n;
float A[N][N];
printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
scanf_s("%d", &n);
 
for (i=0;i<n;i++)
for (j=0;j<n;j++)
        {
        printf("A[%d][%d]",i,j);
        scanf_s("%f",&A[i][j]);
        }
 
 
printf("\n Matrix n x n: ishodnaya\n\n");
 
for (i=0;i<n;i++)
{
 for (j=0;j<n;j++)
        printf("   %6.2f   ",A[i][j]);
 printf("\n");
}
 
for (int j = 0, m = n; j <= m; j ++, m --){
                for (int i = j; i < m; i ++){
                        printf ("%6.2f ", A[j][i]);
                }
                for (int i = j + 1; i < m; i ++){
                        printf ("%6.2f ", A[i][n - j - 1]);
                }
                for (int i = j + 1; i < m; i ++){
                        printf ("%6.2f ", A[n - j - 1][n - i - 1]);
                }
                for (int i = j + 1; i < m - 1; i ++){
                        printf ("%6.2f", A[n - i - 1][j]);
                }
        }
_getche();
}
1
 Аватар для Алёнка <3
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 26
17.12.2010, 19:15
помогите, пожалуйста, написать аналогичную программу для матрицы


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

только вывести нужно, начиная с 1 дальше 7 и тд.
то есть 1 7 12 15 11 5 4 10 14 16 13 8 2 6 3 9
0
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 4
11.02.2011, 22:26
ребят, а как сделать матрицу, что бы она начиналась из середины? без разницы в каком направлении??
0
4 / 4 / 0
Регистрация: 31.05.2009
Сообщений: 69
12.03.2011, 10:58
у меня похоже, но чуть усложнено . По заданному номеру слоя вывести матрицу .
например матрица 3*3 имеет 2 слоя.
123
456
789
1й-слой 1236874
2й-слой 5
как сделать такой вывод ?
0
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
24.04.2011, 20:50
а как сделать заполнение и чтение полосочками
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2011, 20:50
Помогаю со студенческими работами здесь

Определить сумму k элементов матрицы, расположенных по спирали, разворачивающейся по часовой стрелке
В заданном массиве A(n;m), состоящем из целых чисел , определить сумму k элементов? Расположенных по спирали, разворачивающейся по часовой...

Вывести новую матрицу,состоящую из элементов составленных при прохождении матрицы по спирали
Группой не можем решить :( Дана матрица a(n,m). Вывести новую матрицу,состоящую из элементов составленных при прохождении матрицы по...

Найти последовательность действительных чисел, получающуюся при чтении элементов матрицы по спирали
Дана действительная квадратная матрица В(7).Найти последовательность действительных чисел b1,b2,...b49, получающуюся при чтении данных по...

Cоставить одномерную матрицу B из элементов матрицы A, двигаясь от 1-го её элемента вправо по спирали к центру
Всем привет! Ребята, помогите, пожалуйста задачку решить на TB. Хотя без разницы на каком языке - нужен сам механизм. Как всегда,...

Функция: определение среднего значения четных элементов матрицы и минимального среди нечетных элементов матрицы
разработать функцию определения среднего значения парных элементов матрицы и минимального среди нечетных элементов матрицы и с ее помощью...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru