Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

owner_bg

Потребител
  • Регистрация

  • Последно онлайн

  1. Задачата е следната. : Дадена е мрежа от n x m квадратчета, като за всяко квадратче е определен цвят - бял или черен. Път ще наричаме редица от съседни във вертикално или хоризонтално направление квадратчетата с един и същ цвят. Област ще наричаме множество от квадратчета с един и същ цвят между всеки две, от които има път. Дадено е квадратче. Да се определи броят на квадратчетата от областта, в която се съдържа даденото квадратче. Задачата мислех, че съм я решил, обаче при определени стойности ми дава грешни резултати. Изглежда, че проблемът е във функциите ver и hor, но Не мога да видя какъв е проблемът. Аз ползвам следната матрица, при координати x = 0, y = 2, очаквайки вертикално да не участва в област, а хоризонтално да участва в област от 3 квадратчета. 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1; Ето кода: #include <iostream> #include <iomanip> using namespace std; int a[20][20]; int m, n, k; void readarr(int, int, int a[][20]); void writearr(int, int, int a[][20]); int hor(int, int); int ver(int, int); int main() { int x, y; cout << "Rows: "; cin >> n; cout << "Columns: "; cin >> m; cout << endl; cout << "Enter coordinates X & Y." << endl; cout << "X = "; cin >> x; cout << "Y = "; cin >> y; readarr (n, m, a); k = a[x][y]; writearr (n, m, a); if (a[x][y+1] != k && a[x][y-1] != k) cout << "Kvadrat4eto s poso4enite koordinati u4astva horizontalno v oblast s 1 kvadrat4e" << endl; else if (a[x][y+1] != k || a[x][y-1] != k) cout << "Kvadrat4eto s poso4enite koordinati ne obrazuva oblast horizontalno." << endl; else if (hor(x, y) == m) cout << "Kvadrat4eto s poso4enite koordinati u4astva horizontalno v oblast s " << m - 2 << " kvadrat4eta." << endl; else cout << "Kvadrat4eto s poso4enite koordinati u4astva horizontalno v oblast s " << hor (x, y) << " kvadrat4eta." << endl; a[x][y] = k; if (a[x-1][y] != k && a[x+1][y] != k) cout << "Kvadrat4eto s poso4enite koordinati u4astva vertikalno v oblast ot 1 kvadrat4e" << endl; else if (a[x-1][y] != k || a[x+1][y] != k) cout << "Kvadrat4eto s poso4enite koordinati ne obrazuva oblast vertikalno." << endl; else if (ver(x, y) == n) cout << "Kvadrat4eto s poso4enite koordinati u4astva vertikalno v oblast s " << n - 2 << " kvadrat4eta." << endl; else cout << "Kvadrat4eto s poso4enite koordinati u4astva vertikalno v oblast s " << ver (x, y) << " kvadrat4eta." << endl; system ("pause"); return 0; } void readarr(int n, int m, int a[][20]) { cout << "Vuvedete mrejata, kato '0' e bqlo, a '1' e 4erno kvadrat4e: " << endl; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { cout << "a[" << i << "][" << j << "]="; cin >> a[i][j]; } } void writearr(int n, int m, int a[][20]) { cout << "MREJA: " << endl; for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) cout << setw(5) << a[i][j]; cout << endl; } } int hor(int x, int y) { if (x < 0 || x > n - 1 || y < 0 || y > m - 1) return 0; if (a[x][y] != k) return 0; a[x][y] = -1; return 1 + hor(x, y - 1) + hor(x, y + 1); } int ver(int x, int y) { if (x < 0 || x > n - 1 || y < 0 || y > m - 1) return 0; if (a[x][y] != k) return 0; a[x][y] = -1; return 1 + ver(x - 1, y) + ver(x + 1, y); } ver намира области във вертикално направление, hor в хоризонтално. Някакви идеи? И на съвсем нов код пак ще съм доволен, макар че се съмнявам на някой да ми се занимава.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.