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

переписать или исправлять? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры данных на практике http://www.cyberforum.ru/cpp-beginners/thread640972.html
Прошел структуры данных (связные списки, стек, очередь, дерево), но когда, зачем, как часто и при каких обстоятельствах прибегают к их использованию?:scratch: Заранее спасибо за ответы.
C++ Reset приложения или как снять все задачи внутри программы всем привет. столкнулся с проблемой: приложение после клика кнопки должно выдавать анимацию на Image по картинке, т.е. в цикле постоянно открывать новую картинку из папки... но тут такое дело, что надо сделать так, чтоб при повторном нажатии этой же кнопки (ну или другой), пошло "воспроизвидение" другой анимации с начала, а после завершения - не продолжалась старая, т.е. снимались все задачи... http://www.cyberforum.ru/cpp-beginners/thread640971.html
Заполнение не квадратной матрицы по диагоналям змейкой C++
Пробовал написать программу, но мой вариант адекватно работает только с квадратными матрицами. Помогите подправить программу. Вот код: #include<iostream> #include<conio.h> using namespace std; void Snake_diagonal(int n, int m, int **a); void Output_Del(int n, int m, int **a); int main() { int **a;
Вывод текста в конкретной позиции окна C++
Дана задача: Есть некоторая строка вида - Введите дату __.__.__(ДД.ММ.ГГГГ) Необходимо,чтобы "Введите дату" отобразилось через координаты в одном месте окна, __.__.__ в другом с вводом данных через клавиатуру и проверкой на правильность ввода. Реализуемо это через чистый С++?
C++ Дано натурально число N. Сколько различных цифр встречается в его десятичной записи? http://www.cyberforum.ru/cpp-beginners/thread640924.html
Дано натуральное число n. Определить количество различных цифр в нем. Например, в числе 1234 количество различных цифр равно 4, а числе 22424-2, а числе 333-1.
C++ Выделение памяти под структуры Когда я только знакомился с кодингом на С(С++) я скачивал с инета очень много всякой литературы... Так вот... Недавно я начал заново перечитывать эти книжки(статьи), хотел проверить насколько я продвинулся. (лол че...) Наткнулся на такую вот инфу: Когда sizeof применяются к имени типа структуры или объединения или к идентификатору имеющему тип структуры или объединения, то результатом является... подробнее

Показать сообщение отдельно
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
24.08.2012, 01:29     переписать или исправлять?
Можно и эту версию доработать. Но сначала покритикую.
Во-первых, конечно, нужно делать задачу двухмерным массивом. Всегда интересовал ход мыслей тех людей, которые двухмерные таблицы пытаются представить одномерным массивом...
Во-вторых, динамическое обьявление поля:
C++
1
2
3
int* *numbers=new int*[numbersInRow];
for(int i=0; i<numbersInRow; i++)
numbers[i]=new int[numbersInRow];
И инициализация:
C++
1
2
3
4
for(int i=0; i<numbersInRow; i++)
for(int j=0; j<numbersInRow; j++)
numbers[i][j]=numbersInRow*i+j+1;//Это расстановка уже сложеных пятнашек
numbers[numbersInRow-1][numbersInRow-1]=0;//Обозначение пустой клетки
Чесно говоря, в тексте функции generation до конца не разобрался. Она должна костяшки перемешивать, так? Причем, если я правильно понял, вы их именно переставляете, а не спонтанно выкладываете на доску? Это правильно, ведь ровно половина всех начальных расстановок вообще не соберется.
Далее, вызов функции win вы так и не сделали... В control его. Можно цикл while переписать как while(!win(...))
Кстати, саму функцию я бы тоже подправил. По ходу игры нам не будет важно количество правильно установленых камней, нам будет важно ВСЕ ли они установлены правильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void win(...)
{
bool w=true;//флаг поменяет свое значение, как только мы наткнемся на камень не на своем месте
for(int i=0; i<numbersInRow-1; i++)
{
for(int j=0; j<numbersInRow; j++)
if(numbers[i][j]!=numbersInRow*i+j+1)
{
w=false;
break;
}
if(!w)
break;
}
for(int i=0; i<numbersInRow-1; i++)
if(numbers[numbersInRow-1][i]!=numbersInRow*(numbersInRow-1)+i+1)
{
w=false;
break;
}
return w;
}
Ну, и я бы по-другому сделал систему управления, но тут уж дело вкуса.
 
Текущее время: 01:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru