Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 13:34   #21
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Absraction, наиогромнейшее вам спасибо!
Приду домой, внимательно прочитаю и выдам хоть какой-нибудь результат)))
* о, что вы, что вы, я тут недавно, разбирая код быстрой сортировки, увидела., что если в начале были одни буквы, потом в функции другие буквы, а функция принимает их как начальные... в общем,, это было открытием века, так что - начнём с начал)))
Fanyuus вне форума Ответить с цитированием
Старый 22.03.2013, 20:04   #22
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Abstraction, я это прочитала.... осмысляла, но ещё не до конца... Но, уже определённо лучше)))

пара вопросов:

1 -
Код:
int main(void){
а void в скобках, это..?
*просто, мы обычно ничего не пишем в скобках у гл.функции. Пока что))


2 - мой VS2010 обижается по этому поводу... Как это можно исправить?
http://s001.radikal.ru/i195/1303/38/f934f87cb952.jpg

3 - а массив из чисел и указателей сделать можно будет?


Охх.... Спасибо Вам большое! Начинаю немного понимать что к чему в этих списках)))
Fanyuus вне форума Ответить с цитированием
Старый 22.03.2013, 20:38   #23
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
2 - мой VS2010 обижается по этому поводу... Как это можно исправить?
Цитата:
*thiz, *cur2; cur ...
Цитата:
а void в скобках, это..?
можно удалить

Цитата:
3 - а массив из чисел и указателей сделать можно будет?
опишите подробней
rrrFer вне форума Ответить с цитированием
Старый 22.03.2013, 21:53   #24
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

3 - я вот о чём подумала, rrrFer, я пытаюсь сделать трёхмерый "что-то", из двумерного массива и списка.))) Я знаю, можно было бы и просто массив, просто трёхмерный, но мне хотелось бы скорость в решении.

Или разницы между "удаляющимся списком" (удаляющийся - ключевое, т.к. всё равно все элементы с первого просматривать нужно) или не принципиально?

**но списки мне бы всё равно надо понять)))
Fanyuus вне форума Ответить с цитированием
Старый 22.03.2013, 22:05   #25
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Код:
int main(void){
а void в скобках, это..?
*просто, мы обычно ничего не пишем в скобках у гл.функции. Пока что))
В переводе с английского, void - "ничто", "пустота". int f(void) - функция f не принимает ничего и возвращает int. void g(int, float) - функция g принимает int и float и не возвращает ничего. То есть, void - это такой псевдотип для обозначения "ничего"... но с нюансами. К примеру, можно писать вот так:
Код:
void f(int a){/*...*/}

void g(int x, int y){
  return f(x+y); //надо вернуть void - вернули void
}
Актуальным этот фокус станет при знакомстве с шаблонами.

Согласно стандарту C++, если список аргументов функции пуст, это то же самое, как если бы в списке аргументов было написано void. Я бы, тем не менее, советовал явно писать void - в основном потому, что это одна из странных точек расхождения между C и C++: в C пустой список аргументов трактуется как один аргумент типа int. Странно, но факт.

Теперь отдельно о main. "На самом деле" заголовок функции main выглядит так:
Код:
int main(int argc, char** argv, char **envp)
Но поскольку функция main вызывается первый раз "необычным" образом, допустимо проигнорировать часть аргументов, начиная с последнего - т.е. можно писать ещё так:
Код:
int main(int argc, char** argv)
Ну, или int main(void). Или int main(int argc), но это сильно экзотический вариант.
Это к тому, чтобы Вы не удивлялись, когда во встреченном чужом коде у main появятся какие-то аргументы.

Цитата:
2 - мой VS2010 обижается по этому поводу... Как это можно исправить?
Здорово. Хотел упомянуть об этих граблях, а вместо этого продемонстрировал их действие на себе. C++, как известно, позволяет объявлять несколько однотипных переменных за раз:
Код:
int a, b, c; //Переменные a, b, c типа int
//Вместо этого можно написать:
int a;
int b;
int c;
Однако есть такое немного странное соглашение, что "звёздочка" относится к переменной, а не к типу:
Код:
int* a, b, c;
//То же самое, внезапно:
int* a;
int b;
int c;
Поэтому, как уже ответил rrrFer, при объявлении нескольких указателей вместе "звёздочкой" надо сопровождать каждый:
Код:
int *a, *b, *c; //a, b и c имеют тип int*
Цитата:
3 - а массив из чисел и указателей сделать можно будет?
Во-первых, массивы отдельно, списки отдельно.
Во-вторых, нельзя. Строго говоря, сделать-то можно, но использовать его потом затруднительно - потому что вот Вы вылавливаете пятый по счёту элемент, и начинаете ломать голову над вопросом: это число или указатель? C++ относится к языкам со статической типизацией, что означает, что уже при написании программы Вы обязаны знать, какой тип имеет переменная, с которой Вы работаете. Способы извернуться по принципу "если нельзя, но очень хочется" существуют, но я сомневаюсь, что в Вашем случае в них есть реальная необходимость.
Abstraction вне форума Ответить с цитированием
Старый 22.03.2013, 22:08   #26
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
3 - я вот о чём подумала, rrrFer, я пытаюсь сделать трёхмерый "что-то", из двумерного массива и списка.))) Я знаю, можно было бы и просто массив, просто трёхмерный, но мне хотелось бы скорость в решении.
Список двумерных массивов, как вариант?

Учтите, массив - самый быстрый способ организации данных в смысле времени доступа к элементам. За эту скорость он расплачивается рядом проблем - память нужна непрерывным куском, что при больших размерах становится затруднительно; нельзя просто так добавить или убрать элемент из середины; не всегда легко дописать элемент в конец и т.д. - но по скорости доступа к элементам массиву равных нет.
Abstraction вне форума Ответить с цитированием
Старый 22.03.2013, 22:29   #27
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Цитата:
Во-вторых, нельзя.
всё, "жизнь не имеет смысла"))

Abstraction, рассказываю мою задумку, а вы мне скажите, пожалуйста, через что её лучше реализовывать.

Играем в игру - "судоку".
Поле 9х9.
У нас некоторые клетки изначально заполнены.
Если берём уровень посложнее, то что выходит - просматривая массив, имеем такую картину, что в некоторых ячейках этого "двумерного массива" есть несколько вариантов.
И, чтобы не создавать миллион триллионов вариантов массивов, вот тут заводим "пространство вариантов для каждой ячейки". Получается - трёхмерный массив?

Но, понимаете ли, возникает какая проблема - когда мы найдём нужную нам пустую ячейку, запишем туда цифру - из всех "правильных" (линии и круг на 9 клеток) пространств надо убрать эту цифру. Удаление - это лучше со списками.

Хотя вроде бы и из массива можно удалить.

и пока тут думала, надумала - а может двумерый массив и 81 одномерный?
так опять надо будет либо указатель либо как-то сравнивать. О ужас.

В общем, что можете сказать по этому поводу?))
Fanyuus вне форума Ответить с цитированием
Старый 22.03.2013, 22:35   #28
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Играем в игру - "судоку".
Просто играем или решаем с помощью компьютера судоку?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.03.2013, 22:41   #29
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

BDA, я решаю, комп решает)))
*вот! т.е., я не хочу использовать простой перебор. Мне надо решить поставленную задачу по умному. А потом, я напишу параллельно (или найду) программу, которая простым перебором - и сравню, кто быстрее. О да.. не спрашивайте "зачем мне это" - делать, явно, нечего)))
Fanyuus вне форума Ответить с цитированием
Старый 22.03.2013, 23:34   #30
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Ну, простой перебор тоже неплох. Там тоже используется список (или рекурсия).
Можно использовать 2-мерный массив беззнаковых интов. Использовать 13 бит (4 на определение текущего значения, 9 на обозначение допустимых вариантов, и еще останется 19 бит "на преферанс и дам").
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Односвязный список ZavriK Помощь студентам 2 02.05.2012 22:27
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
Односвязный список masha17 Общие вопросы C/C++ 1 09.12.2009 12:20
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52