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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ink@
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 4
#1

Сформируйте линейный массив получающийся при чтении массива с левого верхнего угла до середины против часовой стрелки - C++

23.03.2010, 10:51. Просмотров 695. Ответов 2
Метки нет (Все метки)

Помогите, пожалуйста, составить программу, для решения такой задачи: Дан двумерный массив целых чисел А [ 1..N , 1..N ]. Сформируйте линейный массив В [ 1..N*N ], получающийся при чтении данного массива с левого верхнего угла до середины против часовой стрелки
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2010, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформируйте линейный массив получающийся при чтении массива с левого верхнего угла до середины против часовой стрелки (C++):

Заполнить массив числами от 1 до n^2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке - C++
Помогите построить задачку на двумерный массив! Заполнить квадратную таблицу размером n*n последовательными целыми числами от 1 до...

Заполнить матрицу с середины против часовой стрелки - C++
Нужно заполнить квадратную матрицу(то есть размер nXn) нужно заполнить по спирали, начиная с центра и продолжая идти против часовой...

Прокрутить четверти матрицы по часовой стрелке, начиная с верхнего левого угла - C++
Задание: дана матрица размерности nxn. Получить новую матрицу, переставляя её блоки(размером (n/2) x (n/2), то есть четверти) по часовой...

Повернуть массив на 90˚ против часовой стрелки - C++
Здравствуйте. Помогите пожалуйста решить задание по c++. Нужно повернуть массив на 90˚ против часовой стрелки.

Проблема с выводом массива спиралью против часовой стрелки - C++
Здравствуйте, недавно была задача, создать массив 10х10 рандомных чисел и вывести спиралью против часовой стрелки. В паскале задачу я...

Дан двумерный массив.Получить последовательность чисел, получающуюся при чтение этого массива по спирали,по часовой стрелке начиная с середины массива - C++
Не понимаю, как написать программу, выполняющую данную задачу, а вот понять хочется. Дан двумерный массив 9х9. Получить последовательность...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.03.2010, 16:01 #2
По спирали что-ли ?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
24.03.2010, 22:56 #3
Дарю решение. Пользуйся на здоровье.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//ЗДесь задание
//http://www.cyberforum.ru/cpp-beginners/thread107822.html
 
 
#include <stdio.h>
 
 
 
#define kol_vo_strok 9
#define kol_vo_stolbtsov 6
 
//#define kol_vo_strok 6
//#define kol_vo_stolbtsov 9
//#define kol_vo_strok 3
//#define kol_vo_stolbtsov 3 
//#define kol_vo_strok 1
//#define kol_vo_stolbtsov 8 
//#define kol_vo_strok 8
//#define kol_vo_stolbtsov 1 
 
 
int main(){
 //Для пример возьмём матрице [100] [50]
 //ПЕрвый виток спирали: вниз 100 клеток влево 49 (50-1) влево 99 (100-1) влево 48(50-2)
 //Второй виток 100-2, 50-3, 100- 3, 50-4
 //Третий 100-4, 50-5, 100-5, 50-6
 //Ну и так далее
 
 //Сколько таких витков- чёрт его знает
 //ПОка же в кажом витке нужно будет сделать 4 тык скыть прохода
 //ТО есть цикл for
 //А, ну, и заканчиваются витки, когда некуда будет идти. То есть кгда одна из 4-х величин будет равной 0
 //Итак, объявим эти 4 переменные, но сперва массив
 char mas [kol_vo_strok] [kol_vo_stolbtsov];
 
 int i, j, k= 0;
 
 //ЭТо мы массив заполняем
 for (i= 0; i< kol_vo_strok; i++)
  for (j= 0; j< kol_vo_stolbtsov; j++)
   mas [i] [j]= k++;
 
 //А это итоговый массив  
 char rez [kol_vo_strok* kol_vo_stolbtsov];
   
 //Теперь объявим 4 переменные
 int vniz, vlevo_1, vlevo_2, vlevo_3;
 //НАходить их будем ниже. Это на сколько клеток смещаться вниз, влево... и т. д.
 
 //Это вот будет количество витков. Люблю, грешник, польскую запись!
 int kol_vo_vitkov;
 ((kol_vo_vitkov=((kol_vo_strok> kol_vo_stolbtsov)?(kol_vo_stolbtsov):(kol_vo_strok)))%2) ?  
  (kol_vo_vitkov= kol_vo_vitkov/2+1) : (kol_vo_vitkov= kol_vo_vitkov/2);
 
// printf ("kol_vo_vitkov= %d\n", kol_vo_vitkov); 
 
 //Теперь заходим во внешний цикл. В нём проходим по виткам 
 //На каждом витке у нас существуют 4 подцикла, проход вниз, влеао, ещё влево и ещё влево
 //Идёт заполнение rez
 
 j= 0;
 for (i= 0; i< kol_vo_vitkov; i++) {
  
  
  //Всякий раз в новом витке у нас меняются эти значения и их нужно находить по новой
  //И именно в таком порядке потому что значения зависят друг о друга
  vlevo_1=  kol_vo_stolbtsov- (i*2+1);
  vniz= kol_vo_strok- (i*2);
 
  (vlevo_1)?(vlevo_2= (vniz)- 1):(vlevo_2= 0);
  (vlevo_2)?(vlevo_3= (vlevo_1)-1):(vlevo_3= 0);
//  printf ("vniz= %d\n", vniz); 
//  printf ("vlevo_1= %d\n", vlevo_1); 
//  printf ("vlevo_2= %d\n", vlevo_2); 
//  printf ("vlevo_3= %d\n", vlevo_3); 
  while (vniz) {
   printf ("%d  %d--\n", kol_vo_strok- i- vniz, i); 
   rez [j++]= mas [kol_vo_strok- i- vniz--] [i];
  }  
  while (vlevo_1) {
   printf ("%d  %d==\n", kol_vo_strok- i- 1, kol_vo_stolbtsov- i- vlevo_1); 
   rez [j++]= mas [kol_vo_strok- i- 1] [kol_vo_stolbtsov- i- vlevo_1--];
  }  
  while (vlevo_2) {
   printf ("%d  %d++\n", i- 1+ vlevo_2, kol_vo_stolbtsov- i- 1); 
   rez [j++]= mas [i- 1+ vlevo_2--] [kol_vo_stolbtsov- i- 1];
  }
  
  //НЕльзя vlevo_3>= 0  иначе не работает 3X3
  while (vlevo_3> 0) {
   printf ("%d  %d**\n", i, i+ vlevo_3); 
   rez [j++]= mas [i] [i+ vlevo_3--];
  }  
 } 
 
 for (i= 0; i< kol_vo_strok* kol_vo_stolbtsov; i++) {
  printf ("%d  ", rez [i]);
 }
 
 getchar ();
 return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2010, 22:56
Привет! Вот еще темы с ответами:

Поворот матрицы против часовой стрелки - C++
Здравствуйте! Я собрал программу для решения этой задачи, но программа всё равно не работает. // Программа_№5.cpp: определяет точку...

Заполнение матрицы против часовой стрелки - C++
Заполнить матрицу 9х9 числами, начиная с единицы: вниз - вправо - вверх - влево. Помогите, пожалуйста. Срочно надо...

Повернуть матрицу против часовой стрелки - C++
Повернуть матрицу против часовой стрелки. Я написал программу, но она не запускается. Где-то я опять ошибся. :-( // Программа_№5.cpp:...

Заполнить матрицу от левого верхнего угла по диагонали - C++
Заполнить матрицу А(9,9), от левого верхнего угла по диагонали: вправо - вверх.


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru