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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
#1

Нужно доработать задачку на двумерные массивы. - C++

16.05.2009, 21:11. Просмотров 1340. Ответов 21
Метки нет (Все метки)

#include <iostream>
using namespace std;
int main () {
int desk[8][8]={0};
int sx,sy;
int x,y;
cout<<"enter the position Slon:\n";
cin>>sx;
cin>>sy;
sx=sx-1;
sy=sy-1;
desk[sx][sy]=3;
cout<<"1-st Kon:\n";
cin>>x;
cin>>y;
x=x-1;
y=y-1;
desk[x][y]=1;
cout<<"2-st Kon:\n";
cin>>x;
cin>>y;
x=x-1;
y=y-1;
desk[x][y]=2;
int udar=0;
int i,j;
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
cout<<desk[i][j];
}
cout<<"\n";}
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
if (desk[i][j]==1&&(sx-i)==(sy-j))
{cout<<"1-kon\n";}
if (desk[i][j]==2&&(sx-i)==(sy-j))
{
cout<<"2-kon\n";}
}
}
system("pause");
}
Шахматная доска.На ней расположены 10 черных коней и белый слон.Проверить сколько коней под ударом.Но еще надо сделать так,чтобы если к примеру слон стоит на (1,1),а 2 коня на (2,2) и (3,3),то чтобы (3,3) не писалось что он под ударом...вообщем жду помощи....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
20.05.2009, 15:48  [ТС]     Нужно доработать задачку на двумерные массивы. #2
Помогите плзз...
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
20.05.2009, 17:41     Нужно доработать задачку на двумерные массивы. #3
Начинаешь от позиции, где находится слон и по очереди проверяешь 4 диагональных направления. По каждому направлению идёшь до тех пор, пока не наткнёшься на коня (в этом случае увелдичиваешь счётчик), либо не упрёшься в край доски
Undina
1 / 1 / 0
Регистрация: 12.05.2009
Сообщений: 5
22.05.2009, 00:09     Нужно доработать задачку на двумерные массивы. #4
помогите плз исправить ошибки: мне нужно посчитать сумму элементов в тех столбцах матрицы, в которой есть хотя бы 1 отрицательный элемент....
вот код проги:
#include<iostream>
#include<conio.h>
#define n 3
#define m 3

using namespace std;
int main()
{
int mas[n][m],i,j;
int sum=0;
cout<<"VVEDITE MASSIV:"<<endl;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>mas[i][j];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(mas[i][j]<0)
sum=sum+mas[j][0];

}
cout<<"SUMMA="<<sum<<endl;
getch();
return 0;
}
MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
22.05.2009, 00:39     Нужно доработать задачку на двумерные массивы. #5
что то не пойму кому помагать и что мы тут разбираем сумму или доску?
BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
22.05.2009, 11:01     Нужно доработать задачку на двумерные массивы. #6
Undina, иногда проще написать код с нуля..
Если я правильно понял задачу, должно быть как-то так:
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
#include <iostream.h>
#define A 4 //ÏðèГ*ГЁГ¬Г*ГҐГ¬ A Г§Г* ñòîëáåö,
#define B 4 //Г* B Г§Г* ñòðîêó
 
main()
{
    int Array[A][B+1], Sum=0; //Ââîäèì äîïîëГ*èòåëüГ*Г® ñòðîêó äëÿ Г¬Г*ðêèðîâêè ñòîëáöîâ, êîòîðûå áóäåì Г±Г·ГЁГІГ*ГІГј
    int i, k;
 
    for(i=0; i<A; i++) Array[i][B]=0;
 
    for(i=0; i<A; i++)
    {
        for(k=0; k<B; k++)
        {
            cout<<"Insert Array element ("<<i+1<<"; "<<k+1<<"): ";
            cin>>Array[i][k];
            if(Array[i][k]<0) Array[i][B]=1;
        }
    }
 
    for(i=0; i<A; i++)
        if(Array[i][B]==1)
            for(k=0; k<B; k++)
                Sum+=Array[i][k];
 
    cout<<"\nSum = "<<Sum<<"\n\n";
    
    
    return 0;
}
Считает сумму всех элементов столбцов с отрицательными элементами..
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
23.05.2009, 12:46  [ТС]     Нужно доработать задачку на двумерные массивы. #7
Может мне кто-то помочь?

Добавлено через 15 часов 0 минут 9 секунд
Не знаю как реализовать проверку защищенности...
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
23.05.2009, 15:57     Нужно доработать задачку на двумерные массивы. #8
Цитата Сообщение от Хакер Посмотреть сообщение
Может мне кто-то помочь?

Добавлено через 15 часов 0 минут 9 секунд
Не знаю как реализовать проверку защищенности...
В посте #3 всё же написал
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 13:21  [ТС]     Нужно доработать задачку на двумерные массивы. #9
А как сделать,чтобы при вводе неправильной координаты,например больше 8 делало снова ввод?
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
24.05.2009, 13:30     Нужно доработать задачку на двумерные массивы. #10
C
1
2
3
4
do {
  cout << "Введите значение"
  cin >> x;
} while (! (x >= 1 && x <= 8));
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 13:45  [ТС]     Нужно доработать задачку на двумерные массивы. #11
Хотелось бы как-то иначе через возврат сделать...а что с этими условиями код ппц будет...ладно пока так составлю
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
24.05.2009, 13:47     Нужно доработать задачку на двумерные массивы. #12
Иначе это как?
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 14:13  [ТС]     Нужно доработать задачку на двумерные массивы. #13
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
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
using namespace std;
int main () {
int desk[8][8]={0};
int sx,sy;
char s;
int x,y;
do {
  cout << "Pervaya koordinata Slona (Ot 1 do 8):\n";
  cin >> sx;} while (! (sx >= 1 && sx <= 8));
do {
  cout << "Vtoraya koordinata Slona (Ot 1 do 8):\n";
  cin >> sy;} while (! (sy >= 1 && sy <= 8));
sx=sx-1;
sy=sy-1;
desk[sx][sy]=3;
do {
  cout << "Pervaya koordinata 1-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 1-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=1;
do {
  cout << "Pervaya koordinata 2-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 2-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=2;
do {
  cout << "Pervaya koordinata 3-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 3-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=3;
do {
  cout << "Pervaya koordinata 4-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 4-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=4;
do {
  cout << "Pervaya koordinata 5-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 5-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=5;
do {
  cout << "Pervaya koordinata 6-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 6-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=6;
do {
  cout << "Pervaya koordinata 7-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 7-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=7;
do {
  cout << "Pervaya koordinata 8-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 8-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=8;
do {
  cout << "Pervaya koordinata 9-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 9-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=9;
do {
  cout << "Pervaya koordinata 10-go Konya (Ot 1 do 8):\n";
  cin >> x;} while (! (x >= 1 && x <= 8));
do {
  cout << "Vtoraya koordinata 10-go Konya (Ot 1 do 8):\n";
  cin >> y;} while (! (y >= 1 && y <= 8));
x=x-1;
y=y-1;
desk[x][y]=10;
int udar=0;
int i,j;
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
cout<<desk[i][j];
}
cout<<"\n";}
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
if (desk[i][j]==1&&(sx-i)==(sy-j))
{cout<<"1-kon pod udarom\n";}
if (desk[i][j]==2&&(sx-i)==(sy-j))
{
cout<<"2-kon pod udarom\n";}
if (desk[i][j]==3&&(sx-i)==(sy-j))
{
cout<<"3-kon pod udarom\n";}
if (desk[i][j]==4&&(sx-i)==(sy-j))
{
cout<<"4-kon pod udarom\n";}
if (desk[i][j]==5&&(sx-i)==(sy-j))
{
cout<<"5-kon pod udarom\n";}
if (desk[i][j]==6&&(sx-i)==(sy-j))
{
cout<<"6-kon pod udarom\n";}
if (desk[i][j]==7&&(sx-i)==(sy-j))
{
cout<<"7-kon pod udarom\n";}
if (desk[i][j]==8&&(sx-i)==(sy-j))
{
cout<<"8-kon pod udarom\n";}
if (desk[i][j]==9&&(sx-i)==(sy-j))
{
cout<<"9-kon pod udarom\n";}
if (desk[i][j]==1&&(sx-i)==(sy-j))
{
cout<<"10-kon pod udarom\n";}
}
}
system("pause");
}
Вот получившийся код...нужно дописать,чтоб координаты не повторялись и на вывод массива желательно сделать слона как S, a не 3 и с 10 конем как-то разобраться,а то массив не ровный выводится...
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
24.05.2009, 14:15     Нужно доработать задачку на двумерные массивы. #14
Насколько я понял, всю информацию ты помещаешь в массив desktop. Т.е. зная координаты ты можешь узнать, что находится на точке с этими координатами. Поэтому после ввода координакт коня проверь, пуста ли у нас соотвествующая клетка. Если не пуста, то просишь повторить ввод. После успешного ввоха отмечаешь клетку как занятую
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 16:33  [ТС]     Нужно доработать задачку на двумерные массивы. #15
Голова совсем не варит...
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
24.05.2009, 16:48     Нужно доработать задачку на двумерные массивы. #16
У тебя тут ошибка или мне кажется?
C++
1
2
3
4
5
6
7
if (desk[i][j]==1&&(sx-i)==(sy-j)) // 1 or 10?
{
cout<<"10-kon pod udarom\n";}
}
}
system("pause");
}
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 18:10  [ТС]     Нужно доработать задачку на двумерные массивы. #17
Да я уже исправил...

Добавлено через 1 час 1 минуту 14 секунд
Ну как поможет кто-то??
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
24.05.2009, 18:13     Нужно доработать задачку на двумерные массивы. #18
Поможет в чём? В том, что за тебя сделает твою работу?
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
24.05.2009, 18:22  [ТС]     Нужно доработать задачку на двумерные массивы. #19
Ну я ж показал код...не с 0 та делать...если лень так и скажи...там не так уж и много осталось.Просто немного непонятно как сделать вот и все...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2009, 18:24     Нужно доработать задачку на двумерные массивы.
Еще ссылки по теме:

нужно найти ошибку в программе с++ на двумерные массивы C++
Нужно изменить двумерные массивы на динамические C++
Нужно исправить задачку на замену значений (swap) C++
Нужно все массивы перевести в двумерные C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17392 / 5630 / 352
Регистрация: 30.03.2009
Сообщений: 15,416
Записей в блоге: 26
24.05.2009, 18:24     Нужно доработать задачку на двумерные массивы. #20
Готовый код я писать не буду в принципе. Если есть конкретные вопросы - отвечу, если конкретный вопрос стваится так "а не напишешь ли ты мне?", то понятно дело ответ "нет"
Yandex
Объявления
24.05.2009, 18:24     Нужно доработать задачку на двумерные массивы.
Ответ Создать тему
Опции темы

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