Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 2
Регистрация: 05.02.2013
Сообщений: 98
1

Вывод в системе programming-challenges - сравнить две реализации

24.09.2014, 21:51. Показов 415. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
И снова добрый день!
Я конечно не знаю, может быть я тупой критично не внимателен, но может мне кто нибудь объяснит чем мой вывод:
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
#include <iostream>
using std::endl;
using std::cout;
using std::cin;
 
#include <vector>
using std::vector;
 
void obnul(char x[][100])
{
    for (int i=0,j=0;i<100;i++,j=0)
        for (;j<100;j++)
            x[i][j]=0;
}
 
void obnul_i(int x[][100])
{
    for (int i=0,j=0;i<100;i++,j=0)
        for (;j<100;j++)
            x[i][j]=0;
}
 
void print(int x[][100],int i_m,int j_m, int k)
{
    cout << "Field #" << k << ":" << endl;
 
    for (int i=0,j=0;j<j_m;j++,i=0)
    {
        for (;i<i_m;i++)
            if (x[j][i] != -1)
            cout << x[j][i]<<"";
            else
            cout << "*";
        cout << endl;
    }
 
}
 
int main()
{
    int stroka=0,stolb=0,count=0,k=0; 
    char field[100][100];
    int out_field[100][100];
 
    obnul(field);
    obnul_i(out_field);
 
    for(;;)
    {
 
 
        cin >>  stroka>> stolb;
 
        if (stroka==0 && stolb==0)
            break;
 
 
 
        for (int i=0,j=0;j<stroka;j++,i=0)
            for (;i<stolb;i++)
                cin >> field[j][i];
 
 
 
        for (int i=0,j=0;j<stroka;j++,i=0)
            for (;i<stolb;i++)
                if (field[j][i] != '*')
            {
                if (j+1 < stroka)
                {
                    if (field[j+1][i] == '*')
                        count++;
 
                    if (i+1 < stolb)
                    if (field[j+1][i+1] == '*')
                        count++;
 
                    if (i-1 >= 0)
                    if (field[j+1][i-1] == '*')
                        count++;
                }
 
                    if (i+1 < stolb)
                    if (field[j][i+1] == '*')
                        count++;
 
                    if (i-1 >= 0)
                    if (field[j][i-1] == '*')
                        count++;    
 
                if (j-1 >=0)
                {
                    if (field[j-1][i] == '*')
                        count++;
 
                    if (i+1 < stolb)
                    if (field[j-1][i+1] == '*')
                        count++;
 
                    if (i-1 >= 0)
                    if (field[j-1][i-1] == '*')
                        count++;
 
                }
 
                out_field[j][i] = count;
                count=0;
            }
                else
                    out_field[j][i] =-1;
 
        k++;
 
        if(count>1)
            cout<<endl;
        print(out_field,stolb,stroka,k);
        
        obnul(field);
    obnul_i(out_field);
    }
 
    return 0;
}
Отличается от вывода здесь:
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
#include <iostream>
#include <vector>
#include <iterator>
#include <sstream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int rows, cols, counter;
 
    counter = 1;
    cin>>rows>>cols;
    while(rows != 0 && cols != 0) {
        vector< vector< char > > vc;
 
        for(int i = 0; i < rows; i++) {
            vector< char > row;
            char c;
            for(int j = 0; j < cols; j++) {
                cin>>c;
                row.push_back(c);
            }
            vc.push_back(row);
        }
 
        vector< vector< int > > vi;
 
        for(int i = 0; i < rows; i++) {
            vector< int > row;
            for(int j = 0; j < cols; j++) {
                row.push_back(0);
            }
            vi.push_back(row);
        }
 
        for(int i = 0; i < rows; i++) {
            for(int j = 0; j < cols; j++) {
                if(vc.at(i).at(j) == '*') {
                    if(i > 0) {
                        vi.at(i - 1).at(j) += 1;
                    }
                    if(i < rows - 1) {
                        vi.at(i + 1).at(j) += 1;
                    }
                    if(j > 0) {
                        vi.at(i).at(j - 1) += 1;
                    }
                    if(j < cols - 1) {
                        vi.at(i).at(j + 1) += 1;
                    }
                    if(i > 0 && j > 0) {
                        vi.at(i - 1).at(j - 1) += 1;
                    }
                    if(i < rows - 1 && j > 0) {
                        vi.at(i + 1).at(j - 1) += 1;
                    }
                    if(i > 0 && j < cols - 1) {
                        vi.at(i - 1).at(j + 1) += 1;
                    }
                    if(i < rows - 1 && j < cols - 1) {
                        vi.at(i + 1).at(j + 1) += 1;
                    }
                }
            }
        }
 
        if(counter > 1) {
            cout<<endl;
        }
        cout<<"Field #"<<counter<<":"<<endl;
        for(int i = 0; i < rows; i++) {
            for(int j = 0; j < cols; j++) {
                if(vc.at(i).at(j) == '*') {
                    cout<<"*";
                } else {
                    cout<<vi.at(i).at(j)<<"";
                }
            }
            cout<<endl;
        }
 
        counter++;
        cin>>rows>>cols;
    }
 
    return 0;
}
Вроде как мой вывод и второй один и тот же, но проверяющая система мой не признает почему-то. Почему?
P.S.
Если тема слишком отсталая никакая то так и скажите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2014, 21:51
Ответы с готовыми решениями:

Ввод числа в троичной системе и вывод в пятиричной системе
Доброго времени суток форумчане. В университете дали задание, ввести число в троичной системе и...

AI Challenges
Думаю все знают о старте Google AI Challenge (http://beta.aichallenge.org/) Какие ещё есть...

Как сравнить значения ComboBox и листа ячейки, если одинаковые вывод сообщения, если разные сравнить с ячейкой ниже
Добрый день. Как сравнить значения ComboBox и значения ячейки на листе, если одинаковые вывод...

Сравнить две функции
правильно ли выполнено сравнение? \lim_{x \to 0}\frac{ -2x^{1/3} }{ x^2 }=\lim_{x \to 0}\frac{...

2
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
25.09.2014, 06:49 2
видимо, проблема в алгоритме.
0
5 / 5 / 2
Регистрация: 05.02.2013
Сообщений: 98
25.09.2014, 16:26  [ТС] 3
salam, на сайте выдает Presentation error, вроде как это проблема с выводом, но он и у меня и во 2 варианте одинаковый и соответствует требованиям задачи. Много полей придумал вводил и все ок вроде. Вообще сначала использовал только 1 двумерный массив char, посмотрел на 2 вариант подумал что система проверяет вывод как числа и добавил другой.
0
25.09.2014, 16:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2014, 16:26
Помогаю со студенческими работами здесь

Сравнить две даты
Нужно сравнить 2 даты (проверить на нахождение в пределах 12.04.2010 и 24.11.2009). Как это сделать...

сравнить две таблицы
Есть две таблицы Иванов Иван Иванович 89606785533 Петров Петр Петрович...

Сравнить две даты
Всем привет, подскажите плиз чайнику как реализовать следующую задачку: пользователь должен ввести...

Сравнить две строки
Необходимо сравнить построчно содержимое 2 memo, вот так не работает: if...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru