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

Задача на С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дан одномерный массив. Получить из исходного массива матрицу K-го порядка. http://www.cyberforum.ru/cpp-beginners/thread384712.html
Дан одномерный массив. Получить из исходного массива матрицу K-го порядка. Лишние элементы одномерного массива игнорируются. Если элементов не хватает, то оставшиеся элементы матрицы полагаются равным нулю. Запись в матрицу происходит по строкам.
C++ Задача на строки Очень нужно) заранее спасибо:) **При написании программ использовать нуль–терминированные строки и работать только с типом char . Длина каждой строки не превосходит 300 символов. Словом, входящим в состав строки, назовём непрерывную последовательность символов, ограниченную символами–разделителями, началом и концом строки. Символы, относящиеся к разделителям, определяет пользователь, если... http://www.cyberforum.ru/cpp-beginners/thread384711.html
помогите пожалуйста с решением C++
Учитывая последовательность (N) круглых, квадратныч и фигурныч скобок. Узнайте, можно ли добавить цифры и арифметические операции, чтобы вы могли получить правильное арифметическое выражение. вход Первая строка содержит число в скобках - N (1 ≤ N ≤ 100 000). Вторая содержит последовательность N символов из множества () {}. выходной Отображает слово "Да", если вы можете получить...
C++ Дайте совет как вывести простые несократимые дроби в порядке возрастания.
Надо вывести в порядке возрастания все простые несократимые дроби из интервала (0;1), знаменатели которых не превосходят заданного P<=9. Набрасал этот код, но если m > 4, то уже неверно. #include <iostream> int NOD(int a,int b) { while(a!=0 && b!=0) {
C++ списки http://www.cyberforum.ru/cpp-beginners/thread384680.html
написать функцию, удаляющую первый отрицательный элемент списка.
C++ необходимо переделать программу, чтобы вместо обычных массивов были динмические всем заранее спасибо :friends: # include "iostream" # include <math.h> # include "iomanip" # include "strstream" # include "fstream" using namespace std; int main() подробнее

Показать сообщение отдельно
Niconov
Сообщений: n/a
15.11.2011, 20:56     Задача на С++
Добрый день! Прошу помощи в такой задаче:
Пользователь вводит размер таблицы (sizeX sizeY) и начальную боковую ячейку (startX startY), с которой нужно начинать действия.
Согласно этим условиям требуется заполнить данную таблицу по спирали (по часовой стрелке) начиная со стартовой ячейки. Каждая из ячеек таблицы должна быть заполнена.
Вот примеры таких таблиц:
Код
таблица 7х5, начало startX=2, startY=1.

21 1  2  3  4  5  6
20 22 23 24 25 26 7
19 33 34 35 36 27 8
18 32 31 30 29 28 9
17 15 14 13 12 11 10
вот два экземпляра моего кода (1ый будет "чистовиком", 2ой - тестовый, который нужно подредактировать).

Итак 1ый:
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
#pragma hdrstop
#pragma argsused
 
#include <iostream.h>
#include <conio.h>
 
int sizeX;
int sizeY;
int startX;
int startY;
int n =1;
int x;
int y;
int st = 0;//текущая  сторона
int size;
void enter()
{
    cout << "vvedite max x & y \n";
    cin >> sizeX;
    cin >> sizeY;
    cout << "vvedite start X & Y\n";
    cin >> startX;
    cin >> startY;
    size = sizeX*sizeY;
}
 
void print(int **Mas)
{
    for (y=0; y < sizeY; y++)
    {
        for (x = 0; x < sizeX; x++) {
            cout << " " << Mas[y][x];
                if (x == sizeX-1) {
                    cout << "\n";
                }
        }
    }
}
 
#pragma argsused;
void main(int argc, _TCHAR* argv[])
{
enter();
cout << "vvedenni razmery" <<  sizeX << "x" << sizeY << " nachalo: x=" << startX << "y=" << startY << "\n";
 
int **Mas = new int*[sizeY];
 
    for ( int i = 0; i < sizeY; i++ ) Mas[i] = new int[sizeX];
    for ( int y = 0; y < sizeY; y++ ) {
        for ( int x = 0; x < sizeX; x++ ) Mas[y][x] = 0;}
 
 
while (n == size){
    if (startX==1 && !(startY==1)) {
    //выполнение движения вверх
        for (x = startX; x < sizeX+1; x++) {
 
        }
    }
    if (!(startX==1) && startY==sizeY) {
    //движение влево
    }
    if (startX==sizeX && !(startY==sizeY)) {
    //движение вниз
    }
    if(!(startX==sizeX) && startY=1) {
    //движение влево
    }
 
}//кц
 
 
 
print(Mas);
getch();
}
И вот второй, для редактирования:
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream.h>
 
using namespace std;
 
      int sizeX;
      int sizeY;
      int startX;
      int startY;
      int napr;
      int summ;
      int x;
      int y;
      int n = 1;
      int m = 0;
      int **mass = new int*[sizeX];
      int **mass_p = new int*[sizeX];
      int nX = 0; //корректировка
      int nY = 0; //корректировка
      int tX;
      int tY;
 
void vpravo(int n, int **mass){
y=startX;
    for (x=startX; x < sizeX ; x++) {
        mass[x][y] = n;
        n++;
        nY++;
    }
       /* спорно    startX=sizeX-1;
        startY=sizeY-1; */
 
}
 
void vniz(int n, int **mass){
x=startX;
    for (y=0; y == sizeY; y++) {
        mass[x][y] = n;
        n++;
        }
}
 
void vlevo(int n, int **mass){
y=startY;
    for (x=sizeX-1; x == 0; x--) {
        mass[x][y] = n;
        n++;
    }
}
 
void vverh(int n, int **mass){
y=startY;
    for (y=sizeY-1; y == 0;  y--) {
        mass[x][y] = n;
        n++;
        tX = 1;
        tY = 1;
    }
}
 
void print()
{
  for ( y = 0; y < sizeY; y++ )
  {
    for ( x = 0; x < sizeX; x++ )
    {
      if ( mass[y][x] < 10 ) cout << "" << mass[y][x] << "   ";
      else
         if ( 10 < mass[y][x] && mass[y][x] <= 100 ) cout << "" << mass[y][x] << "  ";
         else if ( 100 < mass[y][x] && mass[y][x] <= 1000 ) cout << "" << mass[y][x] << " ";
         else cout << mass[y][x] << "";
    }
    cout << endl;
  }
}
 
int main ()
{
    cout <<"Hello! Enter size of table X*Y \n";
    cin >> sizeX;
    cin >> sizeY;
    cout <<"Enter start position on border: \n X: ";
    cin >> startX;
    cout <<"\n Y: ";
    cin >> startY;
    cout << "\nSize table:" << sizeX << "x" << sizeY << "\n";
     {
        if (!(startX == 1 ||  startY == 1 ||  startX ==  sizeX ||  startY ==  sizeY))
            {cout << "No border sector"; cin>> ""; return 0; }
     };
 
     tX=startX;
     tY=startY;
     for ( int i = 0; i < sizeY; i++ ) mass[i] = new int[sizeY];
     for (x=0; x < sizeX; x++) {
        for (y=0; y < sizeY; y++) {
            mass[x][y] = 0;
        }
     }
    cout << "\n";
 
 
  while (n == summ){
 
 
 
                if (tX==1 && !(tY==1)) { //движение вверх
                    cout << "1";
                    vverh(n, mass);
                    break;
                    }else{
                                if (!(tX==1) && tY==sizeY) {//движение влево
                                vlevo(n, mass);
                                cout <<"2";
                                break;
                                    } else {
                                            if (tY==1 && !(tX==sizeX)  ) { //движение вправо
                                                vpravo(n, mass);
                                                cout << "3";
                                                break;
                                                } else { if (tX==sizeX && tY==1) { //движение вниз
                                                        cout << "4";
                                                        vniz(n, mass);
                                                        break;
                                                        }
                                                        }
                                                }
 
 
                 }                              }
 
    print();
 
 
cin >>"";
return 0 ;
};
и вот еще работающая программа, но заполняет только с первой ячейки, ссылка на архив программы+исходников

Прошу помощи по выполнению этой задачи! Помогите кто чем может с алгоритмом заполнения...

//Извините за мой французский, но Си++ я изучил в ускоренных темпах за 6 дней как смог, поэтому с радостью послушаю комментарии по коду
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru