Авторизация



Счетчики

Доставка цветов по Соликамску dostavka-byketov.ru.

Обмен ссылками

Блог программиста
Главная Форум Последние сообщения
 Форум
Добро пожаловать Гость   [Зарегистрироваться]  Войти
 Тема :Re:Односвязный список-реализация стека.. 13-03-2010 23:25:08 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

temp и current - это всего лишь указатели. Сами по себе они не несут в себе никакой информации. Мы можем делать с ними что угодно, присваивать им какие угодно значения, но до тех пор, пока мы не производим их разыменовывание с последующим изменением того, что мы получили в результате разыменовывания (собственно объект, на который они ссылаются); либо пока мы не присвоили их значения каким-либо другим объектам (над которыми потом тоже должно производиться разыменовывание) - ничего существенного с реальными данными не происходит.
Кроме того, удаление элемента из списка - это не просто применение оператора delete к объекту. Чтобы не нарушить целостность всего списка, мы должны прежде всего заставить элемент, предшествующий удаляемому, сослаться на объект, следующий за удаляемым как на теперь уже свой собственный next.
Т.е. удалить элемент, следующий за current можно так:
Code:
temp = current -> next; current -> next = temp -> next; delete temp;
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 13-03-2010 03:42:59 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Задание: удалить элмент значение которого меньше среднего значения всех элементов.
Я пробывал решать таким образом:
Code:
void cList::Task() { double AvValue; node *current=top; int sum=0; if(bot==0) { cout<<ToRus("Стек пуст.\n"); return; } for(int i=0;i<itsCount;i++) { sum+=current->value; current=current->next; } AvValue=double(sum)/itsCount; bool isDone=false; node *temp; while(!isDone) { isDone=true; current=top; while(current->next) { if(current->value < AvValue) { isDone=false; temp=current; current=current->next; delete temp; } else { current=current->next; } } } }
не подскажите, в чем ошибка?
IP сохранен
 Тема :Re:Проблема с программой в С++ 3.1.. 12-03-2010 12:00:06 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

Возможно, произошло переполнение стека. Попробуйте уменьшить размер области для закрашивания.
IP сохранен
 Тема :Re:Проблема с программой в С++ 3.1.. 12-03-2010 01:50:59 
burunchik
Hello, world!
Онлайн с: 07-03-2010 12:33:28
Сообщения: 4
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

добавил в архив так вроде загрузило!
Прикрепленные файлы
 error.rar [7 KB] :: 123
IP сохранен
Последний раз редактировалось: 12-03-2010 01:50:59 Автор burunchik т.к.
 Тема :Re:Русские символы в консоле... 11-03-2010 22:24:19 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Русские символы в консоле.

Потому что стандартная строка string находится в стандартном пространстве имен std, соответственно для ее использования необходимо использовать один из трех вариантов:
  • Везде писать ее с префиксом std::
    Code:
    std::string s; std::cin >> s;
  • Использовать using-директиву для того, чтобы все содержимое пространства имен стало глобальным (не советую так делать)
    Code:
    using namespace std; string s; cin >> s;
  • Использовать using-объявления
    Code:
    using std::string; string s; std::cin >> s;
IP сохранен
 Тема :Re:Русские символы в консоле... 11-03-2010 15:44:00 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Русские символы в консоле.

у меня один вопрос возник:
почему в коде написано std::string, а не просто string?
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 11-03-2010 01:52:27 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Спасибо.
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 10-03-2010 23:46:55 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Да, это я вам совсем неправильно сказал по поводу обмена адресами. На самом деле нам надо просто заставить current ссылаться как на следующий элемент на second, second - на first, first - на элемент, следовавший ранее за second.
Если условно рисовать фрагмент списка до и после такой замены, то структура его будет выглядеть так (простите за мой ASCII-шный):

До:
Code:
O->O->O->O

После:
Code:
|-----v O O<-O O |-----^

Соответственно, код будет такой (привожу целиком код моего проекта с функцией SortByAddress):
Code:
#include <iostream> #include <stdlib.h> #include <conio.h> struct node { int value; node *next; }; class cList { public: cList(); ~cList(); void push(int value); //Äîáàâëÿåò ýëåìåíò â ñòåê int pop(); //Âîçâðàùàåò âåðõíèé ýëåìåíò, èçâëåêàÿ åãî èç ñòåêà void DeleteAll(); //Èçâëåêàåò âñå ýëåìåíòû void SortByAddress(); private: node *top; //Âåðõíèé ýëåìåíò, ïîñëåäíèì ïîìåùåííûé â ñòåê, ïåðâûì áóäåò èçâëåêàòüñÿ node *bot; //Ñàìûé íèæíèé ýëåìåíò, áóäåò èçâëå÷åí â ïîñëåäíþþ î÷åðåäü int itsCount; //Âîçìîæíî, âû çàõîòèòå ðåàëèçîâàòü ôóíêöèþ GetCount() }; cList::cList(): top(0), bot(0), itsCount(0) { } cList::~cList() { DeleteAll(); } void cList::push(int val) //Ëó÷øå íå äàâàòü ïåðåìåííûì, ïóñòü äàæå èç ðàçíûõ îáëàñòåé âèäèìîñòè, îäèíàêîâûå èìåíà - value â íàøåì ñëó÷àå { node* temp = new node; temp -> value = val; temp -> next = top; //Ìû â ëþáîì ñëó÷àå äîáàâëÿåì íîâûé ýëåìåíò top = temp; //Åñëè ñòåê áûë ïóñò, òî temp -> next == 0, íè÷åãî îñîáåííîãî if (bot == 0) //Åñëè äî âûïîëíåíèÿ ôóíêöèè íå áûëî äàæå íèæíåãî ýëåìåíòà (ñòåê áûë ïóñò) bot = top; } int cList::pop() { if (bot == 0) {/*Îøèáêà! Ñòåê ïóñò!*/ return -1;} else { int val = top -> value; if (top != bot) //Åñëè îñòàëîñü áîëüøå îäíîãî ýëåìåíòà { node* temp = top; top = top -> next; delete temp; } else { delete top; top = bot = 0; } return val; } } void cList::DeleteAll() { while (bot) //Ýêâèâàëåíòíî while (bot != 0), ò.å. äî òåõ ïîð, ïîêà åñòü õîòü îäèí ýëåìåíò pop(); } void cList::SortByAddress() { push(0); //Ïîìåùàåì âïåðåä âðåìåííûé ýëåìåíò node *current, *first, *second; node *temp = new node; bool isSorted = false; while(!isSorted) { isSorted = true; current = top; first = current -> next; //Äëÿ åäèíîîáðàçèÿ ñîáåðåì current, first è second âìåñòå second = first -> next; while(second->next) { if(first->value > second->value) { isSorted=false; first -> next = second -> next; second -> next = first; current -> next = second; } current = current -> next; //Îïÿòü æå ñîáèðàåì âìåñòå äëÿ ëó÷øåé ÷èòàåìîñòè first = current -> next; //next îò íîâîãî current second = first -> next; //Åñëè second == 0, òî ñëåäóþùàÿ èòåðàöèÿ íå âûïîëíèòñÿ } } pop(); //Èçâëåêàåì âðåìåííûé ýëåìåíò } int main() { cList List; for (int i = 0; i < 10; i++) List.push(i); List.SortByAddress(); for (int i = 0; i < 10; i++) std::cout << List.pop() << std::endl; getch(); }
IP сохранен
 Тема :Re:Интересные программы... 10-03-2010 23:25:52 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

На мой взгляд, интересную и нетривиальную задачу составляет написание игр. Для создания даже простейшей из представляющих хоть какой-то интерес игр придется использовать достаточно большое число языковых средств, и при этом работающий продукт принесет удовлетворение не только как жизнеспособное детище, но и как любая игра.
Марио, Танчики, Pacman... Неплохой повод попрактиковаться в использовании ООП, STL, работе с графикой, и еще много в чем.
IP сохранен
 Тема :Re:Проблема с программой в С++ 3.1.. 10-03-2010 23:09:42 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

Странно, файлы должны прикрепляться. Попробуйте еще раз.
IP сохранен
 Тема :Re:Проблема с программой в С++ 3.1.. 08-03-2010 17:12:05 
burunchik
Hello, world!
Онлайн с: 07-03-2010 12:33:28
Сообщения: 4
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

что-то картинку не прикрепляет
IP сохранен
 Тема :Проблема с программой в С++ 3.1.. 08-03-2010 17:10:38 
burunchik
Hello, world!
Онлайн с: 07-03-2010 12:33:28
Сообщения: 4
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

Захотел поработать с графикой в консоле и выполнить для примера программу закрашивание области - сделал все согласно инструкции, и выдает такую ошибку и выбрасывает из программы: Процессор обнаружил недопустимую инструкцию. Точная информация в прикрепленном файле. И что делать?
IP сохранен
 Тема :Интересные программы... 07-03-2010 03:11:21 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Страдаю сейчас от такой проблемы: программировать интересно, но те задания, что дают в университете кажуться нетрудными и "скучными", а хотелось бы написать что-нибудь интересноо и хотя бы в какой-то степени полезное.
Если у кого есть подобные задания или просто возникли идеи - поделитесь пожалуйста.
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 04-03-2010 18:45:16 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Вставил данный код в свою программу. Но он, почему то, не работает.
Такое ощущение, что функця до конца не выполняеться.
Посидел я с листиком, нарисовал там схематично мой стек и вот до чего дошел:
Code:
void cList::SortByAdress() { push(0); node *current, *first, *second; node *temp; bool isSorted = false; while(!isSorted) { isSorted = true; current = top; first = current -> next; second = first -> next; while(second->next) { if(first->value > second->value) { isSorted=false; current->next=second; first->next=second->next; second->next=first; second=first; } current = first; first = current->next; second = first -> next; } } pop(); }

но такой вариант сортирует только первые встречные элементы и все, т.е. если у меня список 5 1 8 3, то местами поменяются только 5 и 1, а номера 8 и 3 остануться нетронутыми, и в итоге получиться 1 5 8 3.

Может есть какие идеи в чем проблема?
IP сохранен
Последний раз редактировалось: 04-03-2010 18:45:16 Автор rudolf т.к.
 Тема :Re:мнение о сайте.. 03-03-2010 20:39:53 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Обсуждение сайта
Тема : мнение о сайте

Спасибо за отзыв!
Пока что я придерживаюсь концепции наполнения сайта своими собственными, специально написанными материалами. Впрочем, возможно, вскоре сделаю раздел статей разных авторов, тогда ваши материалы (особенно нигде ранее не опубликованные) будут весьма кстати!
Также всегда буду рад всяким небольшим интересным программам - идеям, готовым реализациям, описаниям.
А что входит в сферу ваших программистских интересов?
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 03-03-2010 18:43:23 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Учебник пока находится в стадии написания, и пока там и в самом деле излагаются еще только самые основы.
Из книжек по C++ советую почитать Бьёрна Страуструпа "Язык программирования C++". Книгу именуют "Библией C++", что неудивительно - кому как не автору языка знать все его тонкости и аспекты использования.
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 03-03-2010 15:26:03 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Большое спасибо.
Почему-то когда все разжевано, то все кажеться простым, но, когда сам пробывал сделать, то что-то не получилось...
А посветуйте пожалуйста какх-нибудь учебников по Си++. Просмотрев название статей, которые находятся тут, в разделе "Учебник С++", я тут, как мне показалось, ничего новго для себя не нашел, весь этот материал я знаю(ну, по крайней мере я так считаю).
IP сохранен
Последний раз редактировалось: 03-03-2010 15:26:03 Автор rudolf т.к.
 Тема :Re:Односвязный список-реализация стека.. 03-03-2010 13:53:22 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Теперь, собственно, по алгоритму.
Первое - это вы забыли добавить еще один дополнительный элемент, необходимый для того, чтоб первый элемент тоже был отсортирован.
Второе - это вы зачем-то все подряд местами меняете. Давайте я еще раз объясню алгоритм. Начинается все с элемента current, который мы используем только для перехода далее по списку, он следит только затем, чтобы мы всегда находились в нужном месте списка. Во всех прочих операциях по ходу сортировки он не участвует.
Для сортировки же у нас служат два элемента - first и second. Они представляют собой два элемента, следующие за current: first == current -> next, second == first -> next. И такое положение вещей сохраняется на протяжении всей операции сортировки (только время от времени first и second меняются местами), стало быть, в каждой из итераций внутреннего цикла current, first и second обновляются. Причем current каждый раз становится своим next, а из этого нового current каждый же раз получаются first и second. И еще - поскольку теперь у нас за продвижением по списку следит current, которого никак не затрагивает возможный обмен first и second местами, то связка if-else нам больше не нужна, мы в любом случае будем единообразно перемещаться по списку.
В итоге код должен быть где-то такой:
Code:
void cList::SortByAdress() { push(0); //Помещаем вперед временный элемент node *current, *first, *second; node *temp; bool isSorted = false; while(!isSorted) { isSorted = true; current = top; first = current -> next; //Для единообразия соберем current, first и second вместе second = first -> next; while(first->next) { if(first->value > second->value) { isSorted=false; temp=first; first=second; second=temp; } current = current -> next; //Опять же собираем вместе для лучшей читаемости first = current -> next; //next от нового current second = first -> next; //Если second == 0, то следующая итерация не выполнится } pop(); //Извлекаем временный элемент }
IP сохранен
 Тема :Re:Односвязный список-реализация стека.. 03-03-2010 05:20:10 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Улучшение программ
Тема : Односвязный список-реализация стека

Первым делом вновь укажу вам на излишнее выделение памяти для temp.
а. К чему это приводит?
Code:
node* temp = new node; //Здесь нигде temp не упоминается temp = first;

Мы выделили память для объекта типа node и чтобы не потерять к нему доступ, сохранили адрес области памяти в указатель temp. Затем мы, не сохранив нигде этот адрес, затираем его другим адресом. И в результате мы уже никогда не сможем обратиться к этому объекту, он будет только где-то пылиться и занимать место. Это безотносительно к смыслу алгоритма. Просто запомните, что адрес созданного с помощью new объекта должен где-то храниться до тех пор, пока объект по этому адресу не будет уничтожен с помощью delete (в скобках напомню, что у вас опять непарный new. Здесь он не нужен вообще, но привыкайте к тому, что раз есть new, то должен где-то быть и delete. Утечки памяти могут иметь иногда очень неприятные последствия).

б. Каков сакральный смысл?
Когда мы создаем объект с помощью оператора new, это значит, что нам нужен именно сам объект - со всеми его полями и всей выделенной ему памятью. То есть мы будем оперировать с его содержимым - записывать что-то в его поля, что-то из них считывать, что-то с чем-то сравнивать...
Если же нам нужно только жонглировать с адресами, и единственное назначение указателя - принимать значения адресов каких-то уже созданных объектов (с последующим обращением к этим объектам через указатель), то мы просто объявляем указатель и не создаем по этому указателю никакого нового объекта (с помощью оператора new).

Чтобы как-то понагляднее представить вышесказанное в применении к текущей задаче, обрисую сортировку массива (отличие от списка не радикальное) с помощью обмена значениями и обмена указателями на таком примере.

Пусть в некую гостиницу приехали известные физики: Альфер, Бете, Гамов и так далее (вообще-то они приехали на конференцию, но жить им тоже где-то надо, поэтому они одновременно приехали и в гостиницу. Дуализм такой...) Неопытный клерк принимая такое количество столь почетных гостей, растерялся и потому расселил их как попало, каждого в первый попавшийся номер [инициализировал неупорядоченный еще массив]. Через полчаса пришел управляющий, узнал что случилось и начал рвать волосы на голове (у себя и у менеджера) и метать их себе под ноги. Ведь почетные гости должны были расположиться в строгом порядке! Альфер должен был жить в первом номере, Бете - во втором, Гамов - в третьем и так далее [номер номера (упс, тавтология!) - это номер элемента массива, возрастание определяется очередностью фамилий: Альфер-Бете-Гамов-и т.д.] Закончив рвать и метать, управляющий велел менеджеру немедленно расселить гостей как подобает [отсортировать массив]. И тот тотчас же принялся за дело.
Как он мог это сделать? Рассмотрим вариант номер один: обмен значениями.
Первым делом одна из многочисленных кладовок была временно переоборудована в номер [был объявлен новый элемент типа комната - статически простым объявлением или динамически с объявлением указателя на комнату и выделением памяти оператором new], и была пронумерована как temp. После этого менеджер пошел по номерам смотреть, кто же там живет. Зайдя в первый и во второй, он увидел, что в первом номере живет кто-то, кто вообще-то идет по списку позже того, что живет во втором [значение первого элемента больше второго], поэтому менеджер не говоря дурного слова взял под белы рученьки бедного обживающегося в своем номере великого физика, а также весь его багаж, меблировку номера и даже лампочку выкрутил и взял с собой. Потом он перенес все это в бывшую кладовку и расставил все так, как было в первом номере [присвоил временной переменной значение первого элемента массива], после чего пошел во второй номер, подобным же образом перенес еще одного великого физика и все содержимое номера в номер первый [присвоил первому элементу значение второго]. И наконец, перенес несчастного из кладовки-номера и всё-всё-всё в номер под номером два [угадайте что!;)]. Оставив недоумевающих великих физиков в великом недоумении, менеджер спокойно прошел в третий номер, и посмотрел, кто же там живет. К счастью, в этот раз новый житель второго номера шел по списку раньше жителя номер три [второй элемент массива меньше третьего], поэтому на сей раз обошлось без перестановок. Но это было только начало... Таким же образом менеджер прошелся по всем номерам, время от времени меняя ближайших соседей местами. Но этого оказалось недостаточно. Все равно физики жили не в должном порядке [массив еще не был отсортирован]. Поэтому все началось по новой... Великие физики - народ терпеливый, поэтому менеджеру удалось совершать свои не слишком гуманные деяния до тех пор, пока он не разместил всех знаменитых постояльцев должным образом. Управляющий был доволен (на самом деле только потому, что воспитанные великие физики не пожаловались на менеджера). Поэтому он приказал временный номер отдать обратно под кладовку [автоматически уничтожить переменную при выходе ее из области видимости или явно удалить ее с помощью оператора delete, если она была создана при помощи new] и жить дальше.
Это была сортировка обменом значениями. А как же обмен адресами? А вот как!
Менеджер был ленив. Он не хотел носить туда-сюда и великих физиков, и их багаж, и всю мебель, и даже лампочку! Он решил сделать хитрее. Поэтому он взял номерок, такой же, что красовались на дверях гостиничных номеров [объявил временную переменную типа указатель на комнату] и пошел с ней к первому номеру. Заглянув туда, он прошел во второй номер и, увидев, что физик, проживающий под табличкой "1" идет по списку после физика под табличкой "2", переписал для памяти на свой временный номерок номер первой из комнат [присвоил временному указателю значение первого указателя], после чего на номерке первой из комнат написал то же, что было на номерке второй [присвоил первому указателю значение второго указателя], и наконец на номерке второй двери написал то, что было на первой. Теперь физик, проживавший когда-то в первом номере, оказался формально жителем второго, а физик из второго оказался по документам во втором! При этом ни один из них не оторвался от своих дел, и багаж их остался в неприкосновенности! Обрадованный плодами своей хитрости менеджер пошел смотреть, кто же живет в третьем номере... И вот так вот он бегал по всей гостинице, непрестанно меняя таблички на дверях номеров и несчастные великие физики, оказывается, совершили столько переездов из одной комнаты в другую, хотя сами этого не заметили! Правда, в дверь постоянно заглядывал какой-то сумасшедший с чем-то странным в руках, но, право слово, если бы это сумасшедший весь день таскал их самих туда-сюда, это было бы гораздо утомительней! Да и менеджеру было меньше работы. Конечно, в результате в гостинице наступила некоторая сумятица со взаимным расположением номеров, но зато формально все великие физики теперь жили каждый в своем номере!
Вот так и сортировал физиков наш менеджер, то меняя их значениями, то адресами!

З.Ы. Извините за много букв, но не мог не развить тему вглубь и вширь!O:)
IP сохранен
 Тема :Re:Программистский юмор.. 03-03-2010 03:28:04 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Курилка
Тема : Программистский юмор

Продолжаем разговор!

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок. (Дааа... Это - высшее искусство! Программ без ошибок не бывает, но программа - зараза такая! - должна работать!!)

***

Программиста спрашивают:
- Как вам удалось так быстро выучить английский язык?!!
- Та, ерунда какая. Они там почти все слова из С++ взяли.
(Есть такое дело! Та часть английского языка, которая не реализована в "голом" языке, большею частью реализована в стандартной библиотеке, а та часть, которая не реализована ни там, ни там, может быть реализована с помощью большого количества библиотек от сторонних разработчиков!)

***

Сидит программист в столовой, обедает, суп ест. В очках такой, задумчивый, программу думает. Народу никого, все уже поели, ушли. Подходит к нему официантка и заигрывает:
- Если Вы хотите хорошо провести время, то меня зовут Маша!
Программист медленно возвращается на землю и смотрит на официантку отрешенным взглядом и на автопилоте спрашивает:
- А если не хочу, то как Вас зовут?!
- А если не хочешь, то меня никак не зовут!
- Елки... Точно!... Переменную обнулить надо!!!

***

В этом сезоне среди программистов популярны красные рубашки, отлично подходяшие под цвет глаз...
(Увы...)

***

Меня в аптеке убили. Я прихожу покупать шприцы. Продавщица на меня смотрит и задает вопрос. И нет бы она спросила:
- "Наркоман?"
Нет, видит круги под глазами и заботливо спрашивает:
- "Программист?"

***

Сила ума...
Принимали в программерскую контору программера...
В анкете в графе о наличии у него детей написал 6/9.
Народ долго репу чесал... И что только не придумывали: и что у него 6 мальчиков и 9 девочек, и что у него 6 жен и 9 детей, и что у него дети от 6 до 9 лет.... Потом у него спросили, что сия запись за собой таит. Ответ был просто потрясающий:
- У меня жена на ШЕСТОМ МЕСЯЦЕ....
Воистину, программист - это не профессия, а образ мысли....
(Хотя в "шесть девятых ребенка" есть и что-то математическое...;))

***

Если бы при приеме на работу к водителям относились так же, как к программистам:
Вакансия: водитель.
Требования: профессиональные навыки управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулёра, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими / средними танками, находящимися на вооружении стран СНГ и НАТО. Навыки раллийского и экстремального вождения - обязательны, опыт управления болидами F1 - приветствуется. Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем (GPS) и автомобильных аудиосистем ведущих производителей - обязательны. Опыт проведения кузовных и окрасочных работ приветствуется. Претенденты должны иметь сертификаты Mercedes, BMV, Ceneral Motors, а также справки об участии в крупных международных ралли не более чем двухлетней давности...

***

programming.jpg

***

no-problem.jpg
IP сохранен
Страница #  « ПерваяПредыдущая1234567СледующаяПоследняя »


Powered by ccBoard