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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана матрица http://www.cyberforum.ru/cpp-beginners/thread107812.html
Помогите пожалуйста написать прогу на Си! Дана матрица размера SxS S-четное. Составить программу, которая выполняет обмен между четвертями матрицы. 1-3, 2-4
C++ Новая функция в С++ Разработать функцию:Функция выделяет первое слово из строки. При реализации функции запрещается пользоваться функциями библиотек языка C. Примечание. термин "слово", под ним понимается любая последовательность символов, ограниченная любым числом пробелов и/или началом/концом строки. Заранее благодарю. http://www.cyberforum.ru/cpp-beginners/thread107769.html
C++ Множества. Выполнить действия над множествами: (B - A) * C (по заданным условиям).
Доброго времени суток. Помогите пожалуйста решить задачку по множествам. условие: Задан универсум X = . Необходимо задать множества A, B, C e X, то есть множества, состоящие из натуральных чисел диапазона от 1 до 40, при чем |A|=|B|=|C|=20, заданные с помощью генерации случайных чисел. Выполнить действия над множествами (B - A) * C и вывести результат. Вот собственно и все задание....
C++ Случайные рациональные числа в массиве
Помогите, пожалуйста, наполнить массив случайными рациональными числами.. Как целыми я, вроде понял, а вот с рациональными проблема.. // Lab3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <clocale> #include <conio.h> #include <stdlib.h>
C++ Дискретная математика http://www.cyberforum.ru/cpp-beginners/thread107737.html
Кароч парни не знаю как обьяснить......кароч есть число обозначим n,и есть k количество клеток на которые его нужно розбить.Так вот привожу пример n=10;k=4.Розбивается вот так 1117 1126 -уменьшаем последнее увеличиваем предыдущее 1135 -так же 1144 -как только 2 числа равны увеличиваем предыдущее перед ним 1225 -но если предыдущее равно 2 то следуйщее должно равняться тому же числу.А...
C++ Строки (палиндромы) ЗАДАЧА: В строке символов определить слова-палиндромы, которые одинаково читаются справа налево и наоборот. Найти наибольшую длину этих слов. Если таких слов нет, то из каждого слова на непарной позиции удалить гласные и напечатать их. Код моей проги - определяет слова палиндромы в строке, находит наибольшое слово. Помогите, пожалуйста, дописать вторую часть задания...функцию для нахождения... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,394
24.03.2010, 22:56     Сформируйте линейный массив получающийся при чтении массива с левого верхнего угла до середины против часовой стрелки
Дарю решение. Пользуйся на здоровье.

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;
}
 
Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru