Что ты этим if (number == 0) continue; хотел добиться?
Однажды у меня не сработал оператор прерывания цикла break, и я использовал такой способ выхода из ситуации. Если внутри do не проверять, что за число ввёл пользователь, то 0 тоже запишется в массив, но мне это не нужно, т.к. 0 тут - лишь команда
Однажды у меня не сработал оператор прерывания цикла break, и я использовал такой способ выхода из ситуации. Если внутри do не проверять, что за число ввёл пользователь, то 0 тоже запишется в массив, но мне это не нужно, т.к. 0 тут - лишь команда smile
if - это не цикл. Это условие. Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Да, пусть велосипед, но хочется решить такую задачку без стандартных структур данных:
Я так считаю: велосипед - не велосипед, но если человек не может как следует решить такую задачу самостоятельно, без помощи форума, то нечего ему и браться за такую задачу. Пусть подрастёт, подучится, а там и решит её когда-нибудь.
Алгоритм предельно простой: закончился массив - создай новый, копируй в него старый, удаляй старый, etc. Не умеешь так - ну и Бог с тобой, однажды научишься. Пока что вот ты С++ знаешь очень плохо, и что из этого выходит? Мы перед тобой пляшем, ты не можешь толком объяснить, в чём затруднение, задача до сих пор не решена, и никто в итоге не доволен. Не надо так. Как правильно задавать вопросы
-l33t-h4xx-, воу-воу, тон поубавь, ок? Я не писал тебе в ЛС с просьбой помочь мне. Не хочешь со мной возиться, проходи мимо. Одними учебниками много не научишься, на форумах можно узнать такое, какого в книгах не видел. Не согласен? -Не пытайся меня переубедить Steel Standoff - 2D аркада. Мои статьи
Однажды у меня не сработал оператор прерывания цикла break, и я использовал такой способ выхода из ситуации.
Для тебя программирование это магия -)
Алгоритм динамического массива для блондинок -)
1. Создаем емкость например на 10 стаканов. 2. Наливаем стакан. 3. Если емкость заполнена, то создаём новую емкость двойного объёма, переливаем содержимое из меньшей емкость в большую. Старую емкость утилизируем. 5. Переходим к пункту 2.
Примечание для продвинутых блондинок -) Стратегию роста объема ёмкости нужно оптимизировать. Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
Storm54, я особо в код не вчитывался, но очень уж смахивает на реализацию однонаправленного списка. И конечно же это будет медленно работать, т.к. чтобы добраться до сотого элемента надо пройти через 99 предыдущих GameMix, в теме уже кто-то написал дельный комментарий. Когда мы делаем new, мы говорим что нам нужен непрерывный участок памяти из программной кучи. Хорошо, мы взяли такой участок в 8 байт. Захотели положить ещё 4 байта. Следовательно что значит "положить"? По логике вещей это значит продлить этот участок, т.е. добавить рядышком ещё 4 байта и склеить всё "в нечто одно". Однако мы не в сказке живём, участки памяти справа\слева могут быть заняты другими программами. Следовательно: как бы мы ни крутились, придется заново выделять память под массив. std::vector работает аналогично, просто берет массив с "запасом". Для того, чтобы добавить элемент в массив надо: 1)Создать временный массив и скопировать в него значения 2)Для первоначального вновь выделить память, но так, чтобы в него поместился ещё один элемент 3)В первоначальный массив положить старые значения 4)В последний элемент записать значение, которое нужно 5)(в зависимости от способа хранения промежуточных данных)освободить память, выделенную под промежуточный массив
ЦитатаGameMix ()
-l33t-h4xx-, воу-воу, тон поубавь, ок? Я не писал тебе в ЛС с просьбой помочь мне. Не хочешь со мной возиться, проходи мимо. Одними учебниками много не научишься, на форумах можно узнать такое, какого в книгах не видел. Не согласен? -Не пытайся меня переубедить smile
Я тоже не согласен :)
Сообщение отредактировал Saitei - Вторник, 13 Мая 2014, 03:01
Одними учебниками много не научишься, на форумах можно узнать такое, какого в книгах не видел.
Я бы на этом месте запросто согласился и замолчал, если бы твой код не был белой горячкой. Вот наугад программирует, а потом возмущается, что кто-то смеет его поучать.
Чтобы не оффтопить, приложу своё видение решения. Нет remove.
class Vec { public: int get(int index); int insert(int number); int len(); Vec(int size, int incr); ~Vec(); private: int size; int last; int incr; int *data; void resize(int inc); };
Ребята появился вопрос ( очередной вопрос от нуба) использовать в реализации своей 2д игры OpenGl+c++ или XNA+C# , и в том и в том случае опыта мало, хотя с OpenGL немного побольше знаком, но все равно пока что мало(на уровне : отрисовки примитивов 2D/3D, анимация , свет, только недавно начал изучать текстурирование) ..И вот вопрос как посоветуете поступить, остаться на плюсах и подтянуть свое программирование со дна на них или остаться в XNA в котором тоже мало чего знаю, конечно же мне предпочтительнее плюсы из-за того, что я очень много вакансий на них вижу, то есть если даже пойду дальше не в игрострой , а просто работать программистом , т оя думаю что они мне будут полезней. Так что нид ваша помощь.. [url=http://diablodisplay.com/][img]http://diablodisplay.com/uploads/posts/2011-09/1315831364_diablo3-userbar-19.jpg[/img][/url]
Storm54, я особо в код не вчитывался, но очень уж смахивает на реализацию однонаправленного списка. И конечно же это будет медленно работать, т.к. чтобы добраться до сотого элемента надо пройти через 99 предыдущих
Там я добавил указатель на последний элемент. smile
Но это не отменяет того факта, что это реализация списка, а не вектора) Если придется идти к среднему элементу будет точно так же..) OpenGOO, дело в том, что вектор берет элементы с "запасом", чтобы зря не перевыделять память. Т.е:
ЦитатаOpenGOO ()
3 4
если, имея 3 элемента, мы сделаем push_back, то память выделяться не будет, элемент всего лишь встанет в конец
Помогите пожалуйста. Что у меня не так? Допустим нажимаю на "1", он показывает январь и после чего пишет "нажмите любую клавишу для завершения". А как сделать так, чтобы я мог не перезапускать каждый раз программу, а вводить много раз числа за один?
Код
#include <iostream> using namespace std;
int main() { setlocale(LC_ALL, ".1251"); int n; cout << "Введите номер месяца: "; cin >> n; cout << endl; switch (n)
{
case 1: cout << "Месяц: январь, время года: зима"; break; case 2: cout << "Месяц: февраль, время года: зима"; break; case 3: cout << "Месяц: март, время года: весна"; break; case 4: cout << "Месяц: апрель, время года: весна"; break; case 5: cout << "Месяц: май, время года: весна"; break; case 6: cout << "Месяц: июнь, время года: лето"; break; case 7: cout << "Месяц: июль, время года: лето"; break; case 8: cout << "Месяц: август, время года: лето"; break; case 9: cout << "Месяц: сентябрь, время года: осень"; break; case 10: cout << "Месяц: октябрь, время года: осень"; break; case 11: cout << "Месяц: ноябрь, время года: осень"; break; case 12: cout << "Месяц: декабрь, время года: зима"; break; default: cout << "Номер месяца должен быть в пределах от 1 до 12"; } cout << endl << endl; system("pause"); return 0;
Помогите пожалуйста. Что у меня не так? Допустим нажимаю на "1", он показывает январь и после чего пишет "нажмите любую клавишу для завершения". А как сделать так, чтобы я мог не перезапускать каждый раз программу, а вводить много раз числа за один?
В цикле бахни!
Добавлено (24.05.2014, 22:13) --------------------------------------------- Например, в бесконечном. while(1) { //....... }
Цитата Just1ucky () Помогите пожалуйста. Что у меня не так? Допустим нажимаю на "1", он показывает январь и после чего пишет "нажмите любую клавишу для завершения". А как сделать так, чтобы я мог не перезапускать каждый раз программу, а вводить много раз числа за один?
В цикле бахни!
То есть while(1) надо вставить после цикла?
Сообщение отредактировал Just1ucky - Суббота, 24 Мая 2014, 22:14