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

из листа клетчатой бумаги N*N клеток вырезали М клеток . на сколько кусков распадается оставшаяся часть листа? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ NUMLINES в WinApi http://www.cyberforum.ru/cpp-beginners/thread369422.html
Что такое это NUMLINES в WinApi и как оно рассчитывается? Петзольд в примере постоянно его использует, пример SetScrollRange(hwnd,SB_VERT,0,NUMLINES,FALSE); но нигде никакой новой переменной предварительно не создаётся такой, так чему же равно значение этой переменной (или константы). Я так догадываюсь что это в зависимости от системы оно как-то рассчитывает сколько строк влезет на экран или...
C++ Сравнение 2 строк сравнивать строки я умею тут вопрос немного в другом. по какому принципу определяет что ab больше ba все мы канешно понимаем алфавит и всякое такое но компилятор не мы. от объясните как среда разработки щитает разницу? З.Ы. Надеюсь на оперативный ответ! http://www.cyberforum.ru/cpp-beginners/thread369416.html
C++ Двойное Неравенство
Прошу помочь найти ошибку в коде: #include <iostream> using namespace std; int main () { unsigned long A, B, C, D; int Cou = 0; freopen ("input.txt", "r", stdin); cin >> A >> B >> C >> D; for (int x; x < D; x++) { if ((A <= B*x + C) && (B*x + C < D))
Выполнение чистых виртуальных функции C++
Программа выдает ошибку в строке 50-51-51 переопределены различные базовые типы ??? Помогите пожалуйста разобраться задачей #include<iostream> using namespace std; class Shape { public: Shape(){}// объявляю конструктор по умолчанию virtual ~Shape(){}// виртуальный диструктор
C++ дали тест на паре, пару вопросов http://www.cyberforum.ru/cpp-beginners/thread369376.html
Тест по спп 1) typedef struct time {int hour; int minute: int second }Time: Time lesson Выбрать операторы, содержащие ошибки:
C++ Возможно ли сделать кастом окна и кнопки для программ на builder Насколько понимаю, есть WinAPI и куча библиотек - это то место откуда С++ генерирует окна (пользовательские формы / поля ввода / кнопки и т.п.). Т.е. чтобы сделать свою dll с шаблонами или как это обозвать нужно знать WinAPI и DLL??? Помогите плз с литературой по этому вопросу)) подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.10.2011, 12:32     из листа клетчатой бумаги N*N клеток вырезали М клеток . на сколько кусков распадается оставшаяся часть листа?
Цитата Сообщение от danzel1 Посмотреть сообщение
он почемуто не работает:
См комментарии:
Цитата Сообщение от danzel1 Посмотреть сообщение
for(int i=0;i<m;i++){
int x,y;
cin >> x >> y;
pole[x+1][y+1]=666;// наверное имелось ввиду: pole[x-1][y-1]=666; обычно в таких задачах нумерация строк и столбцов начинается с 1

тогда это:
Цитата Сообщение от danzel1 Посмотреть сообщение
for(int i=n+1;i<102;i++){
for(int j=n+1;j<102;j++){
pole[i][j]=666;
}
переделывается так:
C++
1
2
3
4
5
        for(int i=n;i<102;i++){
                for(int j=n;j<102;j++){
                        pole[i][j]=666;
                }
        }
А вот это:
Цитата Сообщение от danzel1 Посмотреть сообщение
for(int i=1;i<n+1;i++){
for(int j=1;j<n+1;j++){
//if(pole[i][j]==0){
// pole[i][j]=chislo;
// pole[i][j+1]= pole[i][j+1]==0 ? chislo : pole[i][j+1];
// pole[i][j-1]= pole[i][j-1]==0 ? chislo : pole[i][j-1];
// pole[i+1][j]= pole[i+1][j]==0 ? chislo : pole[i+1][j];
// pole[i-1][j]= pole[i-1][j]==0 ? chislo : pole[i-1][j];
// if(pole[i][j+1]!=0 && pole[i][j-1]!=0 && pole[i+1][j]!=0 && pole[i-1][j]!=0)chislo++;
//}
if(pole[i][j]==chislo){
if(pole[i][j+1])pole[i][j+1]=chislo;
if(pole[i][j-1])pole[i][j-1]=chislo;
if(pole[i+1][j])pole[i+1][j]=chislo;
if(pole[i-1][j])pole[i-1][j]=chislo;
if(pole[i][j+1]!=0 && pole[i][j-1]!=0 && pole[i+1][j]!=0 && pole[i-1][j]!=0)chislo++;
}
}
}
совсем не правильно. Внимательно посмотрите - я даже не тестировал Ваш код, но вижу, что после таких циклов chislo всегда останется равным 0. Вам здесь подойдет поиск в ширину лучше с использованием очереди.
Делаете цикл while() в котором ищете любой элемент равный 0 (если не находите, то выходите из цикла). Найденный элемент добавляете в очередь и помечаете его например тем же значением 666. Затем во внутреннем цикле добавляете в очередь все элементы рядом с начальным в очереди равные 0 (не забывая их тоже помечать). Как только очередь закончилась, то chislo++;
 
Текущее время: 19:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru