- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
#include <iostream>
#include <stdio.h>
#include <fcntl.h>
#include <string>
#define print(data) cout<<data<<endl;
#define ord(data) int(data[0])
#define str(data) char(data)
#define open fopen
#define write(f, data) fputc(data, f)
using namespace std;
string input()
{
string s;
cin>>s;
return s;
};
FILE* f;
int chr;
int main() {
print("Enter:");
f = open("code.txt", "w");
chr = ord(input());
print(chr);
write(f, str(chr));
return 0;
}
Вот такую лабу сдал студент 1го курса в нашем вузе. Сказал преподавателю, что ему очень нравится питон и он старается ему подражать.
http://ideone.com/ctkFP
так и писал бы на питоне, подражатель хренов.
Ещё и сишный stdio зачем-то приплел.
да это же чистый php!
using namespace std;
много маленьких щеночков скулят и топятся в проруби
еще ни у кого руки не отсохли написать std:: где нужно
когда в продакшен коде 100500 неймспейсов, библиотечных и своих, использование "подумай сам откуда я их взял" string или vector или set выглядит колхозом
правила простые - нет неймспейса - значит из текущей (родительской) области видимости. либо нет неймспейса - значит using namespace ты найдешь глазами здесь же, в данном scope из { ... }
например, это - хорошо:
если неймспейс длинный, то лучше использовать
namespace fs = boost::filesystem; или namespace po = boost::program_options;
даже удобоваримо namespace asio = boost::asio;
а то бывают красавцы приходят ко мне на работу и потом в своем говнокоде прямо в глобальном заголовке херачат using namespace std; - потом сидят переделывают, исправляют свои ошибки образования
>myvector += 1, 2, 3, 4 ,5;
Кстати, я правильно понимаю, после такой перегрузки оператор запятая будет работать не верно по программе, поэтому его нужно прятать в скоп? Здесь косячно сделан boost::assign?
скоп нужен чтобы там, где не нужно (а наполнять вектор значениями обычно нужно далеко не везде) конструкция myvector += значение; не компилилась
(опять же, выявление ошибки v += 10 вместо v[0] += 10)
можешь даже сам доопределять оператор += для своих контейнеров, если вдруг, полезная штука
+= , , , ,
Мне кажется, такое "программирование" скорее является просто игрушкой для досуга, чем чем-то реально полезным. То есть задачка интересная, на тему "как сделать так-то", но это на самом деле поебень.
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
заебёт даже самого терпеливого
так что подобный синтаксический сахар от boost::assign - во имя добра
A.Append((1,2,3,4,5));
Ладно, вот в крестовом стиле:
v.push_back(5, {1,2,3,4,5})
(переопределить push_back для массива)
а в гцц 3.4.4 будет работать только буст
вообще С++11 еще не очень скоро вытеснит С++03
смотри
в С++11 можно будет принимать тип std::initializer_list<T> (и то, надо повнимательней почитать что будет с копированием созданных объектов, столько же как сегодня или больше)
Когда юзаешь боост:асигн читать внимательно нужно не меньше
А то,что нельзя анонимные массивы на стеке создавать - косяк. В Дельфи такое давно вот есть, я уж не говорю про Аду.
как видишь, еще в 2005 году умели, где ты был всё это время?
В с++ размер массива можно определить и без шаблонов.
Поссылке пройдите
SARCASM
http://ru.wikipedia.org/wiki/C%2B%2B11
Приглядись к моему посту:
>с++0x это типа с++03
>
>
>SARCASM
В С++11 boost::assign уже не нужен. Это реализовано на уровне языка.
типа
на вкус и цвет все фломастеры разные
на мой взгляд ничего страшного в перегрузке запятой членом класса нет
в С++ есть более изощренные способы выстрелить в ногу того, что будет после тебя сопровождать твой код
Не знаю ни одного случая уместного переопределения запятой.
?
> assing
ОЖОПЕНЕНИЕ
ну дык и ресурс соответствующий
и уполз домой.
- Глупый человек; человек, который своим поведением не схож с другими людьми (разг. руг.)
- Глубоко умственно отсталый человек, страдающий идиотией (мед.)
Происходит от др.-греч. ἰδιώτης «отдельный, частный» (так в древних Афинах называли, в частности, граждан, не принимавших участия в общественной жизни), из ἴδιος «свой, собственный ; особенный», далее из праиндоевр. *swe- «свой; себя». В ряде европейских языков греч. слово заимств. через. лат. idiota.
По завершению этого курса лечения — любить каждый язык за свои особенности и писать на них хороший код.
> Сказал преподавателю, что ему очень нравится питон и он старается ему подражать
http://s55.radikal.ru/i149/1110/d3/28cd9cd78a7e.jpg
>write(f, str(chr));
В питоне так:
f.write(str(chr));
Не, когда к нему подошёл преподаватель для проверки, он хорошо так подрожал.